Ciao a tutti, vorrei sapere quali sono le principali differenze a tempo di esecuzione fra un programma compilato e uno interpretato?
Qualcuno può gentilmente aiutarmi ?
Grazie!!!
Ciao a tutti, vorrei sapere quali sono le principali differenze a tempo di esecuzione fra un programma compilato e uno interpretato?
Qualcuno può gentilmente aiutarmi ?
Grazie!!!
quello compilato ha tempo di start-up inferiore?
Alla batteria dai retta ballA
ne sei sicuro al cento per cento?
Io al massimo sarei portato a pensare il contrario essendo l'approccio interpretato piu veloce e immediato.
Chi sa qls è il benvenuto !
non al 100%
http://it.wikipedia.org/wiki/Linguaggio_interpretato
http://it.wikipedia.org/wiki/Linguaggio_compilatoIn compenso, l'interpretazione di un programma può essere più rapida del ciclo compilazione/esecuzione. Questa differenza può costituire un vantaggio durante lo sviluppo, specialmente se questo viene condotto con tecniche di fast prototyping, o durante il debugging. Inoltre, la maggior parte degli interpreti consentono all'utente di agire sul programma in esecuzione sospendendolo, ispezionando o modificando i contenuti delle sue variabili, e così via, in modo spesso più flessibile e potente di quanto si possa ottenere, per il codice compilato, da un debugger.
...Il file programma compilato è immediatamente eseguito dal sistema operativo. In fase di lancio e di esecuzione, un programma compilato è quindi più veloce.![]()
Alla batteria dai retta ballA
"Veloce e immediato" un tubo, per eseguire un programma interpretato il sistema deve prima caricare un programma compilato (l'interprete), che spesso è di dimensioni non indifferenti, il quale si occuperà, poi di interpretare il codice. Un eseguibile compilato, invece, è codice eseguibile quasi direttamente dal processore, per cui il tempo di avvio è quasi immediato.Originariamente inviato da signoresignori
Io al massimo sarei portato a pensare il contrario essendo l'approccio interpretato piu veloce e immediato.
I "quasi" della frase precedente si riferiscono al fatto che comunque gli eseguibili non sono codice caricabile ed eseguibile in memoria "al volo", ma prima di poterli eseguire il sistema operativo deve mapparli in memoria, creare uno stack per il thread principale del processo, caricare le dll a cui fanno riferimento (se sono tante l'operazione può richiedere del tempo, specie se vanno rilocate in memoria), sistemare tutti gli RVA con i valori effettivi in memoria, inizializzare la IAT ed effettuare una serie di altre operazioni di inizializzazione (quelle citate sono riferite in particolare agli eseguibili PE Windows, ma operazioni analoghe si applicano agli eseguibili di quasi tutte le piattaforme). Esse naturalmente sono necessarie anche per l'interprete di un linguaggio interpretato, che spesso poi è un programma particolarmente grosso (più tempo per caricare in memoria l'eseguibile).
Quanto poi a tempo di esecuzione, la questione non è semplicissima. Un linguaggio compilato è generalmente più veloce (se il compilatore è ben fatto), anche se un interprete particolarmente furbo può in alcuni casi avvantaggiarsi della conoscenza dello stato attuale del programma (di cui il compilatore, al momento di compilare, ovviamente non può sapere nulla) per ottimizzare l'esecuzione.
Amaro C++, il gusto pieno dell'undefined behavior.
Sorvolando sul titolo poco significativo, che peraltro chiama in causa il linguaggio C senza sfiorarlo nemmeno, la questione è già stata dibattuta su parecchi newsgroup e molto probabilmente anche su questo forum in passato, oltre ad essere affrontata generalmente su molti siti che parlano di programmazione, con tutte le informazioni del caso.
Non trattandosi comunque di un problema specifico con un linguaggio di programmazione, e considerando quanto detto sopra, anche tenendo conto del rischio "flame" che una discussione di questo tipo tende sempre a generare, meglio chiudere.
Per ottenere una risposta soddisfacente, è sufficiente leggere siti o manuali che generalmente rispondono in modo diretto ed esaustivo a questa domanda, che è posta in termini troppo generici ("velocità" non vuol dire nulla, poiché vi sono tempi di avviamento, di esecuzione, di creazione degli oggetti e di rilascio della memoria non deterministici e altri fattori che concorrono a mitigare la risposta definitiva che si sta cercando, e che non c'è nei termini in cui è stata posta la questione, cioè senza specificità).
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...