Script

Il termine script, in informatica, designa un tipo particolare di programma, scritto in una particolare classe di linguaggi di programmazione, detti linguaggi di scripting. Una classe specifica di tali programmi sono i cosiddetti shell script, ossia script concepiti per essere eseguiti…

Script
Immagine: Lionel Rowe — CC0 — Wikimedia Commons

Il termine script, in informatica, designa un tipo particolare di programma, scritto in una particolare classe di linguaggi di programmazione, detti linguaggi di scripting. Una classe specifica di tali programmi sono i cosiddetti shell script, ossia script concepiti per essere eseguiti all'interno di una shell di un sistema operativo.

Descrizione

La distinzione tra un programma normale ed uno script non è netta, ma generalmente negli script si possono individuare le seguenti caratteristiche:

complessità relativamente bassa;

utilizzo di un linguaggio interpretato;

integrazione in un processo di configurazione automatica del sistema (ad esempio ad ogni avvio, o ad ogni login di un dato utente), in una pagina web (tipicamente utilizzando il linguaggio JavaScript), o comunque per svolgere mansioni accessorie e molto specifiche;

una certa linearità (uno script può anche accettare input dall'utente, ma solitamente input diversi non modificano sostanzialmente la struttura del diagramma a blocchi che descrive il comportamento dello script);

mancanza di una propria interfaccia grafica;

richiamo di altri programmi per svolgere operazioni più sofisticate.

Script di shell

Lo script di shell identifica uno script per una shell testuale di un sistema operativo, ovvero l'interfaccia a riga di comando, il cui linguaggio è considerato un semplice linguaggio di programmazione per un determinato dominio. Uno script di questo genere esegue tipicamente operazioni legate all'amministrazione di sistema come la manipolazione di file (p. es. rinomine, copie o spostamenti), l'esecuzione di altri programmi, la stampa e la manipolazione di testo. Il vantaggio principale, nonché più diffusamente sfruttato, rispetto all'interazione diretta con la shell digitando un comando dopo l'altro, è l'automazione, cioè la possibilità di definire, una volta per tutte attraverso lo script, una serie di operazioni particolarmente simili o caratterizzabili in maniera sofisticata. In tal modo, la scrittura di uno script libera infatti l'autore, nell'ordine, dalla noia della ripetività o dalla necessità di ricordare certi dettagli, lasciandogli il semplice onere di eseguirlo.

Sebbene molti interpreti dei linguaggi di shell siano dotati di interfaccia a riga di comando, come le varie shell dei sistemi Unix-like (p.es. Bash, C shell, Zsh, Debian Almquist), o di quelli Windows (PowerShell, cmd.exe o command.com), diversi altri linguaggi, come AppleScript o Windows Script Host (WScript.exe), ne sono invece sprovvisti. Altri notevoli esempi di linguaggi di shell destinati principalmente alla scrittura di script sono il DCL (Digital Command Language) dei sistemi DEC o il JCL (Job Control Language) dei sistemi IBM.

Vantaggi e svantaggi

Spesso, scrivere uno script di shell è molto più veloce che scrivere il 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 rm -rf * /(invece del previsto rm -rf */ ) sono folklore nella comunità Unix, un unico spazio extra converte il comando da uno che cancella tutta la sotto-directory ad uno che cancella tutto e cerca anche di eliminare tutta la partizione di root. Problemi analoghi possono trasformare cp e mv in armi pericolose, e l'abuso del > può eliminare il contenuto di un file. Ciò è reso più problematico dal fatto che molti comandi Unix differiscono per nome da una sola lettera: cp, cn, cd.

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 in cui un efficiente filtro di comandi esegue la maggior parte del lavoro, attenuando il rallentamento; ma uno script complesso è in genere diversi ordini di grandezza più lento 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.

Molti svantaggi di usare alcuni linguaggi di script sono causati da difetti di progettazione all'interno della sintassi del linguaggio o di attuazione, e non sono necessariamente imposti dall'utilizzo di una base della riga di comando di testo, ci sono un certo numero di shell che utilizzano altri linguaggi di programmazione della shell o anche veri e propri linguaggi di tipo Scsh (che utilizza Scheme).

Servizi correlati

Altre voci

I

Interprete JavaScript

Un interprete JavaScript è un software specializzato che esegue comandi JavaScript, utilizzato soprattutto dai browser.

Leggi la voce →
X

XHTML

L'XHTML (sigla di eXtensible HyperText Markup Language, Linguaggio di marcatura di ipertesti estensibile) è un linguaggio di marcatura che associa alcune proprietà dell'XML con le caratteristiche dell'HTML: un file XHTML è una pagina HTML scritta in conformità con lo standard XML.

Leggi la voce →
Libero (portale)L

Libero (portale)

Libero è un portale italiano di proprietà di Italiaonline, fondato da Infostrada con il nome di Italia On Line nel 1994 come sito di assistenza agli utenti nella navigazione Internet (al tempo, ancora a pagamento) e nella configurazione della posta elettronica.

Leggi la voce →
XOOPSX

XOOPS

XOOPS è un content management system (CMS) che permette agli amministratori di creare facilmente siti web dinamici. È un potente strumento per lo sviluppo di piccole e grandi comunità virtuali. È scritto in PHP e utilizza database come MySQL.

Leggi la voce →
Content management systemC

Content management system

In informatica un content management system, in acronimo CMS (sistema di gestione dei contenuti in italiano), è uno strumento software, installato su un server web, il cui compito è facilitare la gestione dei contenuti di siti web, svincolando il webmaster da conoscenze tecniche specifiche di…

Leggi la voce →
Sito webS

Sito web

Un sito web (o sito Internet oppure detto semplicemente sito) è un insieme di pagine web correlate, ovvero una struttura ipertestuale di documenti informativi che risiede, tramite hosting, su un server web, raggiungibile dall'utente attraverso un comune motore di ricerca e/o un indirizzo web…

Leggi la voce →