Script: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 21:
Spesso, scrivere uno script di shell è molto più veloce che scrivere il [[codice sorgente|codice]] equivalente in altri linguaggi di programmazione. I molti vantaggi includono programma facile o selezione dei file, avvio rapido, e il debugging interattivo. Uno script di shell può essere usato per fornire una sequenza e il collegamento con il processo decisionale attorno ai programmi esistenti, e per gli script moderatamente grandi l'assenza di un passaggio di compilazione è un vantaggio. L'esecuzione interpretativa rende facile scrivere il codice di [[debug]] in uno script ed inoltre eseguire di nuovo rilevando e correggendo i bug. Gli utenti non esperti possono utilizzare script per personalizzare il comportamento dei programmi e script di shell forniscono alcune limitate possibilità di [[multiprocessing]].
 
D'altra parte, lo scripting di shell è soggetto a errori costosi. Errori di battitura involontaria come <tt>[[rm (Unix)|rm]] -rf * /</tt>(invece del previsto <tt>rm -rf * /</tt> ) sono folklore nella comunità Unix, un unico spazio extra converte il comando da unauno che cancella tutta la sotto-directory aad uno che cancella tutto e cerca anche di eliminare tutta la [[Partizione (informatica)|partizione]] di [[Root (informatica)|root]]. Problemi analoghi possono trasformare <tt>[[cp (Unix)|cp]]</tt> e <tt>[[mv (Unix)|mv]]</tt> in armi pericolose, e l'abuso del <tt>></tt> può eliminare il contenuto di un file. Ciò è reso più problematico dal fatto che molti comandi Unix differiscono per nome da una sola lettera: <tt>cp</tt>, <tt>cn</tt>, <tt>[[cd (Unix)|cd]]</tt>.
 
Un altro svantaggio significativo è la velocità di esecuzione lenta e la necessità di avviare un nuovo processo per quasi tutti i comandi di shell eseguiti. Quando lo script è un lavoro può essere realizzato creando una [[Pipeline dati|pipeline]] in cui un efficiente [[Filtro (Unix)|filtro]] di comandi esegue la maggior parte del lavoro, attenuando il rallentamento; ma uno script complesso è in genere diversi ordini di grandezza più lenta di un programma convenzionale compilato che compie un'operazione equivalente.
Ci sono anche problemi di compatibilità tra piattaforme diverse. [[Larry Wall]], creatore del [[Perl]], come è noto ha scritto che "''È più facile il porting di una shell rispetto a uno script di shell''".
 
Allo stesso modo, script più complessi possono essere eseguiti in dei limiti del linguaggio di scripting di shell stessa; Questi limiti rendono difficile la scrittura di codice di qualità a causa delle estensioni di varie shell. Infatti se si pensasse di risolvere i problemi di shell con l'originale linguaggio di shell si potrebbero venire a creare inaspettati problemi peggiori.