L'eseguibile compilato deve contenere un parser in grado di leggere il codice di programma esterno . Il codice del programma non deve necessariamente apparire come C o Python o xyz: può essere qualsiasi tipo di dato descrittivo adatto allo scopo in questione. Ad esempio svedese o morse.
Il codice del programma esterno deve avere una sintassi , in modo che il parser lo capisca mentre lo legge carattere per carattere. La sintassi può descrivere (e il codice può contenere) identificatori, valori numerici, operatori ecc .
Il parser è fisso (compilato) ma funziona su un codice esterno flessibile.
L'eseguibile compilato deve avere un'API interna per la relativa funzionalità. in modo che il parser possa eseguire azioni. Molto probabilmente ci deve essere anche un accesso (bidirezionale) ai dati interni dell'eseguibile, oppure il parser deve fornire un qualche tipo di archiviazione e pulizia dei dati.
Il parser può leggere il codice del programma esterno all'avvio dell'eseguibile , oppure può leggerlo (parti di esso) ad hoc , oppure può rileggerlo per ogni frame (sarebbe inefficiente), oppure il codice può anche essere digitato a mano e inviato al parser mentre si prepara (come: "sposta l'unità X in avanti di 5 passi" [invio]).
In sostanza, il codice esterno non è fisso : può cambiare in qualsiasi anno, giorno o minuto, ma non è ancora necessario ricompilare l'eseguibile. Solo il comportamento risultante, ospitato dall'eseguibile, cambia.
Il testo che stai leggendo in questo momento è ( in un certo senso , e ancora di più se fosse pronunciato) interpretato perché lo "esegui" nel tuo cervello mentre lo leggi, senza sapere cosa dice la frase successiva (o anche se eventualmente, subdolamente cambia giusto adesso). Al contrario di Stack Overflow (pre) compilando l'intera storia in bytecode nel tuo cervello, che poi la esegue - e spesso non potrebbe più cambiare.
Il fenomeno in corso è l'interpretazione. Lo scripting è solo l'atto di creare un deSCRIPTion o scrivere . Tutta la codifica del computer è imo scripting: descriviamo ciò che vogliamo che accada. La parola "scripting" ha un significato leggermente inclinato, ma va bene. Sappiamo cosa intendiamo.
Non c'è assolutamente nulla di straordinario nelle lingue interpretate, e non è in alcun modo un termine discutibile . Ne esiste una moltitudine, e alcune delle più antiche vengono interpretate anziché compilate. In una lingua interpretata si potrebbe ad esempio digitare a mano:
sock = Socket.New (AddressFamily.InterNetwork, SocketType.Stream ProtocolType.Tcp) [INVIO]
... e poi fare una pausa caffè di 30 ... no, 45 minuti :-). Al ritorno, "calzino" esiste ed è pronto per un ulteriore utilizzo digitando più a mano o lasciando che l'automazione dell'interprete continui con esso.