Linguaggio di scripting: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
→Collegamenti esterni: Aggiunto il template "FOLDOC" |
||
(30 versioni intermedie di 22 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 ==
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 è data più 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.<ref>{{cita web
Riga 14 ⟶ 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]]. Al 2020, 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>.
==
Consistono generalmente in semplici programmi il cui scopo è l'interazione con altri programmi, molto più complessi, in cui avvengono le operazioni più significative. Gli
Nei linguaggi di ''scripting'' il [[programmatore]] generalmente si disinteressa delle
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
== 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
|1=http://www.dmi.unict.it/~fondinfo/slidy/fdi-2009/fdi_l09/it/fdi_l09.html#(2)
|titolo=Evoluzione dei sistemi operativi
|accesso=12 marzo 2010
|urlarchivio=https://web.archive.org/web/20100225121146/http://www.dmi.unict.it/~fondinfo/slidy/fdi-2009/fdi_l09/it/fdi_l09.html#(2)
|dataarchivio=25 febbraio 2010
|urlmorto=sì
}}</ref>
Il costo notevole dell'hardware fece sì che più istituzioni, anche con sedi diverse, utilizzassero lo stesso [[computer]] tramite dei [[Terminale (informatica)|terminali remoti]]; così l'utente, non potendo interagire direttamente con la macchina, inviava il proprio [[job (informatica)|job]] (programma, dati e istruzioni per l'esecuzione del programma) tramite i terminali.<ref>{{cita web
Riga 40 ⟶ 42:
* 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).<ref>{{cita web
|http://www.simotime.com/jclone01.htm
|titolo=JCL Quick Reference
Riga 53 ⟶ 55:
===Bash scripting===
{{vedi anche|Bash}}
Con il termine [[Bash]] ''scripting'' ci si riferisce alla creazione di
|http://www.pluto.it/files/ildp/guide/abs/part1.html
|titolo=Guida avanzata di scripting Bash (introduzione)
Riga 60 ⟶ 62:
}}</ref>
Su alcuni sistemi come Linux è possibile pianificare l'esecuzione degli ''script'', ad esempio è possibile eseguire alcuni
Ecco un esempio di
# Cleanup▼
# Da eseguire come root, naturalmente.▼
<syntaxhighlight lang="bash" line="1">
#!/bin/bash
cd /var/log
cat /dev/null > messages
cat /dev/null > wtmp
echo "Log cancellati."
exit 0
</syntaxhighlight>
=== GUI
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
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 81 ⟶ 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
|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]]
===Web browser===
[[File:Scriptwikip.jpg
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
|1=http://users.libero.it/giudio/tech/script.html |accesso=12 marzo 2010
|titolo=Utilizzo dei linguaggi di script in ambiente Web
|urlarchivio=https://web.archive.org/web/20100314235634/http://users.libero.it/giudio/tech/script.html |dataarchivio=14 marzo 2010 |urlmorto=sì }}</ref> Le tecniche che comportano la combinazione di scripting fornita da XML e JavaScript sono cresciute al livello tale da acquisire un nome proprio: [[AJAX]]. ===Web
Dal [[lato server]] del link [[Hypertext Transfer Protocol|HTTP]], gli ''[[Application server|application]]'' [[Application server|server]] e altri server a contenuto dinamico come il ''[[
▲Dal lato server del link [[Hypertext Transfer Protocol|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 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]] 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.
[[Perl]] fu originariamente designato per colmare le limitazioni di questi strumenti, ma è cresciuto diventando uno dei più diffusi linguaggi di uso generico.
Riga 108 ⟶ 115:
===Linguaggi dinamici generici===
Alcuni linguaggi, come il [[Perl]], cominciarono come linguaggi di
===Linguaggi estensioni/incorporati===
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 può 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 partì, 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]] è utilizzata in molti alti ambienti come lo [[Yahoo! Widget Engine]]. Altre applicazioni che utilizzano implementazioni ECMAScript includono i prodotti [[Adobe (azienda)|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 (linguaggio di programmazione)|Ruby]].
Altre applicazioni complesse e destinate
|titolo=Python e Blender
|lingua=en
Riga 123 ⟶ 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
== Linguaggi diffusi ==
Secondo un sondaggio globale, svolta dalla EvansData nel 2008,<ref>{{cita web
|lingua=en
|accesso=13 marzo 2010
|titolo=The State of the Scripting Universe
|dataarchivio=22 novembre 2008
|urlarchivio=https://web.archive.org/web/20081122105345/http://www.cio.com/article/446829/
|urlmorto=sì
}}</ref> il più famoso linguaggio di scripting è il [[JavaScript]], al secondo posto il [[PHP]], mentre [[Perl]] si aggiudica il terzo posto.
{{Div col|cols=3}}
Riga 167 ⟶ 176:
* [[REBOL]]
* [[REXX]]
* [[Ruby (linguaggio di programmazione)|Ruby]]
* [[Scheme]]
* [[ScriptBasic]]
Riga 176 ⟶ 185:
* [[Visual DialogScript]]
* [[ZZT-oop]]
* [[HTML]]
{{Div col end}}
Riga 189 ⟶ 199:
*[[Shabang]]
*[[Shell (informatica)]]
==Altri progetti==
{{interprogetto|preposizione=sul}}
==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ì }}
* {{cita web|http://javascript.html.it/guide/|guide su
* {{cita web|
{{Principali linguaggi di programmazione}}
{{Controllo di autorità}}
{{portale|informatica}}
|