BorderGame
Differenza tra linguaggi compilati, interpretati e pseudocompilati - Versione stampabile

+- BorderGame (https://www.bordergame.it)
+-- Forum: Programmazione (/Forum-Programmazione--158)
+--- Forum: Programmazione (/Forum-Programmazione)
+--- Discussione: Differenza tra linguaggi compilati, interpretati e pseudocompilati (/Thread-Differenza-tra-linguaggi-compilati-interpretati-e-pseudocompilati)



Differenza tra linguaggi compilati, interpretati e pseudocompilati - scl - 16-11-2014 05:22 PM

Prima di capire come 'funzionano' questi linguaggi devo fare una breve parentesi:
  • Compilazione
    1. Traduzione ed esecuzione sono svolte in tempi diversi
    2. Al termine della compilazione viene creata una versione tradotta del programma in un file eseguibile
    3. La versione tradotta è specifica della macchina
    4. La versione eseguibile può essere eseguita da qualsiasi altro computer
  • Interpretazione
    1. Traduzione ed esecuzione sono svolte allo stessp tempo (a dir la verità una subito dopo l'altra)
    2. Al termine dell'interpretazione non vi è alcuna versione tradotta del programma
    3. Per eseguire il programma devi ritradurlo e rieseguirlo da capo





  • Analizziamo un pò più a dettagli i linguaggi compilati.
    La trasformazione da linguaggio di programmazione x al linguaggio macchina (formato da soli 0 e 1, linguaggio binario) avviene grazie al compilatore che tramite diversi passi:
    1. processing, vengono trascurati i commenti e vengono inclusi file e librerie nel sorgente
    2. scanning, riconosce la sintassi del linguaggio di programmazione (comandi, dati, numeri, identificatori etc..)
    3. parsing, controlla che la sintassi del linguaggio sia corretta
    4. analisi semantica, controlla il "significato" di ciò che è scritto nel codice sorgente, controllando per esempio la coerenza tra tipi di dati
    5. generazione del codice, viene effettuata la traduzione del linguaggio di programmazione in linguaggio ASM generando il programma che sarà eseguito dalla macchina
    6. creazione eseguibile, viene salvata una copia del programma in un file eseguibile, mediante il linker (.exe per esempio)


    Durante queste fassi il compilatore cerca gli errori e se questi sono presenti avvisa il programmatore bloccando tutta la compilazione.

    Analizziamo ora invece i linguaggi interpretati.
    La trasfromazione dal codice sorgente al codice eseguibile avviene grazie all'interprete avviene istruzione per istruzione; a differenza del compilatore l'interprete prende un'istruzione alla volta e l'analizza (e nel caso non ci fossero errori) la trasforma in codice macchina e la manda subito in esecuzione.
    I linguaggi interpretati sono maggiormente portatili, permettono al programmatore di capire in che istruzione è presente l'errore, ma hanno come difetto la lentezza siccome in genere perchè ogni volta che si esegue il programma si deve far tradurre e eseguire tutto da capo.

    Concludiamo la guida con i linguaggi pseudocompilati.
    In breve, in questi linguaggi il codice sorgente viene compilato in un codice intermedio simile all'ASM e dopo viene eseguito da un interprete.
    In questo modo in termini di velocità esecuzione questi linguaggi possiamo inserirli a metà tra i compilati e gli interpretati, con il bello di avere una grandissima portabilità.
    Un esempio può essere il Java dove il sorgente traduce il programma in linguaggio Java (.java) in un file bytecode (.class) e poi la Java Virtual Machine lo interpreta.
    Un altro esempio è il caso dei linguaggio .NET (dot NET) della piattaforma .NET framework di Microsoft (esempi intuitivi VB.NET, C#, ASP.NET, F#).
    Questi a stesso modo del Java, vengono tradotti in un linguaggio intermedio chiamato MSIL (Microsoft Intermediate Language) eseguito poi da appositi compilatori che ottimizzano il codice a seconda dell'hardware del calcolatore. Lo convertono poi in linguaggio macchina e lo eseguono, creando anche un eseguibile.


    Pamperone, per Bordergame[censured]