Un
linguaggio di scripting
, in
informatica
, e un
linguaggio di programmazione interpretato
destinato in genere a compiti di automazione del
sistema operativo
(
batch
) o delle
applicazioni
(
macro
), o a essere usato nella
programmazione web
all'interno delle
pagine web
.
[1]
I
programmi
sviluppati con questi linguaggi vengono detti
script
, termine della
lingua inglese
utilizzato in ambito teatrale per indicare il
copione
(anche detto canovaccio) in cui sono tracciate le parti che devono essere interpretate dagli attori. Un linguaggio di scripting e un linguaggio di programmazione per un
sistema runtime
che automatizza l'esecuzione di compiti che altrimenti verrebbero eseguiti individualmente da un operatore umano
[2]
.
Inizialmente, i primi linguaggi di
scripting
nacquero dall'esigenza di automatizzare alcune operazioni come l'esecuzione di programmi e l'interazione con essi: non c'erano molti costrutti e spesso erano relegati a mansioni specifiche. I linguaggi di
scripting
hanno poi trovato applicazione in molte aree della progettazione di
software
, potendo essere utilizzati come linguaggi indipendenti per l'implementazione di
algoritmi
per un'ampia gamma di compiti.
La differenza rispetto agli altri linguaggi interpretati e data piu che altro da ragioni “storiche”. Inizialmente i primi linguaggi di
scripting
erano molto rudimentali e permettevano poche e semplici operazioni, non risultando adatti alla scrittura di veri programmi. I moderni linguaggi di
scripting
hanno poi acquisito i costrutti e la potenza degli altri linguaggi; la distinzione resta solo in base all'uso che si fa del linguaggio.
[3]
Per la diffusione di questi linguaggi furono di fondamentale importanza linguaggi come
Tcl
e
Lua
, specificatamente sviluppati come linguaggi di
scripting
, che potevano essere integrati in qualsiasi applicazione o utilizzati autonomamente. Lo sviluppo di questi linguaggi comporto maggiori benefici rispetto alla creazione di nuovi linguaggi per applicazioni specifiche, evitando allo sviluppatore di dover scrivere un traduttore di linguaggio e permettendo all'utente di applicare le proprie capacita acquisite.
Il
Common Gateway Interface
(CGI) permise ai linguaggi di scripting di controllare i
web server
, cosi da comunicare tramite il
web
. Alcuni dei linguaggi di
scripting
che usavano il CGI agli albori dell'evoluzione del web furono
Perl
,
ASP
, e
PHP
.
Molti sono i software che integrano linguaggi di scripting. Ad esempio i moderni web
browser
sono provvisti di un linguaggio per la scrittura di estensioni al browser stesso, e molti altri linguaggi standard per controllare il browser, come
ECMAScript
(comunemente conosciuto come
JavaScript
),
CSS
, e
HTML
. Ad oggi, secondo
l'indice TIOBE
, i linguaggi di
scripting
costituiscono circa un terzo dei linguaggi di programmazione piu diffusi al mondo
[4]
[5]
.
Consistono generalmente in semplici programmi il cui scopo e l'interazione con altri programmi, molto piu complessi, in cui avvengono le operazioni piu significative. Gli
script
si distinguono dai programmi con cui interagiscono, solitamente implementati in un linguaggio differente e non interpretato. Inoltre, spesso gli
script
sono creati o modificati dall'utente finale. Nel sorgente e frequente l'uso dello
shabang
.
Nei linguaggi di scripting il
programmatore
generalmente si disinteressa delle
risorse di sistema
che il programma finito dovra consumare, demandando il tutto al sistema stesso. Per risorse si intendono, per esempio, la gestione della allocazione e deallocazione della
memoria
, la
conversione tra tipi
, l'inizializzazione e la chiusura dell'applicazione.
In questo modo si evitano molti problemi tipici della programmazione tradizionale, che risulta essere soggetta a errori insidiosi, non facilmente individuabili e pericolosi, e costringe inoltre il programmatore ad occuparsi di problematiche non strettamente connesse con l'obiettivo del
software
che deve creare. L'utilizzo di un linguaggio di scripting permette di concentrarsi invece direttamente sulla soluzione del problema.
I primi sistemi informatici, tipicamente
mainframe
, erano destinati all'utilizzo da parte di piu utenti (multiutenza) che potevano usufruire delle risorse del calcolatore mediante la disciplina
fifo
tipica dei sistemi ad elaborazione a lotti (
Batch processing
)
[6]
Il costo notevole dell'hardware fece si che piu istituzioni, anche con sedi diverse, utilizzassero lo stesso
computer
tramite dei
terminali remoti
; cosi l'utente, non potendo interagire direttamente con la macchina, inviava il proprio
job
(programma, dati e istruzioni per l'esecuzione del programma) tramite i terminali.
[7]
Nacque cosi la necessita di un linguaggio per poter codificare le istruzioni relative all'esecuzione del proprio job, quali ad esempio:
- Memoria richiesta.
- Periferiche
input/output
da utilizzare.
- Parametri e nome dei dati.
Per questo scopo nacquero i primi linguaggi di scripting della storia, i
Job control language
(abbreviato JCL).
[8]
Lo stesso argomento in dettaglio:
Bash
.
Con il termine
Bash
scripting ci si riferisce alla creazione di
script
solitamente utili all'automazione di operazioni di routine sui sistemi operativi
Unix-like
come
Linux
. Operazioni che richiedono l'inserimento di diversi comandi sulla shell testuale possono cosi essere inseriti in un unico file utilizzando la sintassi e gli operatori tipici di questo linguaggio. Gli
script
cosi creati possono semplificare notevolmente il lavoro dell'utente.
[9]
Su alcuni sistemi come Linux e possibile pianificare l'esecuzione degli
script
, ad esempio e possibile eseguire alcuni
script
ogni volta che il sistema viene avviato.
Ecco un esempio di
script
in
bash
per la cancellazione dei file in /var/log:
--
Cleanup
--
Da
eseguire
come
root,
naturalmente.
#!/bin/bash
cd
/var/log
cat
/dev/null
>
messages
cat
/dev/null
>
wtmp
echo
"Log cancellati."
exit
0
Con l'avvento delle
interfacce grafiche
nasce una tipologia di linguaggi di scripting mirati al controllo del computer. Questi linguaggi interagiscono con le finestre grafiche, i menu, i bottoni e gli oggetti grafici che il sistema genera, simulando le azioni che farebbe un utente umano. Il loro scopo e quello di automatizzare le azioni dell'utente. I linguaggi in cui il controllo avviene attraverso la pressione di tasti o click del mouse sono anche chiamati
macro
.
Questa categoria di linguaggi doveva inizialmente essere usata per controllare tutte le applicazioni eseguibili su un computer basato su interfacce grafiche; ma, in pratica, il supporto per questi linguaggi dipende dalle
applicazioni
e dal
sistema operativo
. Tuttavia ci sono alcune eccezioni a questa limitazione. Alcuni linguaggi di scripting relativi alle GUI sono basati sul riconoscimento degli oggetti grafici dai loro
pixel
sullo schermo; essi non dipendono dal sistema operativo o dall'applicazione.
Molti programmi includono un linguaggio di scripting idiomatico adattato al bisogno dell'utente.
Allo stesso modo, alcuni
videogiochi
per il computer utilizzano un linguaggio di scripting per estendere le azioni di personaggi secondari e dell'ambiente. Linguaggi di questo tipo sono sviluppati per una singola applicazione; e, anche se possono assomigliare ad un linguaggio generico (ad esempio
QuakeC
, modellato su
C
)
[10]
, hanno caratteristiche personali che li distinguono da essi.
Emacs Lisp
, un dialetto di
Lisp
ben sviluppato e potente, contiene molte caratteristiche speciali che lo rendono piu adatto all'estensione delle funzioni di editing di
Emacs
.
Codice in JavaScript presente nei sorgenti di Wikipedia
I Web Browser sono applicazioni per la visualizzazione delle pagine web. Sono stati sviluppati una serie di linguaggi speciali per controllarne operazioni e funzionalita. Fra questi compaiono
JavaScript
, il cui nome puo trarre in inganno per la sua apparente derivazione da
Java
(in realta i due linguaggi non hanno quasi nulla in comune);
VBScript
prodotto dalla
Microsoft
, che lavora solo con il browser
Internet Explorer
;
XUL
prodotto dal progetto
Mozilla
, che lavora solamente con
Firefox
;
XSLT
, un particolare linguaggio che trasforma il contenuto
XML
in una nuova forma.
[11]
Le tecniche che comportano la combinazione di scripting fornita da XML e JavaScript sono cresciute al livello tale da acquisire un nome proprio:
AJAX
.
Dal
lato server
del link
HTTP
, gli
application server
e altri server a contenuto dinamico come il
content management system
(sistema di gestione dei contenuti), forniscono i contenuti attraverso una grande varieta di tecniche e tecnologie caratterizzate dall'approccio di scripting. Particolarmente predominanti in questo campo sono
PHP
,
JSP
e
ASP
, ma altri linguaggi come
Ruby
e
Python
, diventati molto conosciuti soprattutto grazie ai loro famosi framework (rispettivamente
Ruby on Rails
e
Django
), si sono ritagliati il loro spazio.
L'elaborazione dei documenti di testo fu una delle prime applicazioni dei linguaggi di scripting.
Script
scritti per strumenti di
Unix
come
Awk
,
sed
e
grep
automatizzano le attivita che coinvolgono la configurazione del testo e del file di
log
. Di grande importanza e l'
espressione regolare
, un linguaggio creato per la descrizione formale della struttura lessicale del testo, ed usato da tutti questi strumenti.
Perl
fu originariamente designato per colmare le limitazioni di questi strumenti, ma e cresciuto diventando uno dei piu diffusi linguaggi di uso generico.
Alcuni linguaggi, come il
Perl
, cominciarono come linguaggi di
script
ma furono implementati in linguaggi adatti per problematiche ben piu ampie. Altri linguaggi simili sono stati descritti come "linguaggi di
script
" per questa somiglianza, anche se sono piu comunemente usati per programmare applicazioni.
Un considerevole numero di linguaggi sono stati progettati per rimpiazzare linguaggi di programmazione specifici per applicazioni, per essere integrabili nei programmi. Il programmatore (che lavora in C o in un altri linguaggio) include dei "Ganci" tramite i quali il linguaggio di scripting puo controllare l'applicazione. Questi linguaggi hanno lo stesso scopo dei linguaggi specifici per applicazioni, ma con il vantaggio di permettere il trasferimento di caratteristiche fra applicazione e applicazione. JavaScript parti, inizialmente, come un linguaggio all'interno dei web browser; tuttavia, la standardizzazione del linguaggio come
ECMAScript
lo ha reso popolare come un linguaggio incorporabile generico. In particolare, l'implementazione da parte di
Mozilla
di
SpiderMonkey
e utilizzata in molti alti ambienti come lo
Yahoo! Widget Engine
. Altre applicazioni che utilizzano implementazioni ECMAScript includono i prodotti
Adobe
, come
Adobe Flash
e
Adobe Acrobat
.
Tcl
fu creato come un linguaggio d'estensione da utilizzare in parallelo come un linguaggio di uso generale, emulando il ruolo di linguaggi come
Python
,
Perl
e
Ruby
.
Altre applicazioni complesse e destinate ad un compito specifico, possono incorporare ed esporre un linguaggio di programmazione integrato al fine di consentire agli utenti un maggiore controllo e consentendo loro piu funzionalita che possono essere disponibili attraverso una interfaccia utente. Per esempio,
Autodesk Maya
3D incorpora il linguaggio di scripting
MEL
, o
Blender
che si avvale di
Python
per il medesimo ruolo.
[12]
Altri tipi di applicazioni che necessitano l'aggiunta di veloci funzionalita o cicli di ottimizzazioni (ad esempio un
motore grafico
), usano anch'esse linguaggi integrati. Durante lo sviluppo, permette ai prototipi di essere modificati in modo facile e veloce, senza forzare l'utente ad una conoscenza approfondita del programma(cosa che puo richiedere molto tempo). I linguaggi di scripting, grazie alla loro versatilita, sono ampiamente usati, ed oggi vanta di una vasta gamma che offre linguaggi come
Lua
e
Python
, ma anche meno conosciuti come
Angelscript
e
Squirrel
.
Secondo un sondaggio globale, svolta dalla EvansData nel 2008,
[13]
il piu famoso linguaggio di scripting e il
JavaScript
, al secondo posto il
PHP
, mentre
Perl
si aggiudica il terzo posto.
- ^
Flavius Florin Harabor,
Linguaggi di scripting: ecco qui alcuni
, su
insidevcode.eu
, 14 gennaio 2015.
URL consultato il 21 febbraio 2015
.
- ^
Copia archiviata
, su
web.archive.org
.
URL consultato il 27 aprile 2022
(archiviato dall'
url originale
il 23 settembre 2015)
.
- ^
(
EN
)
Definition of a scripting language
, su
cs.man.ac.uk
.
URL consultato il 13 marzo 2010
.
- ^
index | TIOBE - The Software Quality Company
, su
www.tiobe.com
.
URL consultato il 27 aprile 2022
.
- ^
Cosa sono i linguaggi di scripting?
, su
IONOS Digitalguide
.
URL consultato il 27 aprile 2022
.
- ^
Evoluzione dei sistemi operativi
, su
dmi.unict.it
.
URL consultato il 12 marzo 2010
(archiviato dall'
url originale
il 25 febbraio 2010)
.
- ^
definizione job(Glossario informatico)
, su
pc-facile.com
.
URL consultato il 13 marzo 2010
.
- ^
(
EN
)
JCL Quick Reference
, su
simotime.com
.
URL consultato il 12 marzo 2010
.
- ^
Mendel Cooper,
Guida avanzata di scripting Bash (introduzione)
, su
pluto.it
.
URL consultato il 12 marzo 2010
.
- ^
(
EN
)
QuakeC
, su
ouns.nexuizninjaz.com
.
URL consultato il 13 marzo 2010
.
- ^
Utilizzo dei linguaggi di script in ambiente Web
, su
users.libero.it
.
URL consultato il 12 marzo 2010
(archiviato dall'
url originale
il 14 marzo 2010)
.
- ^
(
EN
)
Python e Blender
, su
jmsoler.free.fr
.
URL consultato il 12 marzo 2010
.
- ^
(
EN
)
The State of the Scripting Universe
, su
cio.com
.
URL consultato il 13 marzo 2010
(archiviato dall'
url originale
il 22 novembre 2008)
.
- (
EN
) David Hemmendinger,
computer scripting language
, su
Enciclopedia Britannica
, Encyclopædia Britannica, Inc.
![Modifica su Wikidata](//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/10px-Blue_pencil.svg.png)
- (
EN
)
Opere riguardanti Scripting languages (Computer science)
, su
Open Library
,
Internet Archive
.
![Modifica su Wikidata](//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/10px-Blue_pencil.svg.png)
- linguaggi di scripting nel web
, su
ennebi.solira.org
.
- Guida avanzata di scripting Bash
, su
pluto.it
.
URL consultato il 12 marzo 2010
(archiviato dall'
url originale
il 29 dicembre 2010)
.
- guide su JavaScript
, su
javascript.html.it
.
- Programming in Emacs Lisp
, su
gnu.org
.