I linguaggi di scripting rendono la codifica più semplice e veloce, quindi non sorprende che siano ampiamente utilizzati nello sviluppo web.
Tuttavia, questo non è il loro unico campo di applicazione. Esistono anche linguaggi di scripting per sistemi operativi, software di analisi statistica, applicazioni per ufficio, motori di gioco e molti altri tipi di piattaforme.
In questo post scopriremo cosa sono esattamente e vedremo insieme i migliori esempi di linguaggi di scripting nel 2024.
Cosa sono i linguaggi di scripting?
I linguaggi di scripting sono un tipo specifico di linguaggio informatico che si può usare per dare istruzioni ad altri software, come un browser web, un server o un’applicazione autonoma. Molti dei linguaggi di codifica più diffusi oggi sono linguaggi di scripting, come JavaScript, PHP, Ruby e Python.
I linguaggi di scripting possono eseguire diverse azioni all’interno di un particolare ambiente di runtime, come ad esempio automatizzare l’esecuzione di attività, migliorare le funzionalità del software madre, eseguire configurazioni, estrarre dati da set di dati e altro.
I linguaggi di scripting possono nascere in due modi:
- Un ambiente runtime può introdurre un proprio linguaggio di scripting, come Bash per il sistema operativo GNU o VBA per le applicazioni di Microsoft Office.
- Un ambiente di runtime può adottare un linguaggio di scripting esistente, ad esempio la shell
mongo
di MongoDB è stata costruita intorno a JavaScript.
D’altra parte, a volte è il linguaggio di scripting a nascere per primo e a dare vita alla propria piattaforma madre, per quanto possa sembrare strano.
È quello che è successo nel caso di Node.js, un ambiente di runtime backend creato per consentire agli sviluppatori web di utilizzare JavaScript non solo sul frontend ma anche sul backend, seguendo il paradigma “JavaScript everywhere”.
Cosa significa scripting nella programmazione?
L’azione di scripting consiste essenzialmente nello scrivere una serie di comandi che vengono interpretati uno per uno da un’applicazione o da un motore di scripting. Anche se lo script guida la piattaforma su cosa fare (le fornisce uno script da leggere e interpretare), l’esecuzione viene eseguita dall’ambiente di runtime e non dal linguaggio di scripting stesso.
In questo modo i linguaggi di scripting si differenziano dai linguaggi di programmazione come Java che possono essere “scritti una volta, eseguiti ovunque” (slogan ufficiale di Java che significa che i programmi Java possono essere eseguiti come applicazioni standalone in qualsiasi ambiente; da quando è stato coniato è diventato anche il principio WORA che si riferisce alle funzionalità multipiattaforma).
Linguaggi di scripting e linguaggi di programmazione
Sebbene i termini “linguaggio di scripting” e “linguaggio di programmazione” siano spesso usati in modo intercambiabile, non sono la stessa cosa.
Specifico per la piattaforma o agnostico per la piattaforma
I linguaggi di scripting sono specifici per la piattaforma, mentre i linguaggi di programmazione sono “platform-agnostic” (multipiattaforma) in quanto hanno la capacità di eseguirsi da soli. Ad esempio, un programma Java può essere eseguito su qualsiasi sistema operativo.
(Per lo più) interpretato vs. compilato
Mentre i linguaggi di programmazione sono compilati, i linguaggi di scripting sono per lo più interpretati, anche se esistono alcuni linguaggi di scripting che sono sia compilati che interpretati, come Python e Groovy.
“Compilato” significa che un linguaggio di programmazione ha un proprio compilatore che traduce la sintassi in codice macchina prima dell’esecuzione. Al contrario, i linguaggi di scripting vengono interpretati riga per riga durante l’esecuzione dall’interprete della piattaforma su cui vengono eseguiti.
Più veloce o più lento in fase di esecuzione
Grazie a questa differenza di implementazione, i linguaggi di programmazione vengono eseguiti più velocemente dei linguaggi di scripting perché non devono essere compilati in tempo reale. Inoltre, i compilatori eseguono una gestione collettiva degli errori prima dell’esecuzione, mentre gli interpreti valutano il codice riga per riga, quindi si fermano (o si interrompono completamente) ogni volta che incontrano un errore.
Anche questo aumenta il tempo totale di esecuzione dei linguaggi di scripting, anche se con un hardware moderno e più veloce questo problema è minore rispetto al passato.
Maggiore o minore intensità di codice
I linguaggi di programmazione sono più ricchi dal punto di vista del codice, in quanto è necessario eseguire manualmente molte operazioni che nel caso dei linguaggi di scripting vengono gestite dalla piattaforma. Se usate un linguaggio di scripting dovrete scrivere molto meno codice.
Applicazioni autonome e applicazioni come parte di uno stack
Ci sono alcune cose che non si possono fare con un linguaggio di scripting. Soprattutto, non è possibile creare applicazioni desktop e mobili standalone con un linguaggio di scripting, perché non esiste un ambiente di runtime che le interpreti.
Ad esempio, si possono utilizzare framework PHP come WordPress e Laravel solo per siti e applicazioni web, perché utilizzano il browser web come ambiente di runtime. Allo stesso modo, le applicazioni mobili di WordPress vengono eseguite all’interno di ambienti runtime per dispositivi mobili, come Capacitor, che incorporano viste web.
Linguaggi di scripting e di programmazione – Panoramica delle differenze
Le principali differenze tra linguaggi di scripting e di programmazione sono le seguenti:
Linguaggi di scripting | Linguaggi di programmazione |
Specifici per la piattaforma | A prescindere dalla piattaforma (multipiattaforma) |
(Per lo più) interpretato | Compilato |
Più lento in fase di esecuzione | Più veloce in fase di esecuzione |
Meno ricco di codice | Più ricco di codice |
Crea applicazioni come parte di uno stack | Crea applicazioni autonome |
Equivoci sui linguaggi di scripting
Ci sono alcuni equivoci sui linguaggi di scripting in cui vi imbatterete spesso, quindi diamogli un’occhiata prima di entrare nel merito dei migliori linguaggi di scripting.
Prima di tutto, non ha molto senso parlare di linguaggi di scripting frontend vs backend, anche se molti articoli che troverete in giro per il web utilizzano questo tipo di raggruppamento.
In realtà esiste un solo linguaggio di scripting frontend attualmente in uso, ovvero JavaScript (prima ne esistevano altri, come ActionScript e JScript, ma ora sono tutti deprecati).
Non è importante il rapporto tra frontend e backend nel contesto dei linguaggi di scripting, ma l’ambiente di runtime in cui un linguaggio di scripting può essere eseguito.
Si noti che per “frontend” si intende semplicemente qualcosa (immagini, font, markup, fogli di stile, script, o un altro tipo di file statico) che un browser web può interpretare. Per esempio, provate ad aprire un file PHP direttamente dal browser web: non potete farlo, perché un server applicativo PHP deve interpretarlo – quindi PHP è un linguaggio di scripting backend nel contesto dello sviluppo web, mentre è il livello applicativo di uno stack di server (ad esempio LAMP) nel contesto dei linguaggi di scripting.
Oltre che per lo sviluppo web (scripting frontend e backend), i linguaggi di scripting possono essere utilizzati per molte altre cose, come la programmazione e la configurazione di sistemi operativi e di applicazioni/ambienti specifici, la manipolazione di insiemi di dati, l’automazione di attività e molte altre ancora.
Un linguaggio di scripting può essere eseguito anche in più ambienti.
Cosa non sono i linguaggi di scripting?
Prima di entrare nel merito dei migliori linguaggi di scripting, vediamo quali sono i linguaggi di programmazione che a volte vengono falsamente chiamati linguaggi di scripting, ma con i quali non si può fare scripting:
- Linguaggi di markup, come HTML e XML. Nell’HTML esistono attributi per la gestione degli eventi come onclick e onmouseover, ma si tratta comunque di callback JavaScript.
- Linguaggi per fogli di stile, come CSS, Sass e LESS.
- Qualsiasi tipo di libreria o framework costruito sopra un linguaggio di scripting, come jQuery, PostCSS, React, Vue, Angular, Rails, Grails, Django, Laravel, WordPress e altri.
- Linguaggi compilati in un linguaggio di scripting, come TypeScript e CoffeeScript.
- SQL perché serve a gestire i dati nei sistemi di gestione dei database relazionali (RDBMS) come MySQL e MariaDB, che non permettono di scrivere funzionalità dinamiche. Tuttavia, molti RDBMS hanno delle shell che permettono di utilizzare un linguaggio di scripting (ad esempio JavaScript o Python nella shell di MySQL).
- Ambienti di runtime per uno o più linguaggi di scripting, come NodeJS.
Quali sono i 13 migliori linguaggi di scripting?
Ci sono molti ottimi linguaggi di scripting che meriterebbero una menzione in questa guida, ma non sono più in fase di sviluppo attivo. Al contrario, i seguenti 13 linguaggi di scripting vengono regolarmente aggiornati e utilizzati anche in produzione.
Quindi, se state pensando di imparare un nuovo linguaggio di scripting per intraprendere un nuovo percorso professionale, vale la pena provarli tutti.
1. JavaScript/ECMAScript
JavaScript è un’implementazione dello standard ECMA-262 che definisce il linguaggio di scripting generale ECMAScript (ES). In altre parole, JavaScript è un dialetto del linguaggio ECMAScript, quindi non ha una specifica autonoma ma utilizza la stessa sintassi di ECMAScript.
JavaScript ha funzioni di prima classe (le funzioni sono trattate come variabili) e supporta la programmazione orientata agli oggetti basata sui prototipi (gli oggetti esistenti vengono riutilizzati come prototipi).
Esempio di codice
ECMAScript utilizza la sintassi delle parentesi graffe. Il seguente esempio di codice JavaScript somma i numeri da 1 a 10 e visualizza il risultato nella console (potete provarlo nella console JavaScript del vostro browser web premendo F12):
let total = 0, count = 1;
while (count <= 10) {
total += count;
count += 1;
}
console.log(total);
// 55
Fonte: Eloquent JavaScript by Marijn Haverbeke: Introduction
Casi d’uso e ambienti
JavaScript è il linguaggio di scripting utilizzato dai moderni browser web, come il motore V8 di Chrome e il motore SpiderMonkey di Mozilla. Oltre allo sviluppo web frontend, può essere utilizzato anche in ambienti non-browser. L’ambiente di runtime NodeJS è stato creato per consentire agli sviluppatori web di utilizzarlo nel backend.
Anche le shell di alcuni sistemi di gestione di database NoSQL, come MongoDB e Apache CouchDB, e alcuni sistemi di gestione di database relazionali, come la già citata MySQL Shell, lo utilizzano come linguaggio di scripting.
2. PHP
PHP è un linguaggio di scripting open source di uso generale utilizzato per lo sviluppo web backend. L’acronimo originariamente stava per “Personal Home Page”, in quanto PHP è stato creato per aggiungere funzionalità dinamiche alle pagine HTML statiche.
Da allora, PHP si è evoluto in un linguaggio autonomo, per cui ora l’acronimo viene utilizzato nel senso di “Hypertext Preprocessor”. PHP è un linguaggio loosely typed (non è necessario dichiarare i tipi di dati delle variabili), può essere incorporato nei documenti HTML e ha anche funzioni orientate agli oggetti.
Esempio di codice
Il PHP ha una sintassi simile a quella di C. Il seguente esempio di codice PHP crea un array numerico con quattro elementi, esegue un loop, moltiplica ogni elemento per due e cancella la variabile $value
al termine del ciclo.
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value);
?>
Fonte: PHP documentation: Control Structures
Casi d’uso e ambienti
PHP può essere eseguito su diversi server HTTP, tra cui Apache e Nginx, che sono i più diffusi.
Gli stack di server PHP più comuni sono LAMP (Linux, Apache, MySQL, PHP), LEMP (Linux, Nginx, MySQL, PHP – utilizzato da Kinsta), WAMP (Windows, Apache, MySQL, PHP) e MAMP (macOS, Apache, MySQL, PHP).
È utilizzato anche da molti popolari sistemi di gestione dei contenuti (CMS) come WordPress, Drupal e Joomla e da framework per applicazioni web come Laravel, Symfony e CodeIgniter, che sono tutti costruiti sulla base del linguaggio PHP e lo arricchiscono di ulteriori funzionalità.
È possibile usare PHP anche per lo sviluppo locale di WordPress. Date un’occhiata alla nostra guida approfondita sulle principali differenze tra Javascript e PHP.
3. Python
Python è attualmente il secondo linguaggio di codifica più popolare su GitHub (dopo JavaScript). È amato per la sua sintassi chiara e concisa: quando si programma in Python, basta digitare molto meno rispetto alla maggior parte dei linguaggi.
Python è un progetto gratuito e open source, gestito dalla Python Software Foundation. Supporta i paradigmi di programmazione strutturata, orientata agli oggetti e funzionale e dispone di un’ampia Libreria Standard, una raccolta di moduli Python comunemente utilizzati.
Esempio di codice
Python non utilizza le parentesi graffe e i punti e virgola sono opzionali, quindi il codice è facile da leggere e scrivere. Il seguente esempio di codice Python esegue un loop di numeri interi compresi tra 0 e 4 e li stampa:
count = 0
while count < 5:
print(count)
count += 1
Fonte: Learn Python: Loops
Casi d’uso e ambienti
L’implementazione di Python più diffusa è CPython, scritta in linguaggio C. È anche l’implementazione di riferimento che si scarica insieme al linguaggio Python. Anche se Python è un linguaggio interpretato, CPython utilizza sia una fase di compilazione che di interpretazione. In primo luogo, compila il codice sorgente in bytecode (non lo stesso del codice macchina) che interpreta in fase di esecuzione.
Oltre a CPython, Python ha anche altri ambienti di runtime, soprattutto PyPy che omette la fase di compilazione e si limita all’interpretazione JIT (just-in-time). Le implementazioni di Python sono multipiattaforma, ovvero funzionano su diversi sistemi operativi, tra cui Linux, Windows e macOS.
Il linguaggio Python è spesso utilizzato nell’apprendimento automatico, nello sviluppo web backend (Django è il framework web più popolare), nell’analisi dei dati, nell’automazione, nel calcolo scientifico e nel web scraping.
Per scoprire il modo migliore per imparare Python, date un’occhiata al nostro blog sui tutorial di Python.
4. Ruby
Ruby è un linguaggio di scripting open source di uso generale con una sintassi compatta e di facile lettura. Segue i principi della programmazione orientata agli oggetti e permette di scrivere codice pulito e logico, rendendolo uno dei linguaggi di programmazione più facili da imparare. In Ruby tutto è un oggetto, anche i tipi che nella maggior parte dei linguaggi sono primitivi, come i boolean e gli interi.
Anche i concetti orientati agli oggetti come l’ereditarietà, i mixin e le metaclassi sono molto utilizzati.
Sebbene Ruby abbia un design puramente orientato agli oggetti, supporta anche la programmazione procedurale (le funzioni e le variabili definite al di fuori delle classi appartengono all’oggetto Self
) e la programmazione funzionale (attraverso funzioni anonime, chiusure e continuazioni).
Esempi di codice
Ruby ha una sintassi concisa simile a quella di Python. Il seguente esempio di codice Ruby definisce la classe KaraokeSong
come sottoclasse della classe Song
:
class KaraokeSong < Song
def initialize(name, artist, duration, lyrics)
super(name, artist, duration)
@lyrics = lyrics
end
end
Fonte: Programming Ruby reference guide: Classes, Objects, and Variables
Casi d’uso e ambienti
Ruby viene utilizzato principalmente nello sviluppo web backend, alimentando alcuni robusti framework di applicazioni web come Ruby on Rails. Molti siti e applicazioni popolari funzionano con Ruby on Rails, come Airbnb, Shopify, GitHub e Hulu.
Ruby è anche il linguaggio in cui sono scritti molti popolari strumenti di sviluppo web, in particolare il preprocessore CSS Sass, il generatore di siti web statici Jekyll e l’ambiente di macchina virtuale Vagrant.
L’implementazione predefinita di Ruby è YARV (Yet Another Ruby Virtual Machine). Ha sostituito l’interprete originale di Ruby Matz’s Ruby Interpreter (anche Ruby MRI o CRuby) che era stato criticato per problemi di velocità e scalabilità.
Esistono anche diversi ambienti di runtime concorrenti per Ruby, come JRuby (che consente di eseguire Ruby sulla Java Virtual Machine), mruby (un’implementazione leggera che si può incorporare nelle proprie applicazioni), TruffleRuby (l’interprete Ruby di Oracle costruito su GraalVM), Rubinius (una macchina virtuale cloud-native per Ruby) e altri.
5. Groovy
Groovy è un linguaggio incredibilmente flessibile scritto per la Java Virtual Machine (JVM) che può essere utilizzato sia come linguaggio di scripting che di programmazione. È un progetto open source gestito dalla Apache Software Foundation. Groovy è un linguaggio orientato agli oggetti che estende la superclasse java.lang.Object
.
Supporta la tipizzazione statica e dinamica (il controllo dei tipi può essere effettuato sia in fase di compilazione che di esecuzione) e ha un supporto nativo per liste, array associativi, espressioni regolari e linguaggi di markup come HTML e XML.
È possibile utilizzare Groovy insieme alle librerie Java esistenti.
Esempio di codice
Groovy ha una sintassi compatibile con Java, che utilizza le parentesi graffe. Il seguente esempio di codice Groovy definisce la classe Coordinates
con le proprietà latitudine e longitudine e il metodo getAt()
:
@Immutable
class Coordinates {
double latitude
double longitude
double getAt(int idx) {
if (idx == 0) latitude
else if (idx == 1) longitude
else throw new Exception("Wrong coordinate index, use 0 or 1")
}
}
Fonte: Groovy Documentation: Semantics
Casi d’uso e ambienti
Poiché Groovy si compila in codice byte Java, è possibile usarlo come linguaggio di programmazione generale simile a Java. In questo caso, si può compilare il codice sorgente in codice byte prima del runtime utilizzando il compilatore groovyc (l’equivalente di javac).
Tuttavia, esistono anche molte implementazioni di Groovy che permettono di utilizzarlo come linguaggio di scripting. Le più popolari sono il framework per applicazioni web Grails (precedentemente noto come Groovy on Grails) e lo strumento di automazione della compilazione Gradle, ma ce ne sono molte altre.
6. Perl
Perl è un linguaggio di scripting di uso generale che esiste da più di trent’anni (dal 1987). Originariamente, era stato creato come linguaggio di scripting UNIX per l’elaborazione di report. Il suo nome deriva anche da questo: l’acronimo Perl sta per “Practical Extraction and Reporting Language”.
Il linguaggio Perl è diventato popolare negli anni ’90 quando i programmatori hanno iniziato a utilizzarlo ampiamente per lo scripting CGI (Common Gateway Interface), una vecchia specifica di interfaccia per i server web (attualmente è utilizzata soprattutto dai siti legacy).
Nonostante sia relativamente giovane, Perl è ancora all’11° posto nell’indice TIOBE e al 21° posto tra i linguaggi più popolari su GitHub (a ottobre 2020).
Esempio di codice
La sintassi di Perl è simile a quella del linguaggio C. L’esempio di codice Perl che segue definisce innanzitutto la subroutine square()
che calcola e restituisce il quadrato di un numero, quindi passa il valore 8 come argomento, esegue la subroutine e salva il risultato nella variabile $sq
:
sub square {
my $num = shift;
my $result = $num * $num;
return $result;
}
$sq = square(8);
Fonte: Perl docs: Perl Intro
Casi d’uso e ambienti
Anche se al giorno d’oggi non è la scelta più frequente degli sviluppatori web, Perl può essere utilizzato con successo nello sviluppo di backend. Oltre all’ambiente runtime CGI, viene eseguito anche sui server web Apache e Nginx: lo stack LAMP è in realtà LAMPP, che sta per Linux, Apache, MySQL, PHP e Perl.
Esistono anche alcuni framework di sviluppo web in Perl: Catalyst, Mojolicious e Dancer sono i più popolari.
Perl è utilizzato da numerosi siti e applicazioni di rilievo come Amazon, IMDB, Booking.com e BBC iPlayer. Viene utilizzato anche in altre aree, come la programmazione di rete e l’amministrazione di sistema. È anche possibile consultare il Comprehensive Perl Archive Network (CPAN) dove oltre 25.000 progetti Perl open-source sono disponibili per il download.
7. Lua
Lua è un linguaggio di scripting veloce e leggero. La parola “lua” significa “luna” in portoghese, in quanto il linguaggio è sviluppato e mantenuto dalla Pontificia Università Cattolica di Rio de Janeiro in Brasile. Lua supporta i paradigmi di programmazione procedurale, orientata agli oggetti e funzionale.
Dato che l’interprete di Lua è scritto in C, può essere facilmente integrato nelle applicazioni utilizzando le sue API C. Detto questo, Lua può essere utilizzato per estendere applicazioni esistenti scritte in linguaggi basati sul C come C, C++, C#, Java, Perl, Ruby e altri.
Esempi di codice
Lua ha una sintassi concisa e di facile lettura, simile a quella di Python e Ruby. Il seguente esempio di codice Lua mostra come utilizzare l’istruzione if-then-else
. Innanzitutto, valuta la variabile op
e poi esegue delle operazioni aritmetiche di base in base al suo valore:
if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a * b
elseif op == "/" then
r = a / b
else
error("invalid operation")
end
Fonte: Programming in Lua reference guide: Statements
Casi d’uso e ambienti
L’implementazione predefinita di Lua non interpreta direttamente il codice sorgente, ma lo compila prima in codice byte che poi esegue sulla macchina virtuale di Lua. Poiché tutto questo avviene in fase di esecuzione, non c’è alcuna fase di compilazione manuale da eseguire (anche se si può scegliere di compilare Lua prima dell’esecuzione per migliorare le prestazioni).
Esistono anche altre implementazioni di Lua, come LuaJIT, LuaVela e molte altre.
Lua è spesso utilizzato per sviluppare videogiochi, come Angry Birds, World of Warcraft e Grim Fandango. Essendo facile da incorporare, è anche una scelta frequente per i dispositivi embedded come decoder, i quadri strumenti delle automobili (ad esempio Volvo), le telecamere IP (ad esempio Cisco) e altri ancora.
Può essere utilizzato anche nello sviluppo web, dato che entrambi i server Apache e Nginx dispongono di un modulo Lua (ecco il mod_lua di Apache e il modulo ngx_http_lua di Nginx). Wikipedia ha scelto Lua come linguaggio di scripting per i modelli e anche l’interfaccia di Adobe Photoshop Lightroom è scritta in Lua.
8. Bash
Bash è il nome di un interprete a riga di comando (shell) per il sistema operativo GNU e del linguaggio di scripting che gli appartiene. “Linux” è, infatti, il sistema operativo GNU che utilizza il kernel Linux (un kernel è la parte centrale del sistema operativo, è il primo programma che il sistema operativo carica).
Si tratta di un sostituto dell’originale shell UNIX Bourne (sh) – l’acronimo Bash sta per “Bourne Again SHell” (un gioco di parole con “born again shell”).
Oltre a essere il superset della sintassi della shell di Bourne, Bash include anche funzioni di altri linguaggi di scripting shell come KornShell (ksh) e C shell (csh) – ad esempio, la modifica della riga di comando e la cronologia dei comandi. È possibile utilizzare Bash in modalità interattiva (eseguendo un comando alla volta e aspettando la risposta della macchina) e in modalità di scripting (eseguendo un insieme di comandi – uno script Bash – in una sola volta).
Esempio di codice
Come la maggior parte dei linguaggi di scripting CLI, Bash ha una sintassi semplice e descrittiva. Il seguente esempio di codice Bash seleziona un file dalla cartella corrente e produce un messaggio contenente il nome e l’indice del file:
select fname in *;
do
echo you picked $fname ($REPLY)
break;
done
Fonte: Bash Reference Manual: Conditional Constructs
Casi d’uso e ambienti
Bash può essere usato per apportare modifiche ed eseguire diverse azioni relative al proprio sistema operativo, come ad esempio l’esecuzione di comandi, lo svolgimento di attività che la maggior parte delle persone farebbe utilizzando un’interfaccia grafica (ad esempio la creazione, lo spostamento o l’eliminazione di cartelle e file), la personalizzazione e l’automazione di attività amministrative, la connessione a un server remoto e molte altre.
Bash è la shell predefinita di molti sistemi operativi basati su Unix, tra cui la maggior parte delle distro Linux e tutte le versioni di macOS fino a macOS Catalina, che nel 2019 ha sostituito Bash con Z shell (Zsh). È possibile eseguire script Bash anche su Windows 10, utilizzando il livello di compatibilità Windows Subsystem for Linux (WSL) sviluppato da Microsoft.
9. PowerShell
Originariamente, PowerShell era uno shell a riga di comando e un linguaggio di scripting esclusivo per il sistema operativo Windows. Da allora, Microsoft ha aperto le porte e l’ha spostata dal .NET Framework, che può creare solo applicazioni per Windows, a .NET Core, che può creare applicazioni per Windows, Linux e macOS. Ciò significa che PowerShell è ora multipiattaforma.
È stato anche rinominato da Windows PowerShell a PowerShell Core, in corrispondenza del framework sottostante. A differenza della maggior parte delle shell a riga di comando, PowerShell accetta e restituisce oggetti .NET anziché testo semplice, il che offre nuove opportunità di automazione delle attività.
Esempio di codice
PowerShell ha una sintassi compatta che rende più veloce il lavoro a riga di comando. L’esempio di codice PowerShell che segue crea un backup del file boot.ini e lo salva nel file boot.bak:
Copy-Item -Path C:boot.ini -Destination C:boot.bak
Fonte: PowerShell Documentation: Working with Files and Folders
Casi d’uso e ambienti
Si può utilizzare PowerShell sui sistemi operativi Windows, Linux, macOS e su alcuni dispositivi ARM (ad esempio indossabili, lettori multimediali, tablet e altri dispositivi elettronici di consumo).
PowerShell può essere usato per l’amministrazione del sistema, l’automazione delle attività e la gestione della configurazione. Per trovare moduli e script PowerShell, basta consultare la PowerShell Gallery e la raccolta ufficiale di script di esempio di Microsoft.
10. R
R è un ambiente software e un linguaggio di scripting che può essere utilizzato per il calcolo statistico, l’analisi dei dati e la visualizzazione grafica. È un progetto GNU gratuito e open source e un’implementazione del linguaggio di calcolo statistico S (non più in fase di sviluppo attivo).
R permette di utilizzare molte tecniche statistiche diverse come i test statistici classici, il clustering, l’analisi delle serie temporali, la modellazione lineare e non lineare e altre ancora.
Esempio di codice
La sintassi di R è diversa da quella della maggior parte dei linguaggi di scripting e presenta anche alcuni elementi insoliti: per esempio, l’operatore di assegnazione principale è <-
invece del segno di uguaglianza =
e ha dei cicli senza loop – per saperne di più sulle stranezze della sintassi di R, leggete la guida per principianti di R di Sharon Machlis.
Il seguente esempio di codice R definisce un attributo names
per il vettore fruit
(struttura dati di base in R che contiene elementi dello stesso tipo) che utilizza nomi alfanumerici (orange
, banana
, apple
, peach
) per identificare i suoi componenti. In seguito, il sottovettore lunch
(o un altro) può accedere a ogni componente utilizzando il suo nome alias:
> fruit <- c(5, 10, 1, 20)
> names(fruit) <- c("orange", "banana", "apple", "peach")
> lunch <- fruit[c("apple","orange")]
Fonte: An Introduction to R: Index vectors; selecting and modifying subsets of a data set
Casi d’uso e ambienti
L’ambiente software R è multipiattaforma: si può eseguire sui sistemi operativi Windows, Linux e macOS. L’implementazione predefinita di R è disponibile anche in altri linguaggi di scripting come Python e Perl. Ciò significa che è possibile accedere a tutte le funzionalità statistiche di R utilizzando questi linguaggi di scripting.
Oltre all’ambiente R predefinito, il linguaggio di scripting R si può utilizzare anche in altri ambienti, come pqR (acronimo di “a pretty quick version of R”) e Renjin (un’implementazione di R sulla Java Virtual Machine).
11. VBA
VBA sta per Visual Basic for Applications ed è un’implementazione del linguaggio di programmazione Visual Basic 6 (non più in sviluppo attivo dal 2008). È stato creato per le applicazioni di Microsoft Office per consentire agli sviluppatori di automatizzare attività ripetitive, aggiungere nuove funzionalità e interagire con gli utenti finali dei documenti.
Simile a Visual Basic, VBA segue il paradigma della programmazione guidata dagli eventi, che mette al centro eventi come le azioni dell’utente che guidano il flusso del programma.
Poiché le applicazioni di Microsoft Office hanno un’interfaccia grafica, si possono collegare gli script VBA ai pulsanti dei menu, alle scorciatoie da tastiera, alle macro (schemi programmabili) e agli eventi OLE (Object Linking and Embedding che permette di controllare un’applicazione da un’altra; è una tecnologia proprietaria di Microsoft).
Esempio di codice
Poiché VBA si basa su Visual Basic (che è un’estensione del BASIC), utilizza una sintassi simile a quella dei linguaggi della famiglia BASIC (Beginners’ All-purpose Symbolic Instruction Code), il che significa che è molto adatto ai principianti.
L’esempio di codice VBA che segue utilizza il metodo GetCertificateDetail()
dell’oggetto SignatureInfo
per ottenere la data di scadenza di un certificato digitale:
Sub GetCertDetails()
Dim objSignatureInfo As SignatureInfo
Dim varDetail As Variant
strDetail = objSignatureInfo.GetCertificateDetail(certdetExpirationDate)
End Sub
Fonte: Office VBA Reference: SignatureInfo object
Casi d’uso e ambienti
Il linguaggio di scripting VBA è integrato nella maggior parte delle applicazioni di Microsoft Office, rispettivamente Access, Excel, Office per Mac, Outlook, PowerPoint, Project, Publisher, Visio e Word, ognuna delle quali ha una guida di riferimento separata sul sito di documentazione di Microsoft, mentre i concetti generali di VBA sono descritti in dettaglio nella libreria di riferimento.
Oltre alle applicazioni Microsoft Office, esistono altre applicazioni che supportano il VBA, come AutoCAD e CorelDRAW.
12. Emacs Lisp
Emacs Lisp è un linguaggio di scripting specifico per il dominio progettato per l’editor di testo GNU Emacs. È un dialetto della famiglia di linguaggi di programmazione Lisp (il nome deriva da LISt Processor).
Poiché Emacs Lisp è stato progettato per essere utilizzato all’interno di un editor di codice, è dotato di un set di funzionalità specifiche per questo ambiente, come la scansione e l’analisi del testo, la gestione dei buffer (oggetti con testo modificabile) e dei display e altre ancora.
Il linguaggio di scripting di Emacs Lisp è strettamente integrato con l’interfaccia dell’editor stesso, quindi ogni comando è anche una funzione Lisp che si può richiamare dal proprio script e anche i parametri di personalizzazione sono variabili Lisp.
Esempio di codice
La sintassi di Emacs Lisp si basa su una notazione di prefissi completamente tra parentesi che può essere un po’ difficile da leggere all’inizio se non avete mai lavorato con un linguaggio Lisp.
Il seguente esempio di codice Emacs Lisp definisce due variabili (simboli) e assegna a ciascuna un elenco di valori: un elenco di alberi (pine
, fir
, oak
, maple
) al simbolo trees
e un elenco di erbivori (gazelle
, antelope
, zebra
) al simbolo herbivores
:
(setq trees '(pine fir oak maple)
herbivores '(gazelle antelope zebra))
Fonte: An Introduction to Programming in Emacs Lisp: Setting the Value of a Variable
Casi d’uso e ambienti
L’editor di testo Emacs è un’applicazione multipiattaforma che potete installare su macchine Windows, Linux e macOS.
Utilizzando il linguaggio di scripting Emacs Lisp, è possibile estendere e personalizzare l’editor di codice, ripetere e automatizzare i processi, creare grafici, limitare l’attenzione ad aree specifiche (per la sicurezza), ricercare espressioni regolari, memorizzare testo, definire modalità e mappe di tasti, porre domande agli utenti ed eseguire molte altre azioni.
Esistono anche alcuni framework di configurazione per Emacs Lisp: Doom Emacs e Spacemacs sono i più noti.
13. GML
L’acronimo GML sta per GameMaker Language. È un buon esempio di linguaggio di scripting specifico utilizzato nello sviluppo di videogiochi. GML è un linguaggio di scripting proprietario di GameMaker Studio 2, un motore di gioco multipiattaforma e una piattaforma di sviluppo di proprietà di YoYo Games.
Anche se GML viene utilizzato principalmente per controllare gli oggetti di gioco, non è un linguaggio orientato agli oggetti ma procedurale. Permette di richiamare script personalizzati da qualsiasi oggetto di gioco.
Oltre al linguaggio di scripting GML, GameMaker Studio 2 dispone anche di uno strumento di scripting visivo chiamato Drag and Drop (DnD). Grazie alla natura flessibile di GameMaker Studio 2, è possibile combinare DnD con i propri script GML.
Esempio di codice
La sintassi di GML è simile a quella di JavaScript e di altri linguaggi simili a C.
Il seguente esempio di codice GML fa muovere un oggetto di gioco orizzontalmente verso il puntatore del mouse sullo schermo a una velocità di 5 pixel per passo. Una volta raggiunta la posizione corrente del puntatore, lo script crea un livello di effetto esplosione, lo esegue (l’effetto esplosione viene visualizzato sullo schermo) e poi distrugge l’istanza (l’effetto esplosione viene rimosso):
if mp_linear_step(mouse_x, mouse_y, 5, 0) {
instance_create_layer(x, y, "Effects", obj_Explosion);
instance_destroy();
}
Fonte: GameMaker Studio 2 Docs – Scripting – GML Reference – Movement and Collisions – Motion Planning
Casi d’uso e ambienti
GML è interpretato da GameMaker Studio 2 che è necessario acquistare se si desidera sviluppare giochi in questo linguaggio di scripting.
I prezzi dipendono dalla piattaforma per cui si vogliono creare i giochi: i giochi per Mac e Windows sono i più economici; i giochi desktop multipiattaforma (Windows, macOS, Ubuntu), i giochi web HTML5, i giochi UWP (Universal Windows Platform) e i giochi mobile multipiattaforma (Android, Fire, iOS) si collocano nella fascia media; PS4, Xbox One e Nintendo Switch sono i più costosi.
Alcuni esempi di videogiochi creati con GML sono Blackhole, 10 Second Ninja X, Death’s Gambit, Deltarune e molti altri.
Riepilogo
Non c’è dubbio che i linguaggi di scripting siano affascinanti. Hanno molte varianti, sintassi e implementazioni diverse e possono essere utilizzati per moltissime cose.
Dalla costruzione di siti web dinamici, all’automazione dell’amministrazione di sistema, alla creazione di videogiochi e così via.
Le tre cose più importanti da ricordare sui linguaggi di scripting sono:
Non possono funzionare da soli, ma hanno sempre bisogno di un ambiente (implementazione, runtime) con un interprete per quel linguaggio di scripting.
A volte è possibile utilizzare linguaggi di scripting generici per accedere ad ambienti e piattaforme creati principalmente per altri linguaggi di programmazione o di scripting. Basti pensare a JRuby (che consente di eseguire Ruby sulla Java Virtual Machine), Renjin (implementazione di R anche sulla JVM), Rpy2 (interfaccia di R utilizzabile da Python), come buoni esempi.
Infine, prima di imparare un nuovo linguaggio di scripting, è sempre una buona idea verificare la sua popolarità attuale utilizzando l’indice TIOBE o GitHut.
In base a questo, potrete trovare più o meno script di esempio, repository GitHub, librerie di moduli, guide di riferimento, manuali dettagliati e vetrine di applicazioni che vi aiuteranno a iniziare a utilizzare il linguaggio… e a ottenere progetti e lavori retribuiti meglio!
TCL questo sconosciuto!
Nonostante sia il “coltellino svizzero” dei linguaggi di scripting multipiattaforma resta sconosciuto anche ai più.
Groovy, GML e Emacs Lisp si… e TCL no? Pazzesco!
Pensate che lo uso per realizzare eseguibili standalone (con estensione .exe) che possono girare praticamente identici sia su Windows che su Linux, cambiando solo il runtime (tclkit) integrato ovviamente.
Anche per applicazioni Deskop col Tcl/Tk.
Ciao,
prima scrivi: “Proprio per questa differenza di implementazione, i linguaggi di programmazione sono più veloci dei linguaggi di scripting, in quanto non devono essere compilati in tempo reale”.
Poi nella tabella scrivi:
“Linguaggi di Scripting -> Più veloce in fase di esecuzione”
Sono confuso :/
Ciao Samuele, hai ragione. Si è trattato di un errore di trascrizione. Abbiamo corretto.
Grazie per la segnalazione
Grazie per la risposta. Buona serata 🙂