Differenza tra Linguaggi Compilati ed Interpretati

Articolo approfondimento del di

Linguaggi Interpretati e Compilati

Spesso nel campo della programmazione va di moda questa frase: " più un linguaggio è di alto livello e semplificato più è efficiente".

Questa frase è sbagliatissima, perché maggiore è il grado di astrazione di un linguaggio maggiore saranno le risorse che impiegherà per essere eseguito, questo concetto può essere facilmente distinguibile con i linguaggi compilati e quelli interpretati, i primi nati per limitare le differenze hardware i secondi per quelle software.

I linguaggi di Programmazione Compilati

Quando si scrive un programma, questo per funzionare deve essere letto dalla macchina. La macchina però è in grado solo di leggere sequenze di zeri e di uno e quindi nasce la necessità di un vero e proprio traduttore.

Tradurre però un linguaggio di programmazione di alto livello direttamente in binario è un operazione praticamente impossibile, il codice quindi dovrà prima essere tradotto in Assembly tramite il compilatore e successivamente potrà essere ritradotto in binario tramite un assemblatore.

L'Assembly purtroppo varia da macchina a macchina, in quanto ogni famiglia di processori ha un codice Assembly differente, scrivere quindi lo stesso programma tante volte in diversi dialetti Assembly, per utilizzarlo su altri processori, è un operazione dispendiosa in termini di tempo e denaro, quindi vengono utilizzati linguaggi di alto livello che garantiscono la portabilità del codice.

I linguaggi di programmazione compilati, vengono letti immediatamente dalla macchina, ma per essere avviati devono essere per lo appunto prima "compilati" separatamente cioè trasformati in linguaggi macchina e poi successivamente inviati a quest'ultima. Se si desidera effettuare delle modifiche al programma, si dovrà modificare il codice sorgente rieffettuando la compilazione da capo sostituendo il vecchio il file.

I linguaggi di Programmazione Interpretati

I linguaggi interpretati sono nati dopo quelli compilati dalla necessità di sviluppare programmi in grado di essere eseguiti su qualsiasi computer, indipendentemente dal sistema operativo del dispositivo. Questi linguaggi vengono detti interpretati e la loro "traduzione" richiede un passaggio in più che porta inevitabilmente ad un consumo più alto di memoria ed ad una velocità d'esecuzione ridotta rispetto ad uno compilato.

I linguaggi interpretati hanno il vantaggio però di essere estremamente versatili, ad esempio i programmi scritti in Python o PHP vengono "tradotti" nello stesso momento in cui vengono eseguiti, vengono eseguiti da una macchina virtuale e posso essere utilizzati indipendentemente su qualsiasi sistema.

"L'essere tradotti nello stesso momento in cui vengono eseguiti" potrebbe sembrare un vantaggio, ma in realtà non è così, i linguaggi compilati vengono tradotti in Assembly e successivamente fatti girare, una volta effettuata la traduzione non c'è bisogno di effettuarla nuovamente, mentre quelli interpretati devono essere tradotti ogni volta che vengono lanciati e questa traduzione richiede sempre una notevole quantità di tempo e risorse.

Linguaggi di programmazione pseudocompilati

Questi tipi di linguaggi, come suggerisce il nome, sono una via di mezzo tra quelli interpretati e quelli compilati. Un programma scritto in questo linguaggio viene compilato, ma non in assembly, ma in un codice simile che sarà successivamente interpretato. no dei più famosi linguaggi Pseudo-compilati è Java.

Il Linguaggio Migliore

Qual'è il linguaggio più efficiente di tutti che viene eseguito nel minor tempo possibile utilizzando meno risorse possibile?

I programmi scritti in Assembly hanno queste caratteristiche, purtroppo l'Assembly cambia da processore in processore e l'unico difetto è la portabilità, ma in quanto efficienza i programmi scritti interamente in Assembly non hanno nulla a che vedere con programmi di alti livello che richiedono numerosi passaggi prima di essere eseguiti.

Immagini correlate


Link utili