Codice incrociato "Macchina"?

4

Alcune lingue (principalmente quelle realizzate negli ultimi 2 decenni circa) ora possono essere eseguite non solo (dopo qualche passo di compilazione o direttamente) su più piattaforme, ma possono anche essere compilate per essere eseguite su diverse macchine virtuali.

Ad esempio, prendi Scala . Il puro codice Scala può essere interpretato, compilato per essere eseguito sulla JVM (Java Virtual Machine) o può essere compilato per l'esecuzione utilizzando .NET Framework.

I vantaggi dell'indipendenza dalla piattaforma messi da parte, quali sono esattamente i vantaggi di scrivere codice che può essere compilato su diverse macchine virtuali e runtime?

    
posta ApprenticeHacker 25.12.2011 - 13:43
fonte

2 risposte

5

È più semplice scrivere i compilatori intermedi - uno per il bytecode / IL (qualunque) dalla tua sorgente e uno per bytecode / IL (qualunque) per il codice nativo.

Ti permette anche di creare nuove lingue e indirizzare il bytecode o scrivere un nuovo bytecode su un nuovo processore e avere automaticamente una nuova piattaforma disponibile.

Vedi questo post del blog di Eric Lippert (uno del compilatore C # e degli autori delle specifiche) sull'argomento.

    
risposta data 25.12.2011 - 13:47
fonte
3

Oltre a ciò che Oded ha detto, è molto più facile scrivere programmi che generano dinamicamente il codice in fase di runtime: tutto ciò che devi fare è emettere bytecode, (o CIL, o "cross code code" o qualsiasi altra cosa tu lo chiami ,) che ha un set di istruzioni ridotto e allo stesso tempo di livello relativamente alto.

    
risposta data 25.12.2011 - 19:56
fonte