Flusso tipico del mainframe ...
Input Disk/Tape/User (runtime) --> Job Control Language (JCL) --> Output Disk/Tape/Screen/Printer
| ^
v |
`--> COBOL Program --------'
Flusso tipico di 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 |
: :
Le conchiglie sono il collante di Linux
Le shell Linux come sh / ksh / bash / ... forniscono servizi di designazione di input / output / controllo del flusso molto simili al vecchio linguaggio di controllo del lavoro per mainframe ... ma con gli steroidi! Sono linguaggi completi di Turing a tutti gli effetti, ottimizzati per passare in modo efficiente i dati e il controllo da e verso altri processi di esecuzione scritti in qualsiasi lingua supportata dal sistema operativo.
La maggior parte delle applicazioni Linux, indipendentemente dalla lingua in cui è scritto il grosso del programma, dipendono dagli script della shell e Bash è diventato il più comune. Facendo clic su un'icona sul desktop di solito viene eseguito un breve script Bash . Quello script, direttamente o indirettamente, sa dove si trovano tutti i file necessari e imposta variabili e parametri della riga di comando, chiamando infine il programma. Questo è l'uso più semplice di una shell.
Linux come lo conosciamo, tuttavia, difficilmente sarebbe Linux senza le migliaia di script di shell che avviano il sistema, rispondono agli eventi, controllano le priorità di esecuzione e compilano, configurano ed eseguono programmi. Molti di questi sono piuttosto grandi e complessi.
Le shell forniscono un'infrastruttura che ci consente di utilizzare componenti precostruiti collegati tra loro in fase di esecuzione anziché in fase di compilazione. Quei componenti sono programmi indipendenti a sé stanti che possono essere usati da soli o in altre combinazioni senza ricompilare. La sintassi per chiamarli è indistinguibile da quella di un comando integrato di Bash , e ci sono infatti numerosi comandi incorporati per i quali esiste anche un eseguibile autonomo sul sistema, spesso con opzioni aggiuntive.
Non vi è alcuna differenza a livello di linguaggio tra Python e Bash in termini di prestazioni. Dipende interamente da come ciascuno di essi è codificato e quali strumenti esterni vengono chiamati.
Uno qualsiasi degli strumenti ben noti come awk, sed, grep, bc, dc, tr, ecc. Lascerà queste operazioni nella polvere in entrambe le lingue. Bash è quindi preferito per qualsiasi cosa senza un'interfaccia utente grafica poiché è più facile ed efficiente chiamare e passare i dati da uno strumento come quelli con Bash che con Python .
Prestazione
Dipende da quali programmi lo script della shell Bash chiama e dalla loro idoneità per la sottoattività loro assegnata se il throughput e / o la reattività complessivi saranno migliori o peggiori dell'equivalente Python . Per complicare le cose Python , come la maggior parte dei linguaggi, può anche chiamare altri eseguibili, sebbene sia più ingombrante e quindi non così spesso utilizzato.
Interfaccia utente
Un'area in cui Python è il chiaro vincitore è l'interfaccia utente. Ciò lo rende un linguaggio eccellente per la creazione di applicazioni locali o client-server poiché supporta nativamente la grafica GTK ed è molto più intuitivo di Bash .
Bash capisce solo il testo. Altri strumenti devono essere chiamati per una GUI e i dati sono passati indietro da loro. Uno script Python è un'opzione. Opzioni più veloci ma meno flessibili sono i binari come YAD, Zenity e GTKDialog .
Mentre shell come Bash funzionano bene con GUI come Yad , GtkDialog (interfaccia simile a XML incorporata per le funzioni GTK +) , dialog e xmessage , Python è molto più capace e quindi migliore per finestre GUI complesse.
Sommario
Costruire con gli script della shell è come assemblare un computer con componenti standard come sono i PC desktop.
Costruire con Python , C ++ o quasi tutti gli altri linguaggi è più come costruire un computer saldando i chip (librerie) e altre parti elettroniche insieme come sono gli smartphone.
I migliori risultati si ottengono solitamente utilizzando una combinazione di lingue in cui ciascuna può fare ciò che sa fare meglio. Uno sviluppatore chiama questa " programmazione poliglotta ".