Sto lavorando al mio linguaggio di programmazione giocattolo. Per ora sto interpretando il linguaggio sorgente da AST e mi chiedo quali vantaggi compili per un codice byte e quindi l'interpretazione possa fornirmi.Quali sono le motivazioni alla base della compilazione in byte-code?
Per ora ho tre cose in mente:
- Lettura delle centinaia di alberi di sintassi di tempo può essere più lenta esecuzione istruzioni in una matrice, in particolare se il supporto di matrice O (1) ad accesso casuale (es. saltare 10 istruzioni su e giù).
- In ambiente di esecuzione tipizzato, ho alcuni costi di runtime perché il mio AST è digitato, e lo sto attraversando costantemente (cioè ho 10 tipi di nodi e devo controllare di che tipo sono ora per eseguire). Forse la compilazione di un codice byte non tipizzato potrebbe aiutare a migliorare questo, poiché dopo il controllo dei tipi e la compilazione, avrei un valore e un codice non tipizzato.
- La compilazione a byte-code può fornire una migliore portabilità.
I miei punti sono corretti? Quali sono alcune altre motivazioni dietro la compilazione in bytecode?
Correndo su un interprete aumenta la portabilità del tuo codice – Luis
@Luis, sì questo era già nella mia mente, ho dimenticato di aggiungere .. – sinan
@Luis: è falso. Gli AST serializzati possono essere resi ugualmente portabili. Bytecode potrebbe infatti non essere portatile; Bytecode Python è specifico per ogni versione dell'interprete. –