Linguaggio di scripting
In informatica un linguaggio di scripting è un linguaggio di programmazione interpretato destinato in genere a compiti di automazione del sistema (batch) o delle applicazioni (macro), o ad essere usato all'interno delle pagine web.
I programmi sviluppati con questi linguaggi vengono detti script,termine inglese utilizzato in ambito teatrale per indicare il testo dove vengono tracciate la parti che devono essere interpretate degli attori.
Gli script si distinguono dai programmi con cui interagiscono che solitamente sono implementati in un linguaggio differente non interpretato. Inoltre, spesso gli script sono creati o modificati dall'utente finale.
Quadro Storico
Inizialmente i primi linguaggi di scripting nacquero nacquero dall'esigenza di automatizzare alcune operazioni come l'esecuzione di programmi. Infatti i primi linguaggi di questo tipo sono i linguaggi batch ovvero linguaggi che permettono di creare liste di comandi da eseguire sequenzialmente che altrimenti occorrerebbe digitare manualmente nella shell.
La differenza rispetto ai linguaggi interpretati è data più che altro da ragioni “storiche”. I primi linguaggi di scripting erano molto rudimentali e permettevano poche e semplici operazioni, e non erano adatti alla scrittura di veri programmi. Oggi che i moderni linguaggi di scripting hanno acquisito i costrutti e la potenza degli altri linguaggi; la distinzione resta solo in base all'uso che si fa del linguaggio.
linguaggi come Tcl e Lua, furono sviluppati specificatamente come linguaggi di scripting che potevano essere integrati in qualsiasi applicazione o utilizzati autonomamente. Lo sviluppo di questi linguaggi comportò 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 capacità acquisite.
Il Common Gateway Interface (CGI) permise ai linguaggi di scripting di controllare i web servers, così 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.
Alcuni software integrano diversi linguaggi di scripting.Ad esempio i moderni web browsers tipicamente 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.
Caratteristiche
Nei linguaggi di scripting il programmatore generalmente si disinteressa delle risorse di sistema che il programma finito dovrà 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 ad errori non facilmente individuabili e pericolosi, e inoltre costringe 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 direttamente sulla soluzione del problema.
Tipi di linguaggi di Scripting
I job control languages e le shells
I primi computer erano destinati ad essere utilizzati da più utenti tramite l'elaborazione a lotti(batch processing) ogni utente inviava il proprio programma da un terminale in remoto. Nasceva così la necessità di anteporre delle istruzioni al sistema operativo ed all'operatore (che aveva il compito di svolgere determinate attività che richiedevano l'intervento di un umano). A questo proposito nacquero i primi linguaggi di scripting, i job control languages (abbreviato JCL).
GUI Scripting
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 è 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 pixels sullo schermo; essi non dipendono dal sistema operativo o dall'applicazione.
Linguaggi specifici per le applicazioni
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), hanno caratteristiche personali che li distinguono da essi. Emacs Lisp, un dialetto di Lisp ben sviluppato e , contiene molte caratteristiche speciali che lo rendono più adatto all'estensione di funzioni di editing di Emacs.
Web Browsers
I Web Browser sono applicazioni per la visualizzazione delle pagine web. Sono stati sviluppato una serie di linguaggi speciali per controllarne operazioni e funzionalità. Fra questi compaiono JavaScript, un linguaggio che si rifa alle linee java; VBScript prodotto dalla Microsoft, che lavora sono 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. Le techiche che comportano la combinazione di scripting fornita da XML e JavaScript sono incrementate al livello tale da acquisire un nome tutto suo: AJAX.
Web Server
Nel lato server del link HTTP, application servers e altri servers a contesto dinamico come il Content management system, o sistema di gestione dei contenuti, provvede contenuti attraverso una grande varietà di tecniche e tecnologie classificate dall'approccio di scripting. Particolarmente presenti in questa area sono PHP, JSP e ASP, ma altri come Ruby on Railse Djangohanno scavato una nicchia, aggiundicandosi anch'essi un posto di merito.
Text processing languages
il processo sui dati text-based è uno dei più antichi modi di usare i linguaggi di scripting. Gli script sono scritti per strumenti Unix come AWK, sed e grepche coinvolgono configurazioni text-based e file di log. In quest'ambito è da prendere particolarmente in considerazioni le espressioni regolari, un linguaggio creato per la descrizione formale della struttura lessicale del testo, e usata anche da tutti questi strumenti.
Linguaggi dinamici generici
Alcuni linguaggi, come il Perl, cominciarono come linguaggi di script ma furono implementati in linguaggi adatti per problematiche ben più ampie. Altri linguaggi simili sono stati descritti come "linguaggi di script" per questa somiglianza, anche se sono più comunemente usati per programmare applicazioni.
Linguaggi estesioni/incorporati
Un considerevole numero di linguaggi sono stati progettati per rimpiazzare specifici linguaggi di programmazione per applicazioni, sotto forma di linguaggio incorporato nei programmi applicativi. Il programmatore di applicazione include degli "Ganci" dove il linguaggio di scripting può controllare l'applicazione. Questi linguaggi servono allo stesso scopo dei linguaggi estensione ma con il vantaggio di permettere dei trasferimenti particolari fra applicazioni e applicazioni. JavaScript cominciò, in primo luogo, come un linguaggio di scripting web interno ai browser; sebbene, la standardizzazione del linguaggio come ECMAScript lo ha reso popolare come un linguaggio incorporabile generico. In particolare, l'implementazione Mozilla SpiderMonkey è incorporata in molti ambienti come lo Yahoo! Widget Engine. Altre applicazioni che incorporano 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 possono incorporare ed esporre un linguaggio di programmazione incorporato al fine di consentire agli utenti un maggiore controllo e consentendo loro più funzionalità 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.
Altri tipi di applicazioni che necessitano l'aggiunta di veloci funzionalità o cicli di ottimizzazioni, usano anch'esse linguaggi incorporati. Durante lo sviluppo, permette ai protoipi di essere modificati in modo facile e veloce, senza forzare l'utente ad una conoscenza approfondita del programma. I linguaggi di scripting sono ampiamente usati, la vasta gamma che offre linguaggi famosi, come Lua e Python, a quelli meno meno conosciuti come Angelscript e Squirrel.
Curiosità
Secondo un sondaggio globale, svolta dalla EvansData nel 2008, il più famoso linguaggio di scripting è il JavaScript, al secondo posto il PHP, mentre Perl si aggiudica il terzo posto.
Alcuni Linguaggi di Scripting
- ASP (Active Server Pages)
- ActionScript
- AppleScript
- Awk
- bash
- Brain
- CobolScript
- E
- Euphoria
- Falcon
- Guile
- Hybris
- ICI
- JASS
- JavaScript (ECMAScript)
- BeanShell (scripting per Java)
- Job Control Language (JCL)
- Lua
- mIRC Scripting
- Miva
- MUMPS
- ObjectRexx
- Perl
- PHP
- Pike
- Pliant
- Python
- QuakeC
- REBOL
- REXX
- Ruby
- Scheme (esistono sia interpreti che compilatori)
- ScriptBasic
- Shell scripting (Unix)
- sh
- Simkin
- Tcl
- UnrealScript
- VBScript
- Visual DialogScript
- ZZT-oop