Sviluppo: Linguaggi compilati contro linguaggi interpretati

La differenza tra un linguaggio interpretato e uno compilato sta nel risultato del processo di interpretazione o compilazione. Un interprete produce un risultato da un programma, mentre un compilatore produce un programma scritto in linguaggio assembly. L’assemblatore dell’architettura poi trasforma il programma risultante in codice binario.

Un programma compilato non è leggibile dall’uomo, ma è invece in un linguaggio macchina specifico dell’architettura. È quello in cui il programma, una volta compilato, è espresso nelle istruzioni della macchina di destinazione. Per esempio, un’operazione di addizione “+” nel vostro codice sorgente potrebbe essere tradotta direttamente all’istruzione “ADD” nel codice macchina.

La creazione di un programma compilato richiede diversi passi. In primo luogo, il programmatore, usando uno strumento di sviluppo o anche un semplice editor di testo, scrive il codice sorgente in un linguaggio informatico scelto. Se il programma è complesso, parti di esso possono essere sparse in diversi file. Il programmatore poi compila il programma, ordinando e collegando i moduli e traducendo il tutto in codice macchina che il computer capisce.I moderni IDE (Interface Development Environment) la fase di compilazione è fatta in modo molto facile e senza soluzione di continuità, solo facendo qualche clic.

In un programma interpretato, tuttavia, il codice sorgente è tipicamente è programma. Spesso conosciuti come script, richiedono un interprete, che analizza i comandi nel programma e poi li esegue. Il vantaggio di uno script è che è molto portabile. Le istruzioni non sono eseguite direttamente dalla macchina di destinazione, ma sono invece lette ed eseguite da qualche altro programma. Seguendo l’esempio precedente dell’addizione, la stessa operazione “+” in questo tipo di linguaggi, verrebbe riconosciuta dall’interprete a tempo di esecuzione, che poi chiamerebbe la propria funzione “add(a,b)” con gli argomenti appropriati, che poi eseguirebbe l’istruzione “ADD” in codice macchina. Qualsiasi computer che abbia l’interprete appropriato installato può eseguire il programma più o meno senza modifiche. Questo è anche uno svantaggio, perché il programma non verrà eseguito affatto se l’interprete non è disponibile. In generale, i programmi interpretati sono più lenti dei programmi compilati, ma sono più facili da correggere e rivedere.

Si può fare tutto ciò che si può fare in un linguaggio interpretato in un linguaggio compilato e viceversa sono entrambi Turing completi. Entrambi però hanno vantaggi e svantaggi per l’implementazione e l’uso.

Svantaggi dei linguaggi compilati

I programmi compilati in codice nativo a tempo di compilazione di solito tendono ad essere più veloci di quelli tradotti a tempo di esecuzione, a causa dell’overhead del processo di traduzione.

Svantaggi dei linguaggi compilati

Gli svantaggi più notevoli sono:

  • Tempo addizionale necessario per completare l’intera fase di compilazione prima del test.
  • Dipendenza dalla piattaforma del codice binario generato.

Svantaggi dei linguaggi interpretati

Fornisce l’implementazione con una certa flessibilità addizionale rispetto alle implementazioni compilate. Poiché gli interpreti eseguono loro stessi il codice sorgente del programma, il codice stesso è indipendente dalla piattaforma. Altri vantaggi includono la tipizzazione dinamica e la dimensione ridotta del programma eseguibile.

Svantaggi dei linguaggi interpretati

  • Gli interpreti possono essere suscettibili di attacchi Code injection.
  • Esecuzione più bassa rispetto all’esecuzione diretta del codice macchina nativo. Una tecnica usata per migliorare le prestazioni è la compilazione just-in-time che converte sequenze frequenti di istruzioni interpretate in codice macchina host.
  • Il codice sorgente può essere letto e copiato, o più facilmente reingegnerizzato attraverso la riflessione in applicazioni dove la proprietà intellettuale ha un vantaggio commerciale. In alcuni casi, l’offuscamento è usato come parziale difesa contro questo.

Nella Wikipedia è possibile trovare una lista di linguaggi compilati:

Nella Wikipedia è possibile trovare anche una lista di linguaggi interpretati:

Via:

Lascia un commento