Compilatori e Interpreti

di il
3 risposte

Compilatori e Interpreti

Da quello che ho capito, a grandissime linee, un compilatore compila il linguaggio di alto livello (es. C++) in codice oggetto, o linguaggio macchina, per il computer, che poi lo esegue. Non mi è molto chiaro cosa fa, o meglio, come fa, l'interprete...

Da Wikipedia:

Un interprete, in informatica e nella programmazione, è un programma in grado di eseguire altri programmi a partire direttamente dal relativo codice sorgente. Ha lo scopo di eseguire un programma in un linguaggio di alto livello, senza la previa compilazione dello stesso (codice oggetto) cioè di eseguire le istruzioni nel linguaggio usato, traducendole di volta in volta in istruzioni in linguaggio macchina.

Come può l'interprete eseguire direttamente un programma a partire dal codice sorgente?

3 Risposte

  • Re: Compilatori e Interpreti

    In realtà esegue sempre codice macchina ma lo fa linea per linea, senza conservare il codice stesso.
  • Re: Compilatori e Interpreti

    Non a caso si chiama interprete. È come "l'interprete umano"... Traduce realtime da una lingua ad un altra! Non a caso i programmi interpretati sono più lenti dei compilati. La cosa positiva incece è che modificando il codice puoi vedere subito gli effetti senza dover ricompilare tutto. Lascia perdere piccoli programmi dove non apprezzi la differenza. Pensa per grossi programmi che devono gestire grosse moli di dati, li la differenza la si sente!!!
  • Re: Compilatori e Interpreti

    Dipende se hai un interpre "puro" o meno. Con un interprete puro effettivamente ogni riga del codice sorgente viene tradotta direttamente.
    Tuttavia ci sono casi ibridi in cui prima c'è una fase di compilazione e poi una fase di interpretazione. Ad esempio in JAVA (sebbene parecchi pensino in maniera errata che JAVA sia un linguaggio puramente interpretato), c'è prima una fase di compilazione dal file .java al file .class. L'insieme dei file .class, racchiusi nel file .jar(l'eseguibile per la JVM - Java Virtual Machine), rappresentano la compilazione del codice sorgente in Bytecode (il codice macchina della JVM). Solo in fase di esecuzione questo Bytecode viene effettivamente interpretato, e quindi tradotto riga per riga nel linguaggio macchina del sistema ospitante.

    Questo è proprio uno dei vantaggi di Java, tanto è vero che il loro motto è "Write once, run anywhere", nel senso che una volta che hai il tuo codice sorgente, non ti resta che compilarlo una sola volta nel Bytecode della Java Virtual Machine, poi sarà quest'ultima in base al sistema operativo (Windows/Mac/Linux) a tradurre il Bytecode nel codice macchina giusto, tutto questo senza toccare mai il codice. Java viene considerato portatile proprio per queste motivazioni, a differenza ad esempio del C\C++ che ti richiede di compilare ogni volta che cambi sistema operativo.
Devi accedere o registrarti per scrivere nel forum
3 risposte