Penso che il modo più semplice per risolvere questo problema, mentalmente, è solo rendersi conto che tutto finisce come codice macchina comunque. Come è finito come codice macchina è la storia , e la storia ha certamente un significato per noi come persone, ma ai computer non importa quale sia la storia del codice macchina . Fanno solo ciò che il set di istruzioni di livello più basso dice loro di fare.
Mentalmente, potremmo pensare in questo modo:
- Qualcuno ha scritto il codice macchina appropriato per consentire, ad esempio, C.
- C è stato usato per scrivere C-Plus-Classes
- C ++ si abitua a creare un'implementazione, per esempio, di Java.
Pertanto, giustifichiamo la convinzione che qualsiasi cosa in Java debba essere più lenta di qualsiasi altra cosa, per esempio, in Assembler. Ma ... non è così che funziona davvero!
Come funziona davvero oggigiorno
- Il computer esegue il codice macchina.
Oppure, per coloro che vogliono prendere in considerazione bytecode:
- Il codice macchina (JIT) trasforma bytecode in codice macchina. (il tempo di avvio è più lento, forse)
- Il computer esegue il codice macchina.
Tutto il codice finisce nello stesso posto, quindi il lungo percorso che ci è voluto per arrivarci non influisce necessariamente sul modo in cui viene eseguito.
A volte c'è un livello extra, come con JavaScript che non viene mai compilato sul codice macchina prima di essere eseguito, ma il codice macchina trasforma anche quella roba in codice macchina. Tutto finisce nello stesso posto, nella CPU e nella RAM. Qualche codice macchina non è efficiente come un altro codice macchina, ma il modo in cui quel codice è stato scritto non ha molta importanza: a volte il codice macchina scrive il miglior codice macchina e, a volte, una scrittura umana lo avrebbe fatto diversamente e in quel modo sarebbe stato meglio. Ora, grazie ad alcuni umani molto intelligenti, è davvero una cosa rara, e le differenze sono in genere troppo piccole per cui preoccuparsi.
Quindi, indipendentemente dal fatto che il compilatore fosse o meno avviato, e che la compilazione avvenga in ritardo, o in anticipo, o appena in tempo, o solo tramite il servizio di posta con un SASE in Bangladesh, il risultato non è necessariamente limitato dal il percorso ha preso la stessa destinazione.