Intérprete (informática)


En informática , un intérprete es un programa informático que ejecuta directamente instrucciones escritas en un lenguaje de programación o scripting , sin necesidad de que hayan sido compiladas previamente en un programa de lenguaje máquina . Un intérprete generalmente usa una de las siguientes estrategias para la ejecución del programa:

Las primeras versiones del lenguaje de programación Lisp y minicomputadora y dialectos de BASIC microordenador serían ejemplos del primer tipo. Perl , Raku , Python , MATLAB y Ruby son ejemplos del segundo, mientras que UCSD Pascal es un ejemplo del tercer tipo. Los programas fuente se compilan con anticipación y se almacenan como código independiente de la máquina, que luego se vincula en tiempo de ejecución y es ejecutado por un intérprete y / o compilador (para sistemas JIT ). Algunos sistemas, como Smalltalk y versiones contemporáneas de BASIC y Javatambién puede combinar dos y tres. [2] También se han construido intérpretes de varios tipos para muchos lenguajes tradicionalmente asociados con la compilación, como Algol , Fortran , Cobol , C y C ++ .

Si bien la interpretación y la compilación son los dos medios principales por los que se implementan los lenguajes de programación, no son mutuamente excluyentes, ya que la mayoría de los sistemas de interpretación también realizan algún trabajo de traducción, al igual que los compiladores. Los términos " lenguaje interpretado " o " lenguaje compilado " significan que la implementación canónica de ese lenguaje es un intérprete o un compilador, respectivamente. Un lenguaje de alto nivel es idealmente una abstracción independiente de implementaciones particulares.

Los intérpretes se utilizaron ya en 1952 para facilitar la programación dentro de las limitaciones de las computadoras en ese momento (por ejemplo, una escasez de espacio de almacenamiento de programas o la falta de soporte nativo para números de punto flotante). También se utilizaron intérpretes para traducir entre lenguajes de máquina de bajo nivel, lo que permitió escribir código para máquinas que aún estaban en construcción y probarse en computadoras que ya existían. [3] El primer lenguaje de alto nivel interpretado fue Lisp . Lisp fue implementado por primera vez en 1958 por Steve Russell en una computadora IBM 704 . Russell había leído el artículo de John McCarthy y se dio cuenta (para sorpresa de McCarthy) de que la función de evaluación Lisp podía implementarse en código máquina. [4] El resultado fue un intérprete Lisp funcional que podría usarse para ejecutar programas Lisp, o más correctamente, "evaluar expresiones Lisp".

Los programas escritos en un lenguaje de alto nivel son ejecutados directamente por algún tipo de intérprete o convertidos en código de máquina por un compilador (y ensamblador y enlazador ) para que la CPU los ejecute.

Si bien los compiladores (y ensambladores) generalmente producen código de máquina directamente ejecutable por hardware de computadora, a menudo (opcionalmente) pueden producir una forma intermedia llamada código objeto . Este es básicamente el mismo código específico de la máquina, pero aumentado con una tabla de símbolos con nombres y etiquetas para hacer que los bloques (o módulos) ejecutables sean identificables y reubicables. Los programas compilados normalmente utilizarán bloques de construcción (funciones) que se guardan en una biblioteca de dichos módulos de código objeto. Un enlazadorse utiliza para combinar archivos de biblioteca (prefabricados) con el (los) archivo (s) objeto (s) de la aplicación para formar un solo archivo ejecutable. Por lo tanto, los archivos de objeto que se utilizan para generar un archivo ejecutable a menudo se producen en diferentes momentos y, a veces, incluso en diferentes lenguajes (capaces de generar el mismo formato de objeto).


W3sDesign Intérprete Diseño Patrón UML
Una ilustración del proceso de vinculación. Los archivos de objetos y las bibliotecas estáticas se ensamblan en una nueva biblioteca o ejecutable