Le flux typique d'un ordinateur central...
Input Disk/Tape/User (runtime) --> Job Control Language (JCL) --> Output Disk/Tape/Screen/Printer
| ^
v |
`--> COBOL Program --------'
Flux typique de 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 |
: :
Les shells sont la colle de Linux
Les shells Linux comme sh/ksh/ bash /... fournissent des fonctions de désignation d'entrée/sortie/contrôle de flux, un peu comme le vieux langage de contrôle des travaux de l'ordinateur central... mais sous stéroïdes ! Ils sont Langages complets de Turing en tant que tels, tout en étant optimisés pour transmettre efficacement les données et le contrôle vers et depuis d'autres processus d'exécution écrits dans n'importe quel langage pris en charge par le système d'exploitation.
La plupart des applications Linux, quelle que soit la langue dans laquelle la majeure partie du programme est écrite, dépendent des scripts shell et des éléments suivants Bash est devenu le plus courant. En cliquant sur une icône sur le bureau, on exécute généralement un court Bash script. Ce script, directement ou indirectement, sait où se trouvent tous les fichiers nécessaires et définit les variables et les paramètres de la ligne de commande, pour finalement appeler le programme. C'est l'utilisation la plus simple d'un shell.
Cependant, Linux tel que nous le connaissons ne serait guère Linux sans les milliers de scripts shell qui démarrent le système, répondent aux événements, contrôlent les priorités d'exécution et compilent, configurent et exécutent les programmes. Beaucoup d'entre eux sont assez grands et complexes.
Les shells fournissent une infrastructure qui nous permet d'utiliser des composants préconstruits qui sont liés entre eux au moment de l'exécution plutôt qu'au moment de la compilation. Ces composants sont des programmes autonomes à part entière qui peuvent être utilisés seuls ou dans d'autres combinaisons sans recompilation. La syntaxe pour les appeler est indiscernable de celle d'un programme de type Bash et il existe en fait de nombreuses commandes intégrées pour lesquelles il existe également un exécutable autonome sur le système, avec souvent des options supplémentaires.
Il n'y a pas de différence linguistique entre Python y Bash en termes de performances. Cela dépend entièrement de la façon dont chacun est codé et des outils externes appelés.
Tout des outils bien connus comme awk, sed, grep, bc, dc, tr, etc. laisseront sur le carreau la réalisation de ces opérations dans l'une ou l'autre langue. Bash est préférable pour tout ce qui n'est pas une interface utilisateur graphique, car il est plus facile et plus efficace d'appeler et de renvoyer des données à partir d'un outil comme ceux qui utilisent la fonction Bash que Python .
Performance
Cela dépend des programmes que l Bash les appels au shell script et leur adéquation à la sous-tâche qui leur est donnée si le débit global et/ou la réactivité seront meilleurs ou pires que l'équivalent. Python . Pour compliquer les choses Python comme la plupart des langages, peut également appeler d'autres exécutables, bien que cette méthode soit plus lourde et donc moins utilisée.
Interface utilisateur
Un domaine dans lequel Python est le grand gagnant en matière d'interface utilisateur. Cela en fait un excellent langage pour la création d'applications locales ou client-serveur, car il prend en charge de manière native les graphiques GTK et est bien plus intuitif que le langage Bash .
Bash ne comprend que le texte. Il faut appeler d'autres outils pour obtenir une interface graphique et leur renvoyer des données. A Python script est une option. Des options plus rapides mais moins flexibles sont les binaires comme YAD, Zenity et GTKDialog .
Alors que les coquillages comme Bash fonctionnent bien avec des interfaces graphiques comme Yad , GtkDialog (interface intégrée de type XML aux fonctions de GTK+) , dialogue y xmessage , Python est beaucoup plus performant et donc meilleur pour les fenêtres à interface graphique complexe.
Résumé
Construire avec des scripts shell, c'est comme assembler un ordinateur avec des composants du commerce, comme on le fait pour les PC de bureau.
Construire avec Python , C++ ou la plupart des autres langages, c'est plus comme construire un ordinateur en soudant les puces (bibliothèques) et autres pièces électroniques ensemble, comme le font les smartphones.
Les meilleurs résultats sont généralement obtenus en utilisant une combinaison de langues où chacun peut faire ce qu'il fait de mieux. Un développeur appelle cela " programmation polyglotte ".
2 votes
Python est drastiquement plus rapide sur le traitement de texte, qui est une opération courante. Si j'effectue la même recherche 10000 fois sur chaque langue, sur Bash il faut 1m24s, sur Python 636ms. Cela s'explique par le fait que Bash utilise un sous-processus pour chaque opération du traitement de texte, ce qui est lent à créer.