Domanda

Ora sto imparando Perl. Quali sono i pro e i contro delle lingue interpretate?

È stato utile?

Soluzione

Copia palese da wikipedia , quindi realizzerò questa community wiki.

Vantaggi delle lingue interpretate

Le lingue interpretate offrono ai programmi una certa flessibilità in più rispetto alle lingue compilate. Le funzioni che sono più facili da implementare negli interpreti che nei compilatori includono (ma non sono limitate a):

  • indipendenza dalla piattaforma (ad esempio il codice byte di Java)
  • riflessione e uso riflessivo del valutatore (ad es. una funzione di valutazione del primo ordine)
  • digitazione dinamica
  • facilità di debug (è più facile ottenere informazioni sul codice sorgente in lingue interpretate)
  • dimensioni ridotte del programma (poiché le lingue interpretate hanno la flessibilità di scegliere il codice di istruzione)
  • scoping dinamico
  • gestione automatica della memoria

Svantaggi delle lingue interpretate

Un'esecuzione da parte di un interprete è di solito molto meno efficiente della normale esecuzione del programma. Succede perché o ogni istruzione deve passare un'interpretazione in fase di esecuzione o come nelle implementazioni più recenti, il codice deve essere compilato in una rappresentazione intermedia prima di ogni esecuzione. La macchina virtuale è una soluzione parziale al problema delle prestazioni poiché il linguaggio intermedio definito è molto più vicino al linguaggio macchina e quindi più facile da tradurre in fase di esecuzione. Un altro svantaggio è la necessità di un interprete sul computer locale per rendere possibile l'esecuzione.

Altri suggerimenti

Pro:

  • Prototipazione rapida (nessuna scrittura, compilazione, ciclo di esecuzione)
  • Cross-platform (supponendo che esistano interpreti per ogni piattaforma)

Contro:

  • Prestazioni (non sarà veloce come i linguaggi compilati)

Il più grande svantaggio? La maggior parte direbbe velocità di esecuzione, ma non è sempre necessariamente vera. La maggior parte dei linguaggi interpretati moderni oggigiorno converte i file in modo che vengano interpretati in uno stato intermedio al momento della costruzione, che quando eseguito viene trasformato in codice macchina come qualsiasi altra lingua. Al giorno d'oggi, con la memorizzazione nella cache intelligente prevalente principalmente in queste VM di linguaggio, non dovrebbe essere un grosso problema. Questo non significa certamente che le prestazioni non siano un problema con i linguaggi interpretati, solo che spesso non è così male come la maggior parte suggerirebbe.

Tieni presente che anche con i problemi di prestazioni, tuttavia, è spesso più facile svolgere le stesse attività di un linguaggio compilato in un codice sempre meno efficiente, rendendo trascurabile la perdita di prestazioni durante la compilazione nel tempo di esecuzione di un programma.

Personalmente per me, il più grande svantaggio è la necessità che l'interprete sia sempre presente prima che possa verificarsi l'esecuzione. Questo spesso riduce la portabilità, soprattutto perché le lingue interpretate non sono sempre multipiattaforma.

Con:

  • Il più grande svantaggio è probabilmente la velocità di esecuzione

Pro:

  • Il vantaggio principale è probabilmente il tempo di inversione, ovvero il ciclo di iterazione del test del codice

In conclusione, i linguaggi compilati tendono ad avere prestazioni superiori rispetto a quelli interpretati, poiché la compilazione esclude la necessità di un interprete di runtime.

Le lingue compilate sono più adatte al software desktop commerciale, poiché il codice sorgente non viene fornito insieme a esso.

Le lingue interpretate tendono ad essere un po 'più veloci da imparare, in quanto consentono di modificare / eseguire / ripetere rapidamente senza attendere un compilatore. Nella mia esperienza, tendono anche ad essere di livello superiore, il che li rende anche più facili.

Wikipedia ha una pagina sui vantaggi e gli svantaggi. Qualsiasi linguaggio interpretato significativamente avanzato può essere effettivamente compilato in un binario nativo, confondendo così le linee tra i pro e i contro di un linguaggio interpretato.

PERL è una di quelle lingue che sfocano le linee. Sebbene sia famoso per essere un potente linguaggio di scripting, potresti compilarlo come nativo.

La "lentezza" di linguaggi dinamici come PERL potrebbe non essere più un problema. Ecco un'eccellente presentazione delle ultime tendenze nell'area del linguaggio dinamico:

http: //steve-yegge.blogspot .com / 2008/05 / dinamico-lingue-strike-back.html

Come java è il linguaggio interpretato

Pro:

  • Compatibilità: la macchina virtuale Java approva questo concetto " Scrivi una volta, esegui ovunque. "
  • Sicurezza: il programma in esecuzione in JVM, quindi se si verifica un errore ciò non influisce sui file del sistema operativo.
  • Gestione della memoria.

Contro:

  • La macchina virtuale Java ha molte implementazioni, ad esempio quando si scrive un programma che utilizza le funzionalità Java 8 questo programma deve essere eseguito su JVM con versione 8 non inferiore.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top