Linguaggio di scripting: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Altri progetti: Aggiunto il parametro "Preposizione" nel template "Interprogetto"
Collegamenti esterni: Aggiunto il template "FOLDOC"
 
(4 versioni intermedie di 3 utenti non mostrate)
Riga 1:
[[File:JavaScript code.png|miniatura|Esempio di [[script]] in [[JavaScript]]|300x300px]]
Un '''linguaggio di scripting''', in [[informatica]], è un [[linguaggio di programmazione interpretato]] destinato in genere a compiti di automazione del [[sistema operativo]] (''[[batch]]'') o delle [[applicazione (informatica)|applicazioni]] (''[[Macro (informatica)|macro]]''), o a essere usato nella [[programmazione web]] all'interno delle [[pagine web]].<ref>{{cita web|url=http://www.insidevcode.eu/index.php/2015/01/14/linguaggi-di-scripting-ecco-qui-alcuni|titolo=Linguaggi di scripting: ecco qui alcuni|autore=Flavius Florin Harabor|sito=insidevcode.eu|data=14 gennaio 2015|accesso=21 febbraio 2015}}</ref> I [[programma (informatica)|programmi]] sviluppati con questi linguaggi vengono detti ''[[script]]'', termine della [[lingua inglese]] utilizzato in ambito teatrale per indicare il [[sceneggiatura|copione]] (anche detto canovaccio) in cui sono tracciate le parti che devono essere interpretate dagli attori. Un linguaggio di ''scripting'' è un linguaggio di programmazione per un [[Run-time system|sistema runtime]] che automatizza l'esecuzione di compiti che altrimenti verrebbero eseguiti individualmente da un operatore umano<ref>{{Cita web|url=http://www.cse.wustl.edu/~loui/praiseieee.html|sito=web.archive.org|accesso=2022-04-27|titolo=Copia archiviata|dataarchivio=23 settembre 2015|urlarchivio=https://web.archive.org/web/20150923211452/http://www.cse.wustl.edu/~loui/praiseieee.html|urlmorto=sì}}</ref>.
 
== Storia ==
Riga 12 ⟶ 13:
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 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 [[server web|web server]], così da comunicare tramite il [[World Wide Web|web]]. Alcuni dei linguaggi di ''scripting'' che usavano il CGI agli albori dell'evoluzione del web furono [[Perl]], [[Active Server Pages|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]]. AdAl oggi2020, secondo [[TIOBE Programming Community Index|l'indice TIOBE]], i linguaggi di ''scripting'' costituiscono circa un terzo dei linguaggi di programmazione più diffusi al mondo<ref>{{Cita web|url=https://www.tiobe.com/tiobe-index/|titolo=index {{!}} TIOBE - The Software Quality Company|sito=www.tiobe.com|accesso=2022-04-27}}</ref><ref>{{Cita web|url=https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/cosa-sono-i-linguaggi-di-scripting/|titolo=Cosa sono i linguaggi di scripting?|sito=IONOS Digitalguide|lingua=it|accesso=2022-04-27}}</ref>.
 
== Descrizione ==
Consistono generalmente in semplici programmi il cui scopo è l'interazione con altri programmi, molto più complessi, in cui avvengono le operazioni più 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 è frequente l'uso dello ''[[shabang]]''.
 
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 (informatica)|memoria]], la [[Conversione di tipo|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 ada 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.
 
== Tipologia ==
===I job control language===
{{vedi anche|Job Control Language}}
I primi sistemi informatici, tipicamente [[mainframe]], erano destinati all'utilizzo da parte di più utenti (multiutenza) che potevano usufruire delle risorse del calcolatore mediante la disciplina [[fifo]] tipica dei sistemi ada elaborazione a lotti ([[Batch|Batch processing]])<ref>{{cita web
|1=http://www.dmi.unict.it/~fondinfo/slidy/fdi-2009/fdi_l09/it/fdi_l09.html#(2)
|titolo=Evoluzione dei sistemi operativi
Riga 44 ⟶ 45:
* Parametri e nome dei dati.
 
Per questo scopo nacquero i primi linguaggi di ''scripting'' della storia, i [[Job control language]] (abbreviato JCL).<ref>{{cita web
|http://www.simotime.com/jclone01.htm
|titolo=JCL Quick Reference
Riga 54 ⟶ 55:
===Bash scripting===
{{vedi anche|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 così essere inseriti in un unico file utilizzando la sintassi e gli operatori tipici di questo linguaggio. Gli ''script'' così creati possono semplificare notevolmente il lavoro dell'utente.<ref>{{cita web
|http://www.pluto.it/files/ildp/guide/abs/part1.html
|titolo=Guida avanzata di scripting Bash (introduzione)
Riga 61 ⟶ 62:
}}</ref>
 
Su alcuni sistemi come Linux è possibile pianificare l'esecuzione degli ''script'', ad esempio è possibile eseguire alcuni ''script'' ogni volta che il sistema viene avviato.
 
Ecco un esempio di ''script'' in ''bash'' per la cancellazione dei file in <code>/var/log</code>:
 
<syntaxhighlight lang="bash" line="1">
-- Cleanup
-- Da eseguire come root, naturalmente.
Riga 76 ⟶ 77:
</syntaxhighlight>
 
=== GUI Scriptingscripting ===
Con l'avvento delle [[interfaccia grafica|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 (informatica)|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 [[applicazione (informatica)|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.
 
Riga 83 ⟶ 84:
 
Molti programmi includono un linguaggio di scripting idiomatico adattato al bisogno dell'utente.
Allo stesso modo, alcuni [[Videogioco|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 ada un linguaggio generico (ad esempio [[Quake engine#QuakeC|QuakeC]], modellato su [[C (linguaggio)|C]])<ref>{{cita web
|http://ouns.nexuizninjaz.com/dev:quakec
|titolo= QuakeC
|lingua=en
|accesso=13 marzo 2010
}}</ref>, 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 più adatto all'estensione delle funzioni di ''editing'' di [[Emacs]].
 
===Web browser===
 
[[File:Scriptwikip.jpg|right|thumb|Codice in JavaScript presente nei sorgenti di Wikipedia|300x300px]]
 
I Web Browser sono applicazioni per la visualizzazione delle pagine web. Sono stati sviluppati una serie di linguaggi speciali per controllarne operazioni e funzionalità. Fra questi compaiono [[JavaScript]], il cui nome può trarre in inganno per la sua apparente derivazione da [[java (linguaggio di programmazione)|Java]] (in realtà i due linguaggi non hanno quasi nulla in comune); [[VBScript]] prodotto dalla [[Microsoft]], che lavora solo con il browser [[Internet Explorer]]; [[XML User Interface Language|XUL]] prodotto dal progetto [[Mozilla]], che lavora solamente con [[Mozilla Firefox|Firefox]]; [[XSLT]], un particolare linguaggio che trasforma il contenuto [[XML]] in una nuova forma.<ref>{{cita web
Riga 104 ⟶ 105:
 
===Web server===
Dal [[lato server]] del link [[Hypertext Transfer Protocol|HTTP]], gli ''[[Application server|application]]'' [[Application server|server]] e altri server a contenuto dinamico come il ''[[content management system]]'' (sistema di gestione dei contenuti), forniscono i contenuti attraverso una grande varietà di tecniche e tecnologie caratterizzate dall'approccio di scripting. Particolarmente predominanti in questo campo sono [[PHP]], [[JavaServer Pages|JSP]] e [[Active Server Pages|ASP]], ma altri linguaggi come [[Ruby (linguaggio di programmazione)|Ruby]] e [[Python]], diventati molto conosciuti soprattutto grazie ai loro famosi framework (rispettivamente [[Ruby on Rails]] e [[Django (informatica)|Django]]), si sono ritagliati il loro spazio.
 
===Linguaggi per l'elaborazione di testi===
 
L'elaborazione dei documenti di testo fu una delle prime applicazioni dei linguaggi di scripting. ''Script'' scritti per strumenti di [[Unix]] come [[Awk]], [[sed (Unix)|sed]] e [[grep]] automatizzano le attività che coinvolgono la configurazione del testo e del file di [[log]]. Di grande importanza è l'[[espressioni regolari|espressione regolare]], un linguaggio creato per la descrizione formale della struttura lessicale del testo, ede usato da tutti questi strumenti.
 
[[Perl]] fu originariamente designato per colmare le limitazioni di questi strumenti, ma è cresciuto diventando uno dei più diffusi linguaggi di uso generico.
Riga 114 ⟶ 115:
===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 estensioni/incorporati===
Riga 122 ⟶ 123:
[[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 (linguaggio di programmazione)|Ruby]].
 
Altre applicazioni complesse e destinate ada un compito specifico, possono incorporare ed esporre un linguaggio di programmazione integrato 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 [[Maya Embedded Language|MEL]], o [[Blender (programma)|Blender]] che si avvale di [[Python]] per il medesimo ruolo.<ref>{{cita web |http://jmsoler.free.fr/didacticiel/blender/tutor/python_script00_en.htm
|titolo=Python e Blender
|lingua=en
Riga 128 ⟶ 129:
}}</ref>
 
Altri tipi di applicazioni che necessitano l'aggiunta di veloci funzionalità 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 ada una conoscenza approfondita del programma(cosa che può richiedere molto tempo). I linguaggi di scripting, grazie alla loro versatilità, sono ampiamente usati, ede oggi vanta di una vasta gamma che offre linguaggi come [[Lua]] e [[Python]], ma anche meno conosciuti come [[AngelscriptAngelScript]] e [[Squirrel]].
 
== Linguaggi diffusi ==
Riga 203 ⟶ 204:
 
==Collegamenti esterni==
* {{Collegamenti esterni}}
* {{FOLDOC|scripting language|scripting language}}
* {{cita web|http://ennebi.solira.org/linprog/pag12.html|linguaggi di scripting nel web}}
* {{cita web | 1 = http://www.pluto.it/files/ildp/guide/abs/index.html | 2 = Guida avanzata di scripting Bash | accesso = 12 marzo 2010 | urlarchivio = https://web.archive.org/web/20101229052846/http://www.pluto.it/files/ildp/guide/abs/index.html | dataarchivio = 29 dicembre 2010 | urlmorto = sì }}