Typischer Mainframe-Fluss ...
Input Disk/Tape/User (runtime) --> Job Control Language (JCL) --> Output Disk/Tape/Screen/Printer
| ^
v |
`--> COBOL Program --------'
Typischer Linux-Flow ...
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 |
: :
Shells sind der Klebstoff von Linux
Linux-Shells wie sh / ksh / bash / ... bieten Eingabe- / Ausgabe- / Flusssteuerungs-Bezeichnungsfunktionen, ähnlich wie die alte Mainframe-Jobsteuerungssprache ... aber auf Steroiden! Sie sind Turing komplette Sprachen erstellen eigenständige und sind optimiert, um Daten und Kontrolle effizient an und von anderen ausführenden Prozessen weiterzuleiten, die in einer beliebigen Sprache geschrieben sind, die das Betriebssystem unterstützt.
Die meisten Linux-Anwendungen, unabhängig davon, in welcher Sprache der Großteil des Programms geschrieben ist, hängen von Shell-Skripten ab, und Bash ist die am häufigsten verwendete. Durch Klicken auf ein Symbol auf dem Desktop wird normalerweise ein kurzes Bash- Skript ausgeführt. Dieses Skript weiß entweder direkt oder indirekt, wo sich alle benötigten Dateien befinden, legt Variablen und Befehlszeilenparameter fest und ruft schließlich das Programm auf. Das ist die einfachste Verwendung einer Shell.
Linux, wie wir es kennen, wäre jedoch kaum Linux ohne die Tausenden von Shell-Skripten, die das System starten, auf Ereignisse reagieren, Ausführungsprioritäten steuern und Programme kompilieren, konfigurieren und ausführen. Viele davon sind ziemlich groß und komplex.
Shells bieten eine Infrastruktur, mit der wir vorgefertigte Komponenten verwenden können, die zur Laufzeit miteinander verbunden sind, anstatt zur Kompilierungszeit. Diese Komponenten sind eigenständige Programme, die allein oder in anderen Kombinationen ohne Neukompilierung verwendet werden können. Die Syntax zum Aufrufen ist nicht von der eines eingebauten Bash- Befehls zu unterscheiden, und es gibt tatsächlich zahlreiche eingebaute Befehle, für die es auch eine eigenständige ausführbare Datei auf dem System gibt, die häufig zusätzliche Optionen bietet.
Es gibt keinen sprachweiten Unterschied zwischen Python und Bash in der Leistung. Es hängt ganz davon ab, wie jedes codiert ist und welche externen Tools aufgerufen werden.
Jedes der bekannten Werkzeuge wie awk, sed, grep, bc, dc, tr usw. lässt diese Operationen in beiden Sprachen im Staub liegen. Bash wird dann für alles ohne grafische Benutzeroberfläche bevorzugt, da es einfacher und effizienter ist, Daten von einem Tool wie dem mit Bash als Python aufzurufen und zurückzugeben .
Performance
Es hängt davon ab, welche Programme das Bash- Shell-Skript aufruft und welche Eignung sie für die Unteraufgabe haben, ob der Gesamtdurchsatz und / oder die Reaktionsfähigkeit besser oder schlechter als das entsprechende Python sind . Um die Sache zu verkomplizieren, kann Python , wie die meisten Sprachen, auch andere ausführbare Dateien aufrufen, obwohl es umständlicher ist und daher nicht so häufig verwendet wird.
Benutzeroberfläche
Ein Bereich, in dem Python der klare Gewinner ist, ist die Benutzeroberfläche. Dies macht es zu einer hervorragenden Sprache für die Erstellung lokaler oder Client-Server-Anwendungen, da es GTK-Grafiken nativ unterstützt und weitaus intuitiver als Bash ist .
Bash versteht nur Text. Andere Tools müssen für eine GUI aufgerufen und Daten von ihnen zurückgegeben werden. Ein Python- Skript ist eine Option. Schnellere, aber weniger flexible Optionen sind die Binärdateien wie YAD, Zenity und GTKDialog .
Während Shells wie Bash gut mit GUIs wie Yad , GtkDialog (eingebettete XML-ähnliche Schnittstelle zu GTK + -Funktionen) , Dialog und xmessage funktionieren , ist Python viel leistungsfähiger und daher besser für komplexe GUI-Fenster.
Zusammenfassung
Das Erstellen mit Shell-Skripten ähnelt dem Zusammenstellen eines Computers mit Standardkomponenten wie Desktop-PCs.
Das Bauen mit Python , C ++ oder den meisten anderen Sprachen ähnelt eher dem Bauen eines Computers durch Löten der Chips (Bibliotheken) und anderer elektronischer Teile wie Smartphones.
Die besten Ergebnisse werden normalerweise durch die Verwendung einer Kombination von Sprachen erzielt, in denen jeder das tun kann, was er am besten kann. Ein Entwickler nennt dies " polyglotte Programmierung ".