Dòng máy tính lớn điển hình ...
Input Disk/Tape/User (runtime) --> Job Control Language (JCL) --> Output Disk/Tape/Screen/Printer
| ^
v |
`--> COBOL Program --------'
Luồng Linux điển hình ...
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 |
: :
Vỏ là chất kết dính của Linux
Các shell Linux như sh / ksh / bash / ... cung cấp các phương tiện chỉ định đầu vào / đầu ra / điều khiển luồng giống như Ngôn ngữ điều khiển công việc của máy tính lớn cũ ... nhưng trên steroid! Chúng là ngôn ngữ hoàn chỉnh của Turing theo đúng nghĩa của chúng trong khi được tối ưu hóa để truyền dữ liệu và kiểm soát một cách hiệu quả đến và từ các quy trình thực thi khác được viết bằng bất kỳ ngôn ngữ nào mà O / S hỗ trợ.
Hầu hết các ứng dụng Linux, bất kể phần lớn chương trình được viết bằng ngôn ngữ nào, đều phụ thuộc vào các tập lệnh shell và Bash đã trở nên phổ biến nhất. Nhấp vào một biểu tượng trên màn hình nền thường chạy một tập lệnh Bash ngắn . Tập lệnh đó, trực tiếp hoặc gián tiếp, biết tất cả các tệp cần thiết ở đâu và đặt các biến và tham số dòng lệnh, cuối cùng gọi chương trình. Đó là cách sử dụng đơn giản nhất của shell.
Tuy nhiên, Linux như chúng ta biết sẽ khó có thể là Linux nếu không có hàng nghìn tập lệnh shell khởi động hệ thống, phản hồi các sự kiện, kiểm soát các ưu tiên thực thi và biên dịch, cấu hình và chạy các chương trình. Nhiều trong số này khá lớn và phức tạp.
Vỏ cung cấp một cơ sở hạ tầng cho phép chúng tôi sử dụng các thành phần được xây dựng trước được liên kết với nhau tại thời gian chạy thay vì thời gian biên dịch. Các thành phần đó là các chương trình độc lập theo đúng nghĩa của chúng, có thể được sử dụng một mình hoặc kết hợp với nhau mà không cần biên dịch lại. Không thể phân biệt cú pháp để gọi chúng với cú pháp của lệnh nội trang Bash , và trên thực tế có rất nhiều lệnh nội trang mà cũng có một lệnh thực thi độc lập trên hệ thống, thường có các tùy chọn bổ sung.
Không có sự khác biệt về ngôn ngữ giữa Python và Bash về hiệu suất. Nó hoàn toàn phụ thuộc vào cách mỗi mã được mã hóa và công cụ bên ngoài nào được gọi.
Bất kỳ công cụ nổi tiếng nào như awk, sed, grep, bc, dc, tr, v.v. sẽ bỏ đi thực hiện các thao tác đó bằng một trong hai ngôn ngữ. Bash sau đó được ưu tiên cho bất kỳ thứ gì không có giao diện người dùng đồ họa vì việc gọi và chuyển dữ liệu trở lại từ một công cụ như những công cụ có Bash dễ dàng và hiệu quả hơn Python .
Hiệu suất
Nó phụ thuộc vào chương trình mà Bash shell script gọi và tính phù hợp của chúng với nhiệm vụ con mà chúng được cung cấp cho dù thông lượng tổng thể và / hoặc khả năng đáp ứng sẽ tốt hơn hay kém hơn Python tương đương . Để làm phức tạp các vấn đề , Python , giống như hầu hết các ngôn ngữ, cũng có thể gọi các tệp thực thi khác, mặc dù nó cồng kềnh hơn và do đó không được sử dụng thường xuyên.
Giao diện người dùng
Một lĩnh vực mà Python là người chiến thắng rõ ràng là giao diện người dùng. Điều đó làm cho nó trở thành một ngôn ngữ tuyệt vời để xây dựng các ứng dụng cục bộ hoặc máy chủ vì nó hỗ trợ đồ họa GTK và trực quan hơn nhiều so với Bash .
Bash chỉ hiểu văn bản. Các công cụ khác phải được gọi cho GUI và dữ liệu được truyền lại từ chúng. Một tập lệnh Python là một lựa chọn. Các tùy chọn nhanh hơn nhưng kém linh hoạt hơn là các mã nhị phân như YAD, Zenity và GTKDialog .
Trong khi các shell như Bash hoạt động tốt với các GUI như Yad , GtkDialog (giao diện giống như XML được nhúng vào các hàm GTK +) , hộp thoại và xmessage , Python có nhiều khả năng hơn và tốt hơn cho các cửa sổ GUI phức tạp.
Tóm lược
Xây dựng với các tập lệnh shell cũng giống như lắp ráp một máy tính với các thành phần sẵn có theo cách của PC để bàn.
Xây dựng bằng Python , C ++ hoặc hầu hết bất kỳ ngôn ngữ nào khác giống như xây dựng một máy tính bằng cách hàn các chip (thư viện) và các bộ phận điện tử khác với nhau theo cách của điện thoại thông minh.
Kết quả tốt nhất thường thu được bằng cách sử dụng kết hợp các ngôn ngữ mà mỗi ngôn ngữ có thể làm những gì họ làm tốt nhất. Một nhà phát triển gọi đây là " lập trình đa ô ".