กระแสเมนเฟรมทั่วไป ...
Input Disk/Tape/User (runtime) --> Job Control Language (JCL) --> Output Disk/Tape/Screen/Printer
| ^
v |
`--> COBOL Program --------'
ขั้นตอนทั่วไปของ Linux ...
Input Disk/SSD/User (runtime) --> sh/bash/ksh/zsh/... ----------> Output Disk/SSD/Screen/Printer
| ^
v |
`--> Python script --------'
| ^
v |
`--> awk script -----------'
| ^
v |
`--> sed script -----------'
| ^
v |
`--> C/C++ program --------'
| ^
v |
`--- Java program ---------'
| ^
v |
: :
เปลือกหอยเป็นกาวของลินุกซ์
ลินุกซ์เชลล์เช่น sh / ksh / bash / ... ให้สิ่งอำนวยความสะดวกในการกำหนดอินพุต / เอาต์พุต / การควบคุมการไหลเหมือนกับภาษาควบคุมงานเมนเฟรมแบบเก่า ... แต่เป็นสเตียรอยด์! พวกเขาเป็นภาษาทัวริงที่สมบูรณ์ตามสิทธิ์ของตนเองในขณะที่ได้รับการปรับให้เหมาะสมเพื่อส่งผ่านข้อมูลและควบคุมไปยังและจากกระบวนการดำเนินการอื่น ๆ ที่เขียนด้วยภาษาใด ๆ ที่ O / S รองรับ
แอปพลิเคชัน Linux ส่วนใหญ่ไม่ว่าโปรแกรมส่วนใหญ่จะเขียนด้วยภาษาใดขึ้นอยู่กับเชลล์สคริปต์และBashกลายเป็นสิ่งที่พบได้บ่อยที่สุด การคลิกไอคอนบนเดสก์ท็อปมักจะเรียกใช้สคริปต์Bashสั้น ๆ สคริปต์นั้นไม่ว่าทางตรงหรือทางอ้อมจะรู้ว่าไฟล์ทั้งหมดที่ต้องการอยู่ที่ใดและตั้งค่าตัวแปรและพารามิเตอร์บรรทัดคำสั่งในที่สุดก็เรียกโปรแกรม นั่นเป็นการใช้งานที่ง่ายที่สุดของเชลล์
อย่างไรก็ตาม Linux ที่เรารู้ว่าแทบจะไม่ใช่ Linux หากไม่มีเชลล์สคริปต์นับพันที่เริ่มต้นระบบตอบสนองต่อเหตุการณ์ควบคุมลำดับความสำคัญของการดำเนินการและคอมไพล์กำหนดค่าและรันโปรแกรม สิ่งเหล่านี้ค่อนข้างใหญ่และซับซ้อน
Shells เป็นโครงสร้างพื้นฐานที่ช่วยให้เราใช้ส่วนประกอบที่สร้างไว้ล่วงหน้าซึ่งเชื่อมโยงเข้าด้วยกันในขณะทำงานแทนที่จะรวบรวม ส่วนประกอบเหล่านี้เป็นโปรแกรมอิสระในสิทธิ์ของตนเองซึ่งสามารถใช้คนเดียวหรือในชุดอื่น ๆ ได้โดยไม่ต้องคอมไพล์ใหม่ ไวยากรณ์สำหรับการเรียกใช้นั้นแยกไม่ออกจากคำสั่งBash builtin และในความเป็นจริงมีคำสั่ง builtin จำนวนมากซึ่งมีปฏิบัติการแบบสแตนด์อโลนบนระบบซึ่งมักมีตัวเลือกเพิ่มเติม
ไม่มีความแตกต่างทั้งภาษาระหว่างPythonและBashในประสิทธิภาพ ทั้งหมดขึ้นอยู่กับวิธีการเข้ารหัสและเครื่องมือภายนอกที่เรียกว่า
ใด ๆในเครื่องมือที่รู้จักกันดีเช่นawk, sed, grep, BC, DC, TR,ฯลฯ จะออกจากการดำเนินงานทำผู้ที่อยู่ในภาษาใดในฝุ่น ทุบตีแล้วเป็นที่ต้องการสำหรับอะไรโดยอินเตอร์เฟซผู้ใช้แบบกราฟิกเพราะมันเป็นเรื่องง่ายและมีประสิทธิภาพมากขึ้นในการโทรและส่งข้อมูลกลับมาจากเครื่องมือเช่นผู้ที่มีทุบตีกว่างูหลาม
ประสิทธิภาพ
ขึ้นอยู่กับว่าโปรแกรมใดที่Bashเชลล์สคริปต์เรียกใช้และความเหมาะสมสำหรับงานย่อยที่ได้รับว่าทรูพุตและ / หรือการตอบสนองโดยรวมจะดีกว่าหรือแย่กว่าPython ที่เทียบเท่ากัน เพื่อทำให้เรื่องซับซ้อนPythonเช่นเดียวกับภาษาส่วนใหญ่ยังสามารถเรียกใช้ไฟล์ปฏิบัติการอื่นได้แม้ว่าจะยุ่งยากกว่าและไม่ได้ใช้บ่อยเท่าที่ควร
หน้าจอผู้ใช้
พื้นที่หนึ่งที่Pythonเป็นผู้ชนะที่ชัดเจนคือส่วนต่อประสานผู้ใช้ ที่ทำให้มันเป็นภาษาที่ดีเยี่ยมสำหรับการสร้างโปรแกรมท้องถิ่นหรือไคลเอนต์เซิร์ฟเวอร์เป็นมัน natively สนับสนุนกราฟิก GTK และอยู่ไกลที่ใช้งานง่ายกว่าทุบตี
Bashเข้าใจเฉพาะข้อความ ต้องเรียกเครื่องมืออื่น ๆ สำหรับ GUI และข้อมูลที่ส่งกลับจากเครื่องมือเหล่านี้ หลามสคริปต์เป็นทางเลือกหนึ่ง ตัวเลือกได้เร็วขึ้น แต่น้อยมีความยืดหยุ่นเป็นไบนารีเช่นYad, Zenity และ GTKDialog
ในขณะที่เปลือกหอยเช่นทุบตีทำงานได้ดีกับ GUIs เช่นYad , GtkDialog (ฝัง XML อินเตอร์เฟซเหมือนจะดี + ฟังก์ชั่น) , โต้ตอบและxmessage , งูใหญ่ที่มีความสามารถมากขึ้นและดีขึ้นสำหรับ Windows GUI ที่ซับซ้อน
สรุป
การสร้างด้วยเชลล์สคริปต์ก็เหมือนกับการประกอบคอมพิวเตอร์ที่มีส่วนประกอบนอกชั้นวางในแบบเดสก์ท็อปพีซี
การสร้างด้วยPython , C ++หรือภาษาอื่น ๆ ส่วนใหญ่ก็เหมือนกับการสร้างคอมพิวเตอร์โดยการบัดกรีชิป (ไลบรารี) และชิ้นส่วนอิเล็กทรอนิกส์อื่น ๆ เข้าด้วยกันในแบบที่สมาร์ทโฟนเป็น
ผลลัพธ์ที่ดีที่สุดมักจะได้มาจากการใช้ภาษาร่วมกันซึ่งแต่ละภาษาสามารถทำสิ่งที่ทำได้ดีที่สุด นักพัฒนารายหนึ่งเรียกสิ่งนี้ว่า " การเขียนโปรแกรมหลายภาษา "