Intérprete (TI)

Em ciência da computação , um intérprete , ou intérprete ( veja abaixo ), é uma ferramenta cuja tarefa é analisar, traduzir e executar programas escritos em uma linguagem de computador . Às vezes nos qualificamos e indevidamente , linguagens cujos programas são geralmente executados por um intérprete de linguagens interpretadas .

Um intérprete difere de um compilador por realizar a análise e a tradução necessárias para a execução de um determinado programa, não de uma vez por todas, mas a cada execução desse programa. A execução, portanto, requer não apenas o programa, mas também o intérprete correspondente.

Princípio

A interpretação depende da execução dinâmica do programa por outro programa (o interpretador), ao invés de sua conversão em outra linguagem (por exemplo, linguagem de máquina); evita a separação do tempo de conversão e do tempo de execução, que são simultâneos.

Nós diferenciamos um programa de script de um programa compilado  :

O ciclo de um intérprete é o seguinte:

Assim, ao contrário do compilador , o interpretador executa as instruções do programa (ou avalia as expressões das mesmas), à medida que são lidas para interpretação. Por causa desta fase sem tradução prévia, a execução de um programa interpretado é geralmente mais lenta do que o mesmo programa compilado. A maioria dos intérpretes não executa mais a cadeia de caracteres que representa o programa, mas uma forma interna, como uma árvore de sintaxe .

Na prática, há continuidade entre intérpretes e compiladores. A maioria dos intérpretes usa representações internas intermediárias (árvores sintáticas abstratas, ou mesmo código de bytes) e processamento (análises lexicais e sintáticas) semelhantes aos dos compiladores. Finalmente, certas implementações de certas linguagens (por exemplo SBCL para Common Lisp ) são interativas como um interpretador, mas assim que possível traduzem o texto de um trecho de programa em código de máquina diretamente executável pelo processador. O caráter interpretativo ou compilatório é, portanto, específico para a implementação de uma linguagem de programação, e não para a linguagem em si.

O interesse das linguagens interpretadas reside principalmente na facilidade de programação e portabilidade. As linguagens interpretadas facilitam muito a depuração dos programas porque evitam a fase de compilação, que muitas vezes é longa, e limitam as possibilidades de bugs. Em geral, é possível executar programas incompletos, o que facilita o rápido desenvolvimento de aplicativos ou protótipos de aplicativos. Assim, a linguagem BASIC foi a primeira linguagem interpretada a permitir o acesso do público em geral à programação, enquanto a primeira linguagem de programação moderna interpretada é o Lisp .

A portabilidade permite escrever um único programa, que pode ser executado em várias plataformas sem alterações, desde que haja um intérprete específico para cada uma dessas plataformas de hardware.

Um certo número de linguagens de computador é hoje implementado por meio de uma máquina virtual de aplicativo. Essa técnica está a meio caminho entre os interpretadores, conforme descrito aqui, e os compiladores . Oferece portabilidade de intérprete com boa eficiência. Por exemplo, portas de Java, Lisp, Scheme, Ocaml, Perl (Parrot), Python, Ruby, Lua, C #, etc. são feitos por meio de uma máquina virtual.

A interpretação abstrata (inventada por Patrick e Radhia Cousot) é uma técnica e um modelo de análise estática de programas que funciona um pouco na forma de um intérprete, o programa analisado substituindo os valores das abstrações. Por exemplo, os valores de variáveis ​​inteiras são abstraídos por intervalos de inteiros ou relações algébricas entre variáveis.

Histórico

Com o surgimento da linguagem Pascal e compiladores comerciais rápidos como o Turbo Pascal , as linguagens interpretadas sofreram um declínio acentuado em meados dos anos 1980 . Três coisas mudaram a situação na década de 1990  :

Usos de linguagens interpretadas

As linguagens interpretadas têm muitos usos:

Híbridos entre compilador e interpretador

Embora a distinção entre compilador e interpretador seja real, suas definições às vezes se sobrepõem e há métodos intermediários entre essas duas técnicas.

Intérpretes de bytecode

Algumas estruturas como Java ou .NET pré-compilam o código em um bytecode intermediário. Este bytecode é então interpretado ou então executado por uma máquina virtual , em todos os casos para executar o programa.

Compilação instantânea

Em um sistema que implementa compilação dinâmica, o código-fonte é geralmente compilado antecipadamente ou em tempo real (em tempo de execução) em uma representação intermediária , o bytecode . O sistema então analisa continuamente o código em execução e identifica as partes do código em que a recompilação para o código nativo substituiria a execução do bytecode.

Terminologia

Este tipo de ferramenta é designado em inglês pelo termo "  intérprete  ". Enquanto os autores do primeiro livro de ensino em francês sobre teoria de programas propuseram " interpretar", que é frequentemente traduzido para o francês pela camada "intérprete", termo este - atestado por volta de 1970 - sendo recomendado em particular pelo OQLF e presente em vários dicionários gerais e especializado em processamento de dados, bem como em outras publicações de terminologia.

Notas e referências

  1. C. Livercy , Jean-Pierre Finance , Monique Grandbastien , Pierre Lescanne , Pierre Marchand , Roger Mohr , Alain Quéré e Jean-Luc Rémy ( pref.  C. Par), Teoria do programa : esquemas, provas, semântica , Paris, Bordas , col.  "Dunod informatique",1978, 328  p. ( ISBN  978-2-04-010516-7 e 2040105166 , leia online ).
  2. “  intérprete  ” , em Usito , Université de Sherbrooke (acessada 12 de julho de 2021 ) .
  3. "  intérprete  " , Le Grand Dictionnaire terminologique , Office québécois de la langue française .
  4. "  intérprete  " , dicionário Larousse (acessado em 12 de julho de 2021 ) .
  5. "  intérprete  " , em Dictionnaire.lerobert.com , Dictionnaires Le Robert (acessado em 12 de julho de 2021 ) .
  6. Michel Ginguay , dicionário de informática inglês / francês , Dunod ,2005( ISBN  2-10-008310-4 e 978-2-10-008310-7 , OCLC  59569570 , aviso BnF n o  FRBNF39950455 ) , p.  121 :

    Intérprete , [...] 2. programa de interpretação, intérprete"

    .
  7. (in) Jacques Hildebert , Dicionário de Tecnologia da Informação Inglês / Francês , Nova York, Hippocrene Books,1998( ISBN  978-0-7818-0628-2 ) ; Dicionário de tecnologias de TI francês / inglês , Paris, La Maison du Dictionnaire,1998, 2702  p. ( ISBN  978-2-85608-105-1 , apresentação online ) , p.  2020.
  8. Jean-Guy Grenier , Dicionário de Computação e Internet (Inglês-Francês) , Paris, La Maison Du Dictionnaire,2000, 710  p. ( ISBN  978-2-85608-136-5 , apresentação online ) , p.  358.
  9. Terry R. Pyper , Dicionário Francês de Tecnologia da Informação , Londres, Routledge ,1989, 1 r  ed. , 590  p. ( ISBN  978-0-415-00244-8 , apresentação online ) , p.  147.
  10. (nl + en + fr + de + es) PJ van Swigchem e EJ Slot , BDI-terminologia: verklarend woordenboek van Nederlandse termen op het gebied van bibliotheek en documentary informatie, met vertalingen in het Engels, Frans, Duits, Spaans , La Haye, NBD Biblion,1990, 493  p. ( ISBN  978-90-6252-123-4 , apresentação online ) , p.  151.
  11. (em) Anne-Laure Jousse ( University of Maine ) e Myriam Bouveret , "  Lexical Functions to Represent derivational Relations in Specialized Dictionaries  " , Terminology , John Benjamins Publishing Company, vol.  9, n o  1,2003, p.  71-98 ( ISSN  0929-9971 , leia online ) [PDF] .

Veja também