CONTATTACI

Blog

Differenze tra linguaggi di programmazione compilati e interpretati

Spesso quando ci si approccia alla programmazione la nozione di linguaggio compilato e interpretato viene totalmente omessa e si passa dopo pochissimo tempo alla realizzazione del primo programma “Hello World”. Spesso ciò accade senza essere del tutto consapevoli delle meccaniche che, ad esempio, stanno dietro al nostro semplice print() in python. 

Non tutti i linguaggi funzionano allo stesso modo, anzi, ogni linguaggio nasce per ovviare a carenze e mancanze presenti negli altri linguaggi esistenti. Eppure possiamo dividere i linguaggi di programmazione in due macrocategorie a seconda di come essi comunichino con il processore. Si parla quindi di linguaggi compilati e interpretati.

Rifacendoci all’esempio precedente la funzione print() di python risulta essere molto veloce in termini di programmazione, è necessario unicamente digitare il comando inserendo la scritta che vogliamo stampare all’interno delle parentesi. 

Pensando al linguaggio C sorge spontaneo chiedersi perché fare più fatica dovendo includere la libreria, creare il main, scrivere la funzione (printf) e ricordarsi i “;” che terminano il comando. 

Ovviamente i programmatori che utilizzano C non possono essere degli sconsiderati, nessuno si complicherebbe mai così tanto la vita. 

Ebbene i motivi dietro a questa diversità li possiamo riscontrare nella natura stessa dei linguaggi, Python è un linguaggio interpretato e C è un linguaggio compilato.

 

Linguaggi compilati

 

La differenza tra i linguaggi compilati e i linguaggi interpretati è racchiusa nel modo in cui essi interagiscono con il computer. E’ nozione comune che i computer si esprimano e capiscano il codice binario, eppure sopra ho chiaramente parlato di funzioni scritte in lingua inglese (print). Ebbene in un linguaggio compilato queste funzioni, richiamate spesso da terminologia inglese, vengono convertite in Assembly attraverso il compilatore e successivamente assemblate in linguaggio binario in modo che il pc possa leggerle.

L’Assembly però è un codice che varia a seconda della famiglia dei processori risulta quindi molto dispendioso in termini di tempo ed energie scrivere un programma per ogni codice Assembly. La soluzione sta quindi nello scrivere un programma di alto livello che possa essere universale. Rimane però il problema che per effettuare delle modifiche si dovrà accedere al codice sorgente, cambiare il necessario e convertirlo nuovamente.

Il file così ottenuto però sarà un file binario che ad ogni lancio non avrà bisogno di essere convertito, vengono quindi separate le fasi di conversione e di lancio, e in assenza di modifiche la conversione verrà realizzata una sola volta indipendentemente da quante volte il programma verrà lanciato.

Una rappresentazione concreta di questa separazione possiamo individuarla in Ubuntu, dopo aver scritto il file lo si converte con il comando gcc FILE.c ottenendo un file binario di nome FILE. Una volta ottenuto questo file per lanciare il programma basterà scrivere ./FILE ogni volta che lo si vuole utilizzare, il programma non è quindi rappresentato dal codice sorgente ma dal FILE binario.

 

Linguaggi Interpretati

 

Per procedere con la spiegazione di questa seconda famiglia di linguaggi ci rifaremo all’etimologia stessa, Interpretati. Il processo di interpretazione consiste nella traduzione di un linguaggio in un altro linguaggio, in questo si tratta della traduzione dal linguaggio scelto in linguaggio binario in modo che il pc possa leggerlo ed eseguirlo.

La differenza con i linguaggi compilati sta nel fatto che il programma di un linguaggio compilato è rappresentato dal file già scritto in binario che una volta lanciato viene letto direttamente ed eseguito. Nei linguaggi interpretati il programma è rappresentato dal codice sorgente che ogni volta viene prima tradotto e poi compilato, con un conseguente calo di prestazioni. Eppure ciò permette una maggiore semplicità a livello di sintassi, come mostrato all’inizio con python, ma soprattutto permette al programma di girare in ogni macchina con ogni sistema operativo.

 

Linguaggi compilati e interpretati: i linguaggi pseudocompilati

 

Alcuni linguaggi, come Java, vengono compilati in un linguaggio intermedio come, in questo caso, il Bytecode che poi grazie alla Java Virtual Machine viene interpretato in istruzioni per il processore. Ciò permette di aver file leggeri, il Bytecode genera file di piccole dimensioni, ma permette anche di far girare il programma su ogni macchina grazie all’intervento di un sistema di interpretazione che non dipende dalla macchina.

 

Differenze, Vantaggi e Svantaggi tra linguaggi di programmazione interpretati e compilati

 

Linguaggi Compilati

Linguaggi Interpretati

Un linguaggio compilato genera un file binario non modificabile

Un linguaggio interpretato è scritto in un linguaggio di programmazione definito e modificabile in ogni momento

Le istruzioni vengono inviate direttamente al processore

Le istruzioni necessitano di una traduzione prima di arrivare al processore

Per eseguire il programma dal codice sorgente si necessitano due step separati

Il codice sorgente viene eseguito attraverso un unico comando

Essendo il programma già tradotto l’esecuzione risulta essere più veloce

Il programma deve essere tradotto ogni volta aumentando i tempi di esecuzione

Il programma può essere eseguito solo in determinate macchine e sistemi operativi

Il programma funziona su ogni macchina e sistema

Gli errori di compilazione impediscono al codice di essere compilato

Gli errori di compilazione sono visibili solo se il programma viene lanciato

Esempi di linguaggi Compilati sono C, C++, Delphi…

Esempi di linguaggi Interpretati sono Python, Javascript, Perl, PHP…

 

Al momento esistono molti linguaggi, alcuni più facili da imparare, altri più difficili, alcuni più veloci e altri più lenti, ma l’abilità di un programmatore sta nell’utilizzare il linguaggio giusto per il giusto progetto. Ogni linguaggio ha il suo motivo di esistere e possiede della caratteristiche che lo rendono unico, l’unica cosa da fare è studiare, imparare, e migliorare sempre di più.

Articoli correlati

Il linguaggio HTML (Hypertext Markup Language) è uno dei più conosciuti e diffusi: lo si trova infatti praticamente in tutte le pagine web esistenti. È una scelta popolare tra i principianti che si…

Seguici su Facebook

Vuoi entrare nel mondo della programmazione?

Scopri di più sui nostri corsi!

Chiamaci al numero verde

Contattaci su WhatsApp

Contattaci senza impegno per informazioni sul corso

Pagamento rateale

Valore della rata: A PARTIRE DA 115 €/mese.

Esempio di finanziamento 

Importo finanziato: € 2440 in 24 rate da € 115 – TAN fisso 9,55% TAEG 12,57% – importo totale del credito € 2841.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

*In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 210 €/mese.

Esempio di finanziamento  

Importo finanziato: € 4500 in 24 rate da € 210,03 – TAN fisso 9,68% TAEG 11,97% – importo totale del credito € 5146,55.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Contattaci senza impegno per informazioni sul corso

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.