fbpx
Wikipedia

Intérprete (informática)

En ciencias de la computación, intérprete o interpretador es un programa informático capaz de analizar y ejecutar otros programas. Los intérpretes se diferencian de los compiladores o de los ensambladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes solo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.

Usando un intérprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ejemplo. una PC y una PlayStation 4). Usando un compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables específicos a cada sistema.

Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y depuración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o añadir módulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina virtual).

Para mejorar el desempeño, algunas implementaciones de algunos lenguajes de programación pueden interpretar o compilar el código fuente original en una forma intermedia más compacta, y después traducir eso al código de máquina (ej. Perl, Python, MATLAB, y Ruby). Algunos aceptan los archivos fuente guardados en esta representación intermedia (ej. Python, UCSD Pascal y Java).

En la actualidad, uno de los entornos más comunes de uso de los intérpretes es en los navegadores web, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.

Intérpretes de bytecode

Hay un espectro de posibilidades entre la interpretación y la compilación, dependiendo de la cantidad de análisis realizados antes de que el programa sea ejecutado. Por ejemplo, el Emacs Lisp es compilado a bytecode, que es una representación altamente comprimida y optimizada del código fuente del Lisp, pero no es código de máquina (y por lo tanto no está atado a cualquier hardware particular). Este bytecode es entonces interpretado por un intérprete de bytecode (que está escrito en C). En este caso, el código compilado es el código de máquina para una máquina virtual, que no está implementada en el hardware, sino en el intérprete de bytecode. El mismo acercamiento es utilizado con el código Forth usado en sistemas Open Firmware: el lenguaje fuente es compilado en "código F" (un bytecode).

Eficiencia

La desventaja principal de los interpretadores es que cuando se interpreta un programa, típicamente corre más lentamente que si hubiera sido compilado. La diferencia en velocidades puede ser minúscula o grande; a menudo un orden de magnitud y a veces más. Generalmente toma más tiempo correr un programa bajo un interpretador que correr el código compilado, pero puede tomar menos tiempo para interpretarlo que el tiempo total requerido para compilarlo y ejecutarlo. Esto es especialmente importante si se está haciendo y probando un código prototipo cuando un ciclo de editar, interpretar y depurar del interpretador, a menudo puede ser mucho más corto que el ciclo de editar, compilar, ejecutar y depurar del compilador.

La interpretación de código es más lenta que la ejecución de código compilado porque el interpretador debe analizar cada sentencia en el programa cada vez que es ejecutada y entonces realizar la acción deseada, mientras que el código compilado solo realiza la acción dentro de un determinado contexto fijo por la compilación. Este análisis en tiempo de ejecución se conoce como "sobrecarga interpretativa". En un interpretador, el acceso a las variables es también más lento porque el mapeo de identificadores hacia las localizaciones de almacenamiento debe hacerse repetidamente en tiempo de ejecución en vez de en el tiempo de compilación. Hay varios compromisos entre la velocidad de desarrollo al usar un interpretador y la velocidad de ejecución al usar un compilador. Algunos sistemas (ej., algunos LISPs) permiten al código interpretado y al compilado llamarse el uno al otro y compartir variables. Esto significa que una vez que una rutina ha sido probada y depurada bajo el interpretador puede ser compilada y por lo tanto beneficiarse de una ejecución más rápida mientras que otras rutinas están siendo desarrolladas. Muchos interpretadores no ejecutan el código fuente tal y como está sino que lo convierten en una forma interna más compacta. Por ejemplo, algunos interpretadores BASIC reemplazan palabras clave (keywords) con tokens de un simple byte que pueden ser usados para encontrar la instrucción en una tabla de saltos. Un interpretador puede bien usar el mismo analizador lexicográfico y el analizador sintáctico (parser) que el compilador y entonces interpretar el árbol de sintaxis abstracta resultante.

Interpretadores de árbol de sintaxis abstracta

En el espectro entre la interpretación y la compilación, otro acercamiento está transformando el código fuente en un árbol de sintaxis abstracta optimizado (AST), y después procediendo a ejecutar el programa siguiendo esta estructura arborescente.[1]​ En este acercamiento cada sentencia necesita ser analizada (parsed) solo una vez. Como una ventaja sobre el bytecode, el AST mantiene la estructura y las relaciones globales del programa entre las sentencias (que se pierden en una representación de bytecode), y proporciona una representación más compacta.[2]

Así, el AST se ha propuesto como un mejor formato intermedio para los compiladores justo a tiempo que el bytecode. También, permite realizar un mejor análisis durante tiempo de ejecución. Un interpretador Java basado en AST ha demostrado ser más rápido que un interpretador similar basado en bytecode,[3]​ gracias a las más poderosas optimizaciones permitidas al tener la estructura completa del programa, así como tipos de datos de alto nivel, disponibles durante la ejecución.

Compilación justo a tiempo

Para desdibujar más la distinción entre los interpretadores, los interpretadores de bytecode y la compilación, está la compilación justo a tiempo (o JIT), una técnica en la cual la representación intermedia es compilada a código de máquina nativo en tiempo de ejecución. Esto confiere la eficiencia de ejecutar el código nativo, al costo de tiempo de inicio y de un uso creciente de la memoria cuando el bytecode o el AST es compilado por primera vez. La optimización adaptativa es una técnica complementaria en la cual el interpretador hace un análisis de desempeño del programa que está corriendo (profiling) y compila sus partes más frecuentemente ejecutadas a código nativo. Ambas técnicas tienen algunas décadas, apareciendo en lenguajes tales como Smalltalk en la década de 1980.

En años recientes, la compilación justo a tiempo ha ganado la atención de la mayoría de los implementadores de lenguajes de programación, con Java, Python, y el Microsoft .NET Framework todos ahora incluyendo JITs.

Ejemplos

Algunos ejemplos de intérpretes:

Lenguaje interpretado

Un lenguaje interpretado es un lenguaje de programación para el que la mayoría de sus implementaciones ejecuta las instrucciones directamente, sin una previa compilación del programa a instrucciones en lenguaje máquina. El intérprete ejecuta el programa directamente, traduciendo cada sentencia en una secuencia de una o más subrutinas ya compiladas en código máquina.

Los términos lenguaje interpretado y lenguaje compilado[4]​ no están bien definidos porque, en teoría, cualquier lenguaje de programación puede ser interpretado o compilado. Cada vez es más popular, en las implementaciones más modernas de un lenguaje de programación, ofrecer ambas opciones.

Los lenguajes interpretados también pueden diferenciarse de los lenguajes de máquina. Funcionalmente, tanto la ejecución y la interpretación significan lo mismo -obtener la siguiente instrucción/sentencia del programa y su ejecución-. Aunque el bytecode (código byte) interpretado es además idéntico a su forma en código máquina y tiene una representación en ensamblador, el término "interpretado" se reserva en la práctica para lenguajes "procesados por software" (como las máquinas virtuales o emuladores) por encima del procesado nativo (por ejemplo, por hardware).

En principio, los programas de muchos lenguajes se pueden compilar o interpretar, emular o ejecutar nativamente, así que esta designación se aplica solamente a la implementación práctica más usual, en vez de representar una propiedad esencial del lenguaje. De forma parecida al microcódigo del procesador, muchos intérpretes, internamente recaen en una compilación en tiempo de ejecución.

Evitando la compilación, los programas interpretados son más fáciles de evolucionar durante el desarrollo y la ejecución (transformándose en ocasiones de uno en la otra). De otra parte, ya que la compilación implica una traducción a un formato más amigable con la máquina, los programas interpretados corren más lentamente y menos eficientemente (es decir, gastan considerablemente más energía). Esto es especialmente verdad para los lenguajes de guion, cuyas sentencias son más complejas de analizar comparadas con las instrucciones máquina.

Muchos lenguajes se han implementado usando tanto compiladores como intérpretes, incluyendo BASIC, C, Lisp, Pascal y Python. Java y C# se compilan a código byte, el lenguaje interpretado específico para la máquina virtual. Muchas implementaciones de Lisp pueden mezclar libremente código interpretado y compilado.

Antecedentes históricos de interpretado y compilado

En los comienzos de la computación, el diseño de lenguajes fue fuertemente influenciado por la decisión de usar la compilación o la interpretación como modos de ejecución. Por ejemplo, algunos lenguajes compilados requieren que los programas deban indicar explícitamente el tipo de dato de una variable en el momento en que sea declarada o al ser usada por primera vez, mientras que algunos lenguajes interpretados toman ventaja de los aspectos dinámicos de la interpretación para hacer tales declaraciones innecesarias. Por ejemplo, Smalltalk (1980), que fue diseñado para ser interpretado en tiempo de ejecución, permite a objetos genéricos interactuar dinámicamente entre sí.

Inicialmente, los lenguajes interpretados eran compilados línea por línea, es decir, cada línea era compilada a medida que estaba a punto de ser ejecutada, y si un bucle o una subrutina hicieran que ciertas líneas se ejecutaran múltiples veces, serían recompiladas repetidamente. Esto ha llegado a ser mucho menos común. La mayoría de los lenguajes interpretados usan una representación intermedia, que combina tanto la compilación como la interpretación. En este caso, un compilador puede producir el código byte o el código enhebrado, que entonces es ejecutado por un intérprete de código byte.

Los ejemplos incluyen:

La representación intermedia se puede compilar una sola vez (como en Java), cada vez que se vaya a ejecutar (como en Perl o Ruby), o cada vez que se detecte un cambio en el código fuente antes de la ejecución (como en Python).

Ventajas de interpretar un lenguaje

Interpretar un lenguaje da a las implementaciones una flexibilidad adicional sobre las implementaciones compiladas. Algunas características son más fáciles de implementar en intérpretes que en compiladores son (pero no se limitan a estas):

  • Independencia de la plataforma (por ejemplo el bytecode de Java)
  • Reflexión y uso reflexivo del evaluador (por ejemplo, una función eval de primer orden)
  • Tipos dinámicos
  • Un tamaño del programa más pequeño (puesto que las implementaciones tienen la flexibilidad de elegir el conjunto de instrucciones)
  • Ámbito dinámico
  • Facilidad en la depuración (es más fácil obtener información del código fuente en lenguajes interpretados)

Desventajas de los lenguajes interpretados

La principal desventaja de la interpretación es una velocidad de ejecución del programa mucho más lenta, comparada con la ejecución directa del código máquina en la CPU del ordenador. Una técnica utilizada para mejorar las prestaciones es la compilación en tiempo de ejecución, que convierte las secuencias ejecutadas más frecuentes en código máquina del ordenador.

Lista de lenguajes más usados de forma interpretada

Lenguajes normalmente compilados a código byte

Muchos lenguajes interpretados son primero compilados a código byte, que luego es normalmente interpretado por la máquina virtual usando la compilación en tiempo de ejecución, del código byte a código nativo. Sin embargo, algunas veces, el código byte también puede ser compilado a un binario nativo usando un compilador Ahead-of-time compilation (compilación por adelantado), o ejecutado nativamente, por el procesador hardware.

Notas y referencias

  1. AST intermediate representations, Lambda the Ultimate forum
  2. A Tree-Based Alternative to Java Byte-Codes, Thomas Kistler, Michael Franz
  3. Trees Versus Bytes, BComp Honours thesis by Kade Hansson
  4. Colburn, Rafe (2003). Sams Teach Yourself CGI in 24 Hours (2003 edición). Estados Unidos: Sams Publishing. p. 48. ISBN 0672324040. Consultado el 13 de marzo de 2015. . Consultado el 13 de marzo de 2015.

Véase también

Enlaces externos

  • DrPubaGump (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). A tiny Interpreter written in Scheme, which provides to interpret PUBA-GUMP (a subset of BASIC) in Scheme
  • IBM Card Interpreters page at Columbia University
  •   Datos: Q183065

intérprete, informática, intérpretes, redirige, aquí, para, álbum, hermética, véase, intérpretes, álbum, ciencias, computación, intérprete, interpretador, programa, informático, capaz, analizar, ejecutar, otros, programas, intérpretes, diferencian, compiladore. Interpretes redirige aqui Para el album de Hermetica vease Interpretes album En ciencias de la computacion interprete o interpretador es un programa informatico capaz de analizar y ejecutar otros programas Los interpretes se diferencian de los compiladores o de los ensambladores en que mientras estos traducen un programa desde su descripcion en un lenguaje de programacion al codigo de maquina del sistema los interpretes solo realizan la traduccion a medida que sea necesaria tipicamente instruccion por instruccion y normalmente no guardan el resultado de dicha traduccion Usando un interprete un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes ejemplo una PC y una PlayStation 4 Usando un compilador un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables especificos a cada sistema Los programas interpretados suelen ser mas lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta pero a cambio son mas flexibles como entornos de programacion y depuracion lo que se traduce por ejemplo en una mayor facilidad para reemplazar partes enteras del programa o anadir modulos completamente nuevos y permiten ofrecer al programa interpretado un entorno no dependiente de la maquina donde se ejecuta el interprete sino del propio interprete lo que se conoce comunmente como maquina virtual Para mejorar el desempeno algunas implementaciones de algunos lenguajes de programacion pueden interpretar o compilar el codigo fuente original en una forma intermedia mas compacta y despues traducir eso al codigo de maquina ej Perl Python MATLAB y Ruby Algunos aceptan los archivos fuente guardados en esta representacion intermedia ej Python UCSD Pascal y Java En la actualidad uno de los entornos mas comunes de uso de los interpretes es en los navegadores web debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma Indice 1 Interpretes de bytecode 2 Eficiencia 3 Interpretadores de arbol de sintaxis abstracta 4 Compilacion justo a tiempo 5 Ejemplos 6 Lenguaje interpretado 6 1 Antecedentes historicos de interpretado y compilado 6 2 Ventajas de interpretar un lenguaje 6 3 Desventajas de los lenguajes interpretados 6 4 Lista de lenguajes mas usados de forma interpretada 6 4 1 Lenguajes normalmente compilados a codigo byte 7 Notas y referencias 8 Vease tambien 9 Enlaces externosInterpretes de bytecode EditarArticulo principal Bytecode Hay un espectro de posibilidades entre la interpretacion y la compilacion dependiendo de la cantidad de analisis realizados antes de que el programa sea ejecutado Por ejemplo el Emacs Lisp es compilado a bytecode que es una representacion altamente comprimida y optimizada del codigo fuente del Lisp pero no es codigo de maquina y por lo tanto no esta atado a cualquier hardware particular Este bytecode es entonces interpretado por un interprete de bytecode que esta escrito en C En este caso el codigo compilado es el codigo de maquina para una maquina virtual que no esta implementada en el hardware sino en el interprete de bytecode El mismo acercamiento es utilizado con el codigo Forth usado en sistemas Open Firmware el lenguaje fuente es compilado en codigo F un bytecode Eficiencia EditarLa desventaja principal de los interpretadores es que cuando se interpreta un programa tipicamente corre mas lentamente que si hubiera sido compilado La diferencia en velocidades puede ser minuscula o grande a menudo un orden de magnitud y a veces mas Generalmente toma mas tiempo correr un programa bajo un interpretador que correr el codigo compilado pero puede tomar menos tiempo para interpretarlo que el tiempo total requerido para compilarlo y ejecutarlo Esto es especialmente importante si se esta haciendo y probando un codigo prototipo cuando un ciclo de editar interpretar y depurar del interpretador a menudo puede ser mucho mas corto que el ciclo de editar compilar ejecutar y depurar del compilador La interpretacion de codigo es mas lenta que la ejecucion de codigo compilado porque el interpretador debe analizar cada sentencia en el programa cada vez que es ejecutada y entonces realizar la accion deseada mientras que el codigo compilado solo realiza la accion dentro de un determinado contexto fijo por la compilacion Este analisis en tiempo de ejecucion se conoce como sobrecarga interpretativa En un interpretador el acceso a las variables es tambien mas lento porque el mapeo de identificadores hacia las localizaciones de almacenamiento debe hacerse repetidamente en tiempo de ejecucion en vez de en el tiempo de compilacion Hay varios compromisos entre la velocidad de desarrollo al usar un interpretador y la velocidad de ejecucion al usar un compilador Algunos sistemas ej algunos LISPs permiten al codigo interpretado y al compilado llamarse el uno al otro y compartir variables Esto significa que una vez que una rutina ha sido probada y depurada bajo el interpretador puede ser compilada y por lo tanto beneficiarse de una ejecucion mas rapida mientras que otras rutinas estan siendo desarrolladas Muchos interpretadores no ejecutan el codigo fuente tal y como esta sino que lo convierten en una forma interna mas compacta Por ejemplo algunos interpretadores BASIC reemplazan palabras clave keywords con tokens de un simple byte que pueden ser usados para encontrar la instruccion en una tabla de saltos Un interpretador puede bien usar el mismo analizador lexicografico y el analizador sintactico parser que el compilador y entonces interpretar el arbol de sintaxis abstracta resultante Interpretadores de arbol de sintaxis abstracta EditarEn el espectro entre la interpretacion y la compilacion otro acercamiento esta transformando el codigo fuente en un arbol de sintaxis abstracta optimizado AST y despues procediendo a ejecutar el programa siguiendo esta estructura arborescente 1 En este acercamiento cada sentencia necesita ser analizada parsed solo una vez Como una ventaja sobre el bytecode el AST mantiene la estructura y las relaciones globales del programa entre las sentencias que se pierden en una representacion de bytecode y proporciona una representacion mas compacta 2 Asi el AST se ha propuesto como un mejor formato intermedio para los compiladores justo a tiempo que el bytecode Tambien permite realizar un mejor analisis durante tiempo de ejecucion Un interpretador Java basado en AST ha demostrado ser mas rapido que un interpretador similar basado en bytecode 3 gracias a las mas poderosas optimizaciones permitidas al tener la estructura completa del programa asi como tipos de datos de alto nivel disponibles durante la ejecucion Compilacion justo a tiempo EditarPara desdibujar mas la distincion entre los interpretadores los interpretadores de bytecode y la compilacion esta la compilacion justo a tiempo o JIT una tecnica en la cual la representacion intermedia es compilada a codigo de maquina nativo en tiempo de ejecucion Esto confiere la eficiencia de ejecutar el codigo nativo al costo de tiempo de inicio y de un uso creciente de la memoria cuando el bytecode o el AST es compilado por primera vez La optimizacion adaptativa es una tecnica complementaria en la cual el interpretador hace un analisis de desempeno del programa que esta corriendo profiling y compila sus partes mas frecuentemente ejecutadas a codigo nativo Ambas tecnicas tienen algunas decadas apareciendo en lenguajes tales como Smalltalk en la decada de 1980 En anos recientes la compilacion justo a tiempo ha ganado la atencion de la mayoria de los implementadores de lenguajes de programacion con Java Python y el Microsoft NET Framework todos ahora incluyendo JITs Ejemplos EditarAlgunos ejemplos de interpretes Motor Zend CPython Ruby MRI YARV en BasicLenguaje interpretado EditarUn lenguaje interpretado es un lenguaje de programacion para el que la mayoria de sus implementaciones ejecuta las instrucciones directamente sin una previa compilacion del programa a instrucciones en lenguaje maquina El interprete ejecuta el programa directamente traduciendo cada sentencia en una secuencia de una o mas subrutinas ya compiladas en codigo maquina Los terminos lenguaje interpretado y lenguaje compilado 4 no estan bien definidos porque en teoria cualquier lenguaje de programacion puede ser interpretado o compilado Cada vez es mas popular en las implementaciones mas modernas de un lenguaje de programacion ofrecer ambas opciones Los lenguajes interpretados tambien pueden diferenciarse de los lenguajes de maquina Funcionalmente tanto la ejecucion y la interpretacion significan lo mismo obtener la siguiente instruccion sentencia del programa y su ejecucion Aunque el bytecode codigo byte interpretado es ademas identico a su forma en codigo maquina y tiene una representacion en ensamblador el termino interpretado se reserva en la practica para lenguajes procesados por software como las maquinas virtuales o emuladores por encima del procesado nativo por ejemplo por hardware En principio los programas de muchos lenguajes se pueden compilar o interpretar emular o ejecutar nativamente asi que esta designacion se aplica solamente a la implementacion practica mas usual en vez de representar una propiedad esencial del lenguaje De forma parecida al microcodigo del procesador muchos interpretes internamente recaen en una compilacion en tiempo de ejecucion Evitando la compilacion los programas interpretados son mas faciles de evolucionar durante el desarrollo y la ejecucion transformandose en ocasiones de uno en la otra De otra parte ya que la compilacion implica una traduccion a un formato mas amigable con la maquina los programas interpretados corren mas lentamente y menos eficientemente es decir gastan considerablemente mas energia Esto es especialmente verdad para los lenguajes de guion cuyas sentencias son mas complejas de analizar comparadas con las instrucciones maquina Muchos lenguajes se han implementado usando tanto compiladores como interpretes incluyendo BASIC C Lisp Pascal y Python Java y C se compilan a codigo byte el lenguaje interpretado especifico para la maquina virtual Muchas implementaciones de Lisp pueden mezclar libremente codigo interpretado y compilado Antecedentes historicos de interpretado y compilado Editar En los comienzos de la computacion el diseno de lenguajes fue fuertemente influenciado por la decision de usar la compilacion o la interpretacion como modos de ejecucion Por ejemplo algunos lenguajes compilados requieren que los programas deban indicar explicitamente el tipo de dato de una variable en el momento en que sea declarada o al ser usada por primera vez mientras que algunos lenguajes interpretados toman ventaja de los aspectos dinamicos de la interpretacion para hacer tales declaraciones innecesarias Por ejemplo Smalltalk 1980 que fue disenado para ser interpretado en tiempo de ejecucion permite a objetos genericos interactuar dinamicamente entre si Inicialmente los lenguajes interpretados eran compilados linea por linea es decir cada linea era compilada a medida que estaba a punto de ser ejecutada y si un bucle o una subrutina hicieran que ciertas lineas se ejecutaran multiples veces serian recompiladas repetidamente Esto ha llegado a ser mucho menos comun La mayoria de los lenguajes interpretados usan una representacion intermedia que combina tanto la compilacion como la interpretacion En este caso un compilador puede producir el codigo byte o el codigo enhebrado que entonces es ejecutado por un interprete de codigo byte Los ejemplos incluyen Java Python Ruby de forma similar utiliza un arbol de sintaxis abstracta como representacion intermedia ForthLa representacion intermedia se puede compilar una sola vez como en Java cada vez que se vaya a ejecutar como en Perl o Ruby o cada vez que se detecte un cambio en el codigo fuente antes de la ejecucion como en Python Ventajas de interpretar un lenguaje Editar Interpretar un lenguaje da a las implementaciones una flexibilidad adicional sobre las implementaciones compiladas Algunas caracteristicas son mas faciles de implementar en interpretes que en compiladores son pero no se limitan a estas Independencia de la plataforma por ejemplo el bytecode de Java Reflexion y uso reflexivo del evaluador por ejemplo una funcion eval de primer orden Tipos dinamicos Un tamano del programa mas pequeno puesto que las implementaciones tienen la flexibilidad de elegir el conjunto de instrucciones Ambito dinamico Facilidad en la depuracion es mas facil obtener informacion del codigo fuente en lenguajes interpretados Desventajas de los lenguajes interpretados Editar La principal desventaja de la interpretacion es una velocidad de ejecucion del programa mucho mas lenta comparada con la ejecucion directa del codigo maquina en la CPU del ordenador Una tecnica utilizada para mejorar las prestaciones es la compilacion en tiempo de ejecucion que convierte las secuencias ejecutadas mas frecuentes en codigo maquina del ordenador Lista de lenguajes mas usados de forma interpretada Editar APL Un lenguaje orientado a vectores que usa un conjunto de caracteres inusual J Una variante de en el que la definicion tacita ofrece algunos de los beneficios de la compilacion BASIC aunque la version original era compilada asi como muchos modernos thinBasic ECMAScript ActionScript version 3 0 no es interpretado por lo que se elimino la funcion eval E4X ECMAScript for XML JavaScript primero se llamo Mocha y luego LiveScript JScript Manipulacion de ecuaciones y sistemas de resolucion GNU Octave IDL Interactive Data Language TK Solver Mathematica MATLAB EUPHORIA interpretado o compilado Forth Game Maker Language Java lenguaje de programacion Madness Script Perl PHP PostScript Python Lisp Logo Scheme MUMPS tradicionalmente interpretado compilado en las versiones modernas REXX Ruby JRuby una implementacion Java de Ruby Seed7 interpretado o compilado Smalltalk Bistro Dolphin Smalltalk F Script Little Smalltalk Squeak VisualAge VisualWorks Lenguajes de scripting WebDNA Hojas de calculo Excel almacena formulas y las interpreta desde un formato simbolico S R Tcl XOTcl VBScript PowerShell XMLmosaic Un lenguaje de programacion interpretado parecido a C escrito en Visual Basic NETLenguajes normalmente compilados a codigo byte Editar Muchos lenguajes interpretados son primero compilados a codigo byte que luego es normalmente interpretado por la maquina virtual usando la compilacion en tiempo de ejecucion del codigo byte a codigo nativo Sin embargo algunas veces el codigo byte tambien puede ser compilado a un binario nativo usando un compilador Ahead of time compilation compilacion por adelantado o ejecutado nativamente por el procesador hardware Java se compila en codigo byte Java para que sea interpretado por la JVM Groovy Join Java ColdFusion Scala Lua NET Framework traducidos a codigo byte llamado CIL C C C Visual Basic NET Pike Python Squeak Smalltalk Visual FoxPro Lisp AppleScriptNotas y referencias Editar AST intermediate representations Lambda the Ultimate forum A Tree Based Alternative to Java Byte Codes Thomas Kistler Michael Franz Trees Versus Bytes BComp Honours thesis by Kade Hansson Colburn Rafe 2003 Sams Teach Yourself CGI in 24 Hours 2003 edicion Estados Unidos Sams Publishing p 48 ISBN 0672324040 Consultado el 13 de marzo de 2015 Consultado el 13 de marzo de 2015 Vease tambien EditarLenguaje de programacion Proceso de traduccion de programas Compilador Depurador Lenguaje interpretado Lenguaje compiladoEnlaces externos EditarDrPubaGump enlace roto disponible en Internet Archive vease el historial la primera version y la ultima A tiny Interpreter written in Scheme which provides to interpret PUBA GUMP a subset of BASIC in Scheme IBM Card Interpreters page at Columbia University Datos Q183065Obtenido de https es wikipedia org w index php title Interprete informatica amp oldid 133754200, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos