Типичный поток основного блока ...
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 .
Performance
Это зависит от того, какие программы вызывают скрипты оболочки Bash и их пригодность для заданной подзадачи, будет ли общая пропускная способность и / или скорость отклика лучше или хуже, чем у эквивалентного Python . Чтобы усложнить ситуацию, Python , как и большинство языков, может также вызывать другие исполняемые файлы, хотя это более громоздко и поэтому используется не так часто.
Пользовательский интерфейс
Одна область, где Python - явный победитель, - это пользовательский интерфейс. Это делает его отличным языком для создания локальных или клиент-серверных приложений, поскольку он изначально поддерживает графику GTK и гораздо более интуитивен, чем Bash .
Bash понимает только текст. Другие инструменты должны быть вызваны для графического интерфейса и данных, передаваемых от них. Скрипт Python является одним из вариантов. Более быстрыми, но менее гибкими вариантами являются бинарные файлы, такие как YAD, Zenity и GTKDialog .
Хотя оболочки типа Bash хорошо работают с графическими интерфейсами, такими как Яд , GtkDialog (встроенный XML-подобный интерфейс для функций GTK +) , диалоговое окно и xmessage , Python обычно проще и более способны.
Резюме
Сборка с использованием сценариев оболочки похожа на сборку компьютера с готовыми компонентами, как настольные ПК.
Сборка с Python , C ++ или почти любым другим языком больше похожа на сборку компьютера путем пайки микросхем (библиотек) и других электронных компонентов вместе, как смартфоны.