Типовий мейнфрейм ...
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 |
: :
Оболонки - це клей Linux
Оболонки Linux, як sh / ksh / bash / ..., забезпечують засоби введення / виведення / управління потоком так само, як і стара мова управління роботою мейнфрейму ... але на стероїдах! Це цілі мови Тьюрінга власними в той час як оптимізовані для ефективної передачі даних та керування іншими та виконуючими процесами, написаними будь-якою мовою, яку підтримує O / S.
Більшість програм Linux, незалежно від того, якою мовою написана основна частина програми, залежать від сценаріїв оболонки, і Bash став найпоширенішим. Натискання значка на робочому столі зазвичай запускає короткий сценарій Bash . Цей скрипт, прямо чи опосередковано, знає, де знаходяться всі необхідні файли, і встановлює змінні та параметри командного рядка, нарешті, викликаючи програму. Це найпростіше використання оболонки.
Linux, яким ми його знаємо, навряд чи був би Linux без тисяч сценаріїв оболонки, які запускають систему, реагують на події, контролюють пріоритети виконання та компілюють, налаштовують та запускають програми. Багато з них досить великі і складні.
Оболонки забезпечують інфраструктуру, яка дозволяє нам використовувати заздалегідь побудовані компоненти, які пов'язані між собою під час виконання, а не час компіляції. Ці компоненти є окремими програмами самостійно, які можна використовувати окремо або в інших комбінаціях без перекомпіляції. Синтаксис їх виклику не відрізняється від синтаксису вбудованої команди Bash , і насправді існує безліч вбудованих команд, для яких також існує автономний виконуваний файл у системі, часто з додатковими опціями.
Між Python та Bash не існує різниці у продуктивності. Це повністю залежить від того, як кодується кожен і які зовнішні інструменти називаються.
Будь-який з добре відомих інструментів, таких як awk, sed, grep, bc, dc, tr тощо, залишить виконання цих операцій будь-якою мовою в пилу. Тоді Bash є кращим для будь-чого без графічного інтерфейсу користувача, оскільки простіше та ефективніше викликати та передавати дані назад із такого інструменту, як Bash, ніж Python .
Продуктивність
Це залежить від того, які програми викликає сценарій оболонки Bash та їх придатність для підзадачі, чи буде загальна пропускна здатність та / або швидкість реагування кращою чи гіршою, ніж еквівалентний Python . Щоб ускладнити справи, Python , як і більшість мов, може також викликати інші виконувані файли, хоча він більш громіздкий і, отже, не так часто використовується.
Інтерфейс користувача
Однією з областей, де Python є явним переможцем, є користувальницький інтерфейс. Це робить його чудовою мовою для створення локальних додатків або програм клієнт-сервер, оскільки він спочатку підтримує графіку GTK і є набагато інтуїтивнішим, ніж Bash .
Баш розуміє лише текст. Інші інструменти повинні бути викликані для графічного інтерфейсу та дані, передані з них назад. Python скрипт є одним з варіантів. Швидші, але менш гнучкі варіанти - це бінарні файли, такі як YAD, Zenity та GTKDialog .
Хоча оболонки типу Bash добре працюють з графічними інтерфейсами, такими як Yad , GtkDialog (вбудований XML-подібний інтерфейс до функцій GTK +) , діалогове вікно та xmessage , Python набагато ефективніший і набагато кращий для складних вікон графічного інтерфейсу.
Підсумок
Побудова сценаріїв оболонки - це все одно, що збирати комп’ютер із готовими компонентами, як це настільні ПК.
Будівництво за допомогою Python , C ++ або більшості інших мов більше нагадує побудову комп’ютера шляхом пайки мікросхем (бібліотек) та інших електронних деталей, як це робить смартфон.
Найкращі результати зазвичай отримуються за допомогою комбінації мов, де кожна з них може робити те, що найкраще робить. Один розробник називає це « програмуванням поліглотів ».