Interprete o macchina virtuale che non esegue bytecode

4

Gli sviluppatori del linguaggio Dart dicono che esiste una macchina virtuale che esegue istruzioni scritte in linguaggio Dart. Qual è la differenza tra un interprete e una macchina virtuale che esegue una lingua?

Fino ad ora le macchine virtuali che conoscevo, come Java Virtual Machine, Common Language Runtime e Dalvik eseguivano tutti bytecode compilato in precedenza da un linguaggio di programmazione.

Come funziona una macchina virtuale che esegue direttamente un linguaggio di programmazione?

    
posta Виталий Олегович 16.11.2013 - 08:05
fonte

3 risposte

2

Probabilmente funziona come una normale macchina virtuale, ma invece di tradurre bytecode in codice macchina, traduce la lingua in codice macchina. Questo potrebbe essere diverso da un interprete avendo un compilatore JIT che inizia a compilare il codice nel linguaggio macchina e mantiene questo codice da eseguire mentre un interprete traduce in codice macchina ogni volta che viene eseguita un'istruzione.

    
risposta data 16.11.2013 - 08:26
fonte
7

E come pensi che sia stato creato il bytecode? Molto probabilmente qualcosa ha letto le dichiarazioni scritte in una lingua e convertito in bytecode. Ad esempio, i compilatori Java e C # lo fanno entrambi.

Dart VM salta questo passaggio e legge direttamente le dichiarazioni. In realtà è abbastanza comune per le lingue interpretate farlo. Ad esempio, JavaScript e PHP erano entrambi così prima che diventasse necessario migliorare le prestazioni e aggiungere la fase di generazione del bytecode nel processo di runtime.

    
risposta data 16.11.2013 - 08:11
fonte
1

Il 1K (non un errore di battitura) di base per i primi computer domestici e i loro discendenti più robusti, funzionava interpretando direttamente dal codice sorgente. Bill Gates non era un brutto scherzo!

    
risposta data 16.11.2013 - 19:40
fonte

Leggi altre domande sui tag