Interprete (IT)

In informatica , un interprete , o interprete ( vedi sotto ), è uno strumento il cui compito è analizzare, tradurre ed eseguire programmi scritti in un linguaggio informatico . A volte ci qualifichiamo, e impropriamente , linguaggi i cui programmi vengono solitamente eseguiti da un interprete di linguaggi interpretati .

Un interprete differisce da un compilatore in quanto esegue l'analisi e la traduzione necessarie per l'esecuzione di un determinato programma non una volta per tutte, ma ad ogni esecuzione di quel programma. L'esecuzione richiede quindi di avere non solo il programma, ma anche l'interprete corrispondente.

Principio

L'interpretazione si basa sull'esecuzione dinamica del programma da parte di un altro programma (l'interprete), piuttosto che sulla sua conversione in un'altra lingua (es. linguaggio macchina); evita la separazione tra tempo di conversione e tempo di esecuzione, che sono simultanei.

Differenziamo un cosiddetto programma di script da un cosiddetto programma compilato  :

Il ciclo di un interprete è il seguente:

Quindi, a differenza del compilatore , l'interprete esegue le istruzioni del programma (o ne valuta le espressioni), man mano che vengono lette per l'interpretazione. A causa di questa fase senza traduzione preventiva, l'esecuzione di un programma interpretato è generalmente più lenta rispetto allo stesso programma compilato. La maggior parte degli interpreti non esegue più la stringa di caratteri che rappresenta il programma, ma un modulo interno, come un albero di sintassi .

In pratica, c'è continuità tra interpreti e compilatori. La maggior parte degli interpreti usa rappresentazioni interne intermedie (alberi di sintassi astratti o anche codice di byte) ed elaborazioni (analisi lessicali e sintattiche) simili a quelle dei compilatori. Infine, alcune implementazioni di determinati linguaggi (ad esempio SBCL per Common Lisp ) sono interattive come un interprete, ma appena possibile traducono il testo di un pezzo di programma in codice macchina eseguibile direttamente dal processore. Il carattere interpretativo o compilativo è quindi specifico dell'implementazione di un linguaggio di programmazione, e non del linguaggio stesso.

L'interesse dei linguaggi interpretati risiede principalmente nella facilità di programmazione e portabilità. I linguaggi interpretati facilitano notevolmente il debug dei programmi perché evitano la fase di compilazione, che spesso è lunga, e limitano le possibilità di bug. In generale, è possibile eseguire programmi incompleti, il che facilita il rapido sviluppo di applicazioni o prototipi di applicazioni. Pertanto, il linguaggio BASIC è stato il primo linguaggio interpretato per consentire al grande pubblico di accedere alla programmazione, mentre il primo linguaggio di programmazione moderno interpretato è Lisp .

La portabilità consente di scrivere un unico programma, che può essere eseguito su diverse piattaforme senza modifiche, a condizione che sia presente un interprete specifico per ciascuna di queste piattaforme hardware.

Un certo numero di linguaggi informatici sono oggi implementati per mezzo di una macchina virtuale applicativa. Questa tecnica è a metà strada tra gli interpreti come descritto qui e i compilatori . Offre la portabilità dell'interprete con una buona efficienza. Ad esempio, port di Java, Lisp, Scheme, Ocaml, Perl (Parrot), Python, Ruby, Lua, C#, ecc. vengono eseguiti tramite una macchina virtuale.

L' interpretazione astratta (inventata da Patrick e Radhia Cousot) è una tecnica e un modello di analisi del programma statico che funziona un po' come un interprete, il programma analizzato sostituendo i valori delle astrazioni. Ad esempio, i valori delle variabili intere sono astratti da intervalli di numeri interi o relazioni algebriche tra variabili.

Storico

Con la comparsa del linguaggio Pascal e dei veloci compilatori commerciali come Turbo Pascal , i linguaggi interpretati hanno subito un netto declino dalla metà degli anni '80 . Tre cose hanno cambiato la situazione negli anni '90  :

Usi delle lingue interpretate

Le lingue interpretate trovano molti usi:

Ibridi tra compilatore e interprete

Sebbene la distinzione tra compilatore e interprete sia reale, le loro definizioni a volte si sovrappongono e ci sono metodi intermedi tra queste due tecniche.

Interpreti di bytecode

Alcuni framework come Java o .NET precompilano il codice in un bytecode intermedio. Questo bytecode viene poi interpretato oppure eseguito da una macchina virtuale , in ogni caso per eseguire il programma.

Compilazione al volo

In un sistema che implementa la compilazione al volo, il codice sorgente viene solitamente compilato in anticipo o al volo (in fase di esecuzione) in una rappresentazione intermedia , il bytecode . Il sistema quindi analizza continuamente il codice in esecuzione e identifica parti del codice in cui la ricompilazione in codice nativo sovrascriverebbe l'esecuzione del bytecode.

Terminologia

Questo tipo di strumento è designato in inglese con il termine "  interprete  ". Mentre gli autori del primo libro didattico in francese sulla teoria dei programmi hanno proposto "interprète", questo è spesso tradotto in francese dal livello "interprete", questo termine - attestato intorno al 1970 - essendo raccomandato in particolare dall'OQLF e presente in diversi dizionari generali e specializzati nell'informatica oltre che in altre pubblicazioni terminologiche.

Note e riferimenti

  1. C. Livercy , Jean-Pierre Finance , Monique Grandbastien , Pierre Lescanne , Pierre Marchand , Roger Mohr , Alain Quéré e Jean-Luc Rémy ( pref.  C. Pair), Teoria dei programmi : Schemi, dimostrazioni, semantica , Paris, Bordas , colle.  "Dunod informatica",1978, 328  pag. ( ISBN  978-2-04-010516-7 e 2040105166 , leggi online ).
  2. “  interprete  ” , l'Usito , Université de Sherbrooke (accessibile 12 luglio, 2021 ) .
  3. "  interprete  " , Le Grand Dictionnaire terminologique , Office québécois de la langue française .
  4. "  interprete  " , dizionario Larousse (consultato il 12 luglio 2021 ) .
  5. "  interprete  " , su Dictionnaire.lerobert.com , Dictionnaires Le Robert (consultato il 12 luglio 2021 ) .
  6. Michel Ginguay , dizionario informatico inglese/francese , Dunod ,2005( ISBN  2-10-008310-4 e 978-2-10-008310-7 , OCLC  59569570 , avviso BnF n o  FRBNF39950455 ) , p.  121 :

    Interprete , [...] 2. programma di interpretariato, interprete"

    .
  7. (in) Jacques Hildebert , Dictionary of Information Technology inglese/francese , New York, Hippocrene Books,1998( ISBN  978-0-7818-0628-2 ) ; Dizionario delle tecnologie informatiche francese/inglese , Parigi, La Maison du Dictionnaire,1998, 2702  pag. ( ISBN  978-2-85608-105-1 , presentazione online ) , p.  2020.
  8. Jean-Guy Grenier , Dizionario di informatica e Internet (inglese-francese) , Parigi, La Maison Du Dictionnaire,2000, 710  pag. ( ISBN  978-2-85608-136-5 , presentazione online ) , p.  358.
  9. Terry R. Pyper , Dizionario francese della tecnologia dell'informazione , Londra, Routledge ,1989, 1 °  ed. , 590  pag. ( ISBN  978-0-415-00244-8 , presentazione online ) , p.  147.
  10. (nl + en + fr + de + es) PJ van Swigchem e EJ Slot , BDI-terminology: verklarend woordenboek van Nederlandse termen op het gebied van bibliotheek en document information, met vertalingen in het Engels, Frans, Duits, Spaans , La Haye, NBD Biblion,1990, 493  pag. ( ISBN  978-90-6252-123-4 , presentazione online ) , p.  151.
  11. (in) Anne-Laure Jousse ( Università del Maine ) e Myriam Bouveret , "  Funzioni lessicali per rappresentare le relazioni derivative nei dizionari specializzati  " , Terminologia , John Benjamins Publishing Company, vol.  9, n °  1,2003, pag.  71-98 ( ISSN  0929-9971 , leggi in linea ) [PDF] .

Vedi anche