Tłumacz ustny (IT)

W informatyce , o tłumacza lub tłumacza ( patrz poniżej ), jest narzędziem, którego zadaniem jest analiza, tłumaczyć i wykonywanie programów napisanych w języku komputerowym . Czasami się kwalifikujemy i niewłaściwie , języki, których programy są zwykle wykonywane przez tłumacza języków interpretowanych .

Interpreter różni się od kompilatora tym, że przeprowadza analizę i translację niezbędną do wykonania danego programu nie raz na zawsze, ale przy każdym uruchomieniu tego programu. Wykonanie wymaga więc posiadania nie tylko programu, ale również odpowiedniego interpretera.

Zasada

Interpretacja polega na dynamicznym wykonaniu programu przez inny program (interpreter), a nie na jego konwersji na inny język (np. język maszynowy); unika się rozdzielenia czasu konwersji i czasu wykonania, które są jednoczesne.

Rozróżniamy tak zwany program skryptowy od tak zwanego programu skompilowanego  :

Cykl tłumacza jest następujący:

Tak więc, w przeciwieństwie do kompilatora , interpreter wykonuje instrukcje programu (lub ocenia ich wyrażenia), gdy są one odczytywane do interpretacji. Z powodu tej fazy bez wcześniejszego tłumaczenia, wykonanie interpretowanego programu jest generalnie wolniejsze niż tego samego skompilowanego programu. Większość interpreterów nie wykonuje już ciągu znaków reprezentującego program, ale formę wewnętrzną, taką jak drzewo składni .

W praktyce istnieje ciągłość między interpreterami a kompilatorami. Większość interpreterów używa pośrednich reprezentacji wewnętrznych (abstrakcyjnych drzew składni, a nawet kodu bajtowego) i przetwarzania (analizy leksykalne i składniowe) przypominających te z kompilatorów. Wreszcie, niektóre implementacje niektórych języków (na przykład SBCL dla Common Lisp ) są interaktywne jak interpreter, ale tak szybko, jak to możliwe, tłumaczą tekst fragmentu programu na kod maszynowy bezpośrednio wykonywalny przez procesor. Charakter interpretacyjny lub kompilacyjny jest zatem specyficzny dla implementacji języka programowania, a nie dla samego języka.

Zainteresowanie językami interpretowanymi polega głównie na łatwości programowania i przenośności. Interpretowane języki znacznie ułatwiają debugowanie programów, ponieważ unikają często długiej fazy kompilacji i ograniczają możliwości błędów. Generalnie możliwe jest uruchamianie niekompletnych programów, co ułatwia szybkie tworzenie aplikacji lub prototypów aplikacji. Tak więc język BASIC był pierwszym interpretowanym językiem umożliwiającym ogółowi społeczeństwa dostęp do programowania, podczas gdy pierwszym interpretowanym współczesnym językiem programowania jest Lisp .

Przenośność umożliwia napisanie jednego programu, który może być uruchamiany na różnych platformach bez zmian, pod warunkiem, że istnieje interpreter specyficzny dla każdej z tych platform sprzętowych.

Pewna liczba języków komputerowych jest dziś implementowana za pomocą wirtualnej maszyny aplikacji. Ta technika jest w połowie drogi między opisanymi tutaj interpreterami a kompilatorami . Oferuje przenośność tłumacza z dobrą wydajnością. Na przykład porty Java, Lisp, Scheme, Ocaml, Perl (Parrot), Python, Ruby, Lua, C# itp. są wykonywane przez maszynę wirtualną.

Streszczenie interpretacja (wymyślona przez Patricka i Radhia Cousot) to technika i model analizy statycznej programu , który działa trochę na zasadzie tłumacza, program analizuje się poprzez zastąpienie wartości abstrakcji. Na przykład wartości zmiennych całkowitych są abstrahowane przez przedziały liczb całkowitych, czyli relacje algebraiczne między zmiennymi.

Historyczny

Wraz z pojawieniem się języka Pascal i szybkich komercyjnych kompilatorów, takich jak Turbo Pascal , języki interpretowane doświadczyły gwałtownego spadku od połowy lat 80. . Trzy rzeczy zmieniły sytuację w latach 90  .:

Zastosowania języków tłumaczonych

Języki tłumaczone mają wiele zastosowań:

Hybrydy między kompilatorem a interpreterem

Chociaż rozróżnienie między kompilatorem a interpreterem jest prawdziwe, ich definicje czasami nakładają się na siebie i istnieją metody pośrednie między tymi dwiema technikami.

Interpretery kodu bajtowego

Niektóre struktury, takie jak Java lub .NET, wstępnie kompilują kod w pośrednim kodzie bajtowym . Ten kod bajtowy jest następnie interpretowany lub wykonywany przez maszynę wirtualną , we wszystkich przypadkach w celu wykonania programu.

Kompilacja w locie

W systemie implementującym kompilację w locie kod źródłowy jest zwykle kompilowany z wyprzedzeniem lub w locie (w czasie wykonywania) do reprezentacji pośredniej , kodu bajtowego . System następnie nieprzerwanie analizuje działający kod i identyfikuje części kodu, w których ponowna kompilacja do kodu natywnego zastąpiłaby wykonanie kodu bajtowego.

Terminologia

Ten rodzaj narzędzia określa się w języku angielskim terminem „  tłumacz  ”. Natomiast autorzy pierwszej książki dydaktycznej w języku francuskim na temat teorii programów zaproponowali „interprète”, często tłumaczone na język francuski przez warstwę „interpreter”, termin ten – poświadczony około 1970 r. – jest zalecany w szczególności przez OQLF i obecny w kilku słownikach ogólnych i wyspecjalizowany w przetwarzaniu danych, a także w inne publikacje terminologiczne.

Uwagi i referencje

  1. C. Livercy , Jean-Pierre Finance , Monique Grandbastien , Pierre Lescanne , Pierre Marchand , Roger Mohr , Alain Quéré i Jean-Luc Rémy ( pref.  C. Pair), Teoria programów : Schematy, dowody, semantyka , Paryż, Bordas , płk.  "Dunod informatique",1978, 328  s. ( ISBN  978-2-04-010516-7 i 2040105166 , czytaj online ).
  2. „  tłumacza  ” , na Usito , Université de Sherbrooke (dostęp 12 lipca 2021 ) .
  3. "  tłumacz  " , Le Grand Dictionnaire terminologique , Office québécois de la langue française .
  4. „  tłumacz  ” , słownik Larousse (dostęp 12 lipca 2021 r . ) .
  5. "  interpreter  " , na Dictionnaire.lerobert.com , Dictionnaires Le Robert (dostęp 12 lipca 2021 ) .
  6. Michel Ginguay , angielski / francuski słownik komputerowy , Dunod ,2005( ISBN  2-10-008310-4 i 978-2-10-008310-7 , OCLC  59569570 , informacja BNF n O  FRBNF39950455 ) , str.  121 :

    Tłumacz , [...] 2. program do tłumaczenia, tłumacz"

    .
  7. (w) Jacques Hildebert , Słownik technologii informacyjnej angielsko-francuski , Nowy Jork, Hippocrene Books,1998( ISBN  978-0-7818-0628-2 ) ; Słownik francuskich/angielskich technologii informatycznych , Paryż, La Maison du Dictionnaire,1998, 2702  s. ( ISBN  978-2-85608-105-1 , prezentacja online ) , s.  2020.
  8. Jean-Guy Grenier , Słownik informatyki i Internetu (angielsko-francuski) , Paryż, La Maison Du Dictionnaire,2000, 710  pkt. ( ISBN  978-2-85608-136-5 , prezentacja online ) , s.  358.
  9. Terry R. Pyper , Francuski słownik technologii informacyjnej , Londyn, Routledge ,1989, 1 st  ed. , 590  pkt. ( ISBN  978-0-415-00244-8 , prezentacja online ) , s.  147.
  10. (nl + en + fr + de + es) PJ van Swigchem and EJ Slot , BDI-terminology: 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  s. ( ISBN  978-90-6252-123-4 , prezentacja online ) , s.  151.
  11. (w) Anne-Laure Jousse ( Uniwersytet Maine ) i Myriam Bouveret , „  Funkcje leksykalne do reprezentowania relacji derywacyjnych w słownikach specjalistycznych  ” , Terminologia , John Benjamins Publishing Company, tom.  9 N O  1,2003, s.  71-98 ( ISSN  0929-9971 , czytaj online ) [PDF] .

Zobacz również