In primo luogo, i linguaggi di scripting NON vengono generalmente compilati . Questa è una grande parte di ciò che generalmente li definisce come linguaggi di scripting. Spesso vengono invece "interpretati". Ciò significa essenzialmente che esiste un'altra lingua (una che viene compilata, il più delle volte) che sta leggendo il testo, in tempo reale, e sta eseguendo operazioni riga per riga.
La differenza tra questo e altri linguaggi è che i linguaggi di scripting tendono ad essere più semplici (comunemente definiti "livello superiore"). Tuttavia, tendono anche ad essere un po 'più lenti, poiché i compilatori tendono a ottimizzare molti dei problemi che derivano dall'elemento umano della codifica e il binario risultante tende a essere più piccolo e più veloce da leggere per la macchina. Inoltre, è necessario eseguire meno sovraccarichi da un altro programma per leggere il codice in esecuzione, con i programmi compilati.
Ora potresti pensare: "Beh, capisco che è un po 'più facile, ma perché mai qualcuno dovrebbe rinunciare a tutte quelle prestazioni per un po' più di facilità d'uso?"
Non saresti solo in questa ipotesi, tuttavia il livello di facilità che tendi ad avere con i linguaggi di scripting, a seconda di cosa stai facendo con loro, può valere la pena sacrificare le prestazioni.
Fondamentalmente: per i casi in cui la velocità di sviluppo è più importante della velocità del programma in esecuzione, utilizzare un linguaggio di scripting. Ci sono MOLTE situazioni come questa nello sviluppo del gioco. Soprattutto quando si tratta di cose insignificanti come la gestione di eventi di alto livello.
Modifica: il motivo per cui lua tende ad essere piuttosto popolare nello sviluppo del gioco è perché è probabilmente uno dei linguaggi di scripting pubblicamente disponibili più veloci (se non il più veloce) sulla terra. Tuttavia, con questa velocità extra, ha sacrificato alcune delle sue comodità. Detto questo, è ancora probabilmente più conveniente che lavorare con C o C ++ direttamente.
Modifica importante: dopo ulteriori ricerche, ho scoperto che ci sono molte più controversie sulla definizione di un linguaggio di scripting (vedi la dicotomia di Ousterhout ). La critica principale alla definizione di un linguaggio come "linguaggio di scripting" è che non è né significativo per la sintassi né per la semantica del linguaggio che viene interpretato o compilato.
Mentre le lingue che sono generalmente considerate "linguaggi di scripting" sono generalmente tradotte tradizionalmente, piuttosto che compilate, la lunga e breve della loro definizione di "linguaggi di scripting" dipende in realtà da una combinazione di come le persone le vedono e di come le definiscono i loro creatori.
In generale, una lingua potrebbe essere facilmente considerata un linguaggio di scripting (supponendo che tu sia d'accordo con la dicotomia di Ousterhout) se soddisfa i seguenti criteri (secondo l'articolo collegato sopra):
- Sono digitati in modo dinamico
- Hanno poca o nessuna disposizione per strutture dati complesse
- I programmi in essi contenuti (script) vengono interpretati
Inoltre, è spesso accettato che un linguaggio sia un linguaggio di scripting se è progettato per interagire e funzionare insieme a un altro linguaggio di programmazione (di solito uno che non è considerato un linguaggio di scripting).