|
Dal semplice esempio visto dovrebbe
essere chiaro come la programmazione di shell sia nei fatti molto
potente. In effetti si fa davvero molta strada solo con la shell, ma
come tutte le cose che funzionano, quando si cerca di fare sempre di
più si raaggiungono i limiti.
Il primo limite della programmazione di
shell è la velocità. Si nota come occorra mandare in
esecuzione numerosi programmi in parallelo, e quindi si ha una certa
perdita di efficienza dovuta al fatto che più programmi stanno
comunicano tra di loro. Non è infrequente mettere in pipeline
anche cinque o sei comandi. Inoltre, programmando in questo modo,
occorre spesso essere rindondanti o perdere tempo solo per manipolare
dati intermedi. Il risultato è che per qualsiasi applicazione
anche un po' complessa gli script di shell finiscono spesso per
essere molto lenti.
Un altro aspetto è la
disomogeneità dei vari comandi. Per quanto legati da
convenzioni, i programmi Unix hanno origine diversa e spesso si
comportano in maniera poco coerente. Per usare Unix a fondo occorre
conoscere letteralmente centinaia di comando con switch diversi e
poco in comune se non che producono output in formato testo. Infine
c'è un problema di portabilità: uno script di shell
spesso funziona solo su una particolare versione di un particolare
sistema operativo, perchè fa riferimento a comandi e switch
che possono non esserci in un'altra versione.
Il Perl è nato quando Larry Wall
doveva risolvere un complesso problema di analisi di dati in formato
testo (elaborazione di archivi di News). Questo problema fu
affrontato con la shell, ma i dati erano troppo grossi e il primo
tentativo non diede il risultato sperato. L'alternativa era quella di
scrivere il programma in C. Larry, invece di scrivere una soluzione
specifica per il suo problema, tentò di riciclare il lavoro
per problemi futuri, creando un ibrido tra i principali "attori"
della programmazione di shell: ovvero la shell stessa, il trattamento
di testo con espressioni regolari del sed , il linguaggio di
processing di testo awk e infine il linguaggio C. Il Perl è
appunto questo. In pratica il Perl è una specie di Unix in
miniatura che comprende dentro di sé tutta la cultura di Unix
e riprende la maggior parte delle convenzioni e delle tecniche della
programmazione di shell Unix. Per questo è così
familiare e così apprezzato dai sistemisti Unix. Non devono
imparare molto per mettersi subito al lavoro con il Perl.
|