Ir al contenido

Diferencia entre revisiones de «Intérprete (informática)»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
agrego secciones traducidas desde la wikipedia en inglés. Fusiono artículo con lo traducido
Sin resumen de edición
Línea 1: Línea 1:
Un '''intérprete''' es un [[programa (computación)|programa informático]]hai aja no saben anda
Un '''lenguaje interpretado''' es un [[lenguaje de programación]] que está diseñado para ser ejecutado por medio de un [[intérprete informático|intérprete]], en contraste con los [[lenguaje compilado|lenguajes compilados]]. Teóricamente, cualquier [[lenguaje de programación|lenguaje]] puede ser [[compilador|compilado]] o ser interpretado, así que esta designación es aplicada puramente debido a la práctica de implementación común y no a alguna característica subyacente de un lenguaje en particular. Sin embargo, hay los lenguajes que son diseñados para ser intrínsecamente interpretativos, por lo tanto un [[compilador]] causarán una carencia de la eficacia. Muchos autores rechazan la clasificación de lenguajes de programación entre interpretados y compilados, considerando que el modo de ejecución (por medio de intérprete o de [[compilador]]) del [[programa de computadora|programa]] escrito en el lenguaje es independiente del propio lenguaje. A ciertos lenguajes interpretados también se les conoce como lenguajes de '''''[[guión (informática)|script]]'''''.
capaz de analizar y ejecutar otros programas, escritos en un [[lenguajes de alto nivel|lenguaje de alto nivel]]. Los intérpretes se diferencian de los [[compilador]]es en que mientras estos traducen un programa desde su descripción en un [[lenguaje de programación]] al [[código máquina]] del sistema destino, los primeros (los interpretes) sólo realizan la [[proceso de traducción de programas|traducción]] a medida que sea necesario, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.


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]]).
Muchos lenguajes han sido implementados usando tanto compiladores como intérpretes, incluyendo [[Lisp]], [[Lenguaje de programación Pascal|Pascal]], [[lenguaje C|C]], [[BASIC]], y [[Python]]. Mientras que [[Lenguaje de programación Java|Java]] es traducido a una forma que se destina a ser interpretada, la [[compilación justo a tiempo]] es frecuentemente usada para generar el [[código de máquina]]. Los lenguajes de [[Microsoft .NET]] compilan a una forma intermedia ([[Common Intermediate Language|CIL]]) la cual es entonces a menudo compilada en código de máquina nativo; sin embargo hay una [[máquina virtual]] capaz de interpretar el CIL. Muchas implementaciones Lisp pueden mezclar libremente código interpretado y compilado. Estas implementaciones también usan un compilador que puede traducir arbitrariamente código fuente en [[tiempo de ejecución]] (runtime) a código de máquina.


Comparando su actuación con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intérprete corresponde al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.
== Antecedentes históricos del interpretado y compilado ==


En la actualidad, uno de los entornos más comunes de uso de los intérpretes informáticos es [[Internet]], debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.
En los comienzos de la computación, el diseño del lenguaje fue fuertemente influenciado por la decisión de usar como modo de ejecución, la compilación o la interpretación. Por ejemplo, algunos lenguajes compiladas requieren que los programas deben indicar explícitamente el [[tipo de dato]] de una [[Variable (programación)|variable]] en el momento en que sea declarada o al ser usada por primera vez. Por otro lado, algunos lenguajes interpretados toman ventaja de los aspectos dinámicos de la interpretación para hacer tales declaraciones innecesarias. Por ejemplo, [[SmallTalk]], el cual fue diseñado para ser interpretado en tiempo de ejecución, permite a objetos genéricos interactuar dinámicamente entre sí.


== Ejemplos ==
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 (programación)|loop]] o una [[subrutina]] hiciera que ciertas líneas se ejecutaran múltiples veces, ellas debían ser 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 una cierta forma representación intermedia del programa, como el [[bytecode]] o el [[código enhebrado]], que entonces es ejecutado por un [[intérprete (informática)|intérprete]] de bytecode. Los ejemplos incluyen el [[Phyton]], y [[Java]]. Similarmente, el [[Ruby]] utiliza un [[árbol de sintaxis abstracto]] como representación intermedia. La representación intermedia puede ser compilada de una vez por todas (como en Java), cada vez que se vaya a ejecutar (como en [[Perl]] o Ruby), o cada vez que un cambio en el [[código fuente]] es detectado antes de la ejecución (como en Phyton).
Algunos ejemplos de [[lenguaje interpretado|lenguajes que son normalmente interpretados en vez de compilados]] son:


*[[Perl]]
== Ventajas de los lenguajes interpretados ==

Los lenguajes interpretados dan a los programas cierta flexibilidad adicional sobre los [[lenguaje compilado|lenguajes compilados]]. Algunas características que son más fáciles de implementar en intérpretes que en compiladores incluyen, pero no se limitan, a:

* independencia de [[Plataforma (informática)|plataforma]] (por ejemplo el [[byte code]] de Java)
* [[Reflexión (informática)|reflexión]] y uso reflexivo del evaluador (ej. una función [[eval]] de primer orden)
* [[Tipo de dato|tipos]] dinámicos
* facilidad en la [[depuración]] (es más fácil obtener información del código fuente en lenguajes interpretados)
* pequeño tamaño del programa (puesto que los lenguajes interpretados tienen flexibilidad para elegir el [[conjunto de instrucciones|código de instrucción]])
* [[ámbito (programación|ámbito]] dinámico
* [[Recolector de basura|gerencia de memoria automática]]

== Desventajas de los lenguajes interpretados ==

La ejecución del programa por medio de un intérprete es usualmente mucho menos eficiente que la ejecución de un programa compilado. No es [[eficiencia de algoritmos|eficiente en tiempo]] porque, o cada instrucción debe pasar por una interpretación en tiempo de ejecución, o como en más recientes impementaciones, el código tiene que ser compilado a una representación intermedia antes de cada ejecución. La máquina virtual es una solución parcial al problema de la eficiencia del tiempo pues la definición del lenguaje intermedio es mucha más cercana al [[lenguaje de máquina]] y por lo tanto más fácil de ser traducida en tiempo de ejecución. Otra desventaja es la necesidad de un intérprete en la máquina local para poder hacer la ejecución posible.

==Lenguajes interpretados de uso común==

Los lenguajes que suelen ser interpretados más famosos en la actualidad son (en orden alfabético):

*[[ActionScript]]
*[[Active_Server_Pages|ASP]] (hasta la versión 3)
*[[Bash]]
*[[Basic4GL]] (Basic para OpenGL. Permite generar ejecutables Windows completos)
*[[BeanShell]] (Java en lenguaje de Scripts)
*[[Game_Maker_Language|GML]]
*[[Inform]]
*[[IO]] (es un lenguaje reciente -2002-)
*[[JavaScript]] (todas las plataformas)
*[[Lenguaje de programación Logo|Logo]] ([[Linux]], [[Windows]] y [[Mac]])
*[[Lenguaje de programación R]]
*[[Lisp]]
*[[eAthena]] (utilizado en el [[emulador]] de [[Ragnarok Online]] ''[[eAthena]]'')
*[[Lua]]
*[[Lush]] (Lisp para gráficos [[Linux]])
*[[NWNScript]] (empleado en el [[videojuego]] ''[[Neverwinter Nights]]'' y ''[[Neverwinter Nights 2]]'')
*[[Perl]] (todas las plataformas)
*[[PHP]]
*[[PHP]]
*[[Lenguaje de programación Java|Java]]
*[[Pike]] (es el más rápido de todos, al estar escrito en gran parte en código nativo)
*[[Javascript]]
*[[Python]] (todas las plataformas)
*[[Logo (Lenguaje de programación)|Logo]]
*[[REXX]] y variantes como [[Object REXX]] (todas las plataformas, en especial: [[OS/2]] / [[AmigaOS]])
*[[Active Server Pages|ASP]] (hasta la versión 3)
*[[Ruby]]
*[[Tcl]]
*[[Python]]
* C#
*[[VBScript]] (Microsoft [[Windows]])
*J#

*ASP
==Véase también==
* [[Lenguaje compilado]]
* [[Guion (Informática)|Guion]]
* [[Intérprete de comandos]]


== Véase también ==
* [[Lenguaje de programación]]
* [[Proceso de traducción de programas]]
* [[Compilador]]
* [[Depurador]]


[[Categoría:Lenguajes interpretados|Interpretado]]
[[Categoría:Herramientas de programación]]
[[Categoría:Programas de código objeto]]


[[ar:لغة مفسرة]]
[[ar:مفسر (برمجة)]]
[[bs:Interpreter]]
[[ca:Llenguatge interpretat]]
[[cs:Interpret (software)]]
[[de:Interpretersprache]]
[[da:Fortolker]]
[[en:Interpreted language]]
[[de:Interpreter]]
[[fr:Langage interprété]]
[[el:Διερμηνέας (υπολογιστές)]]
[[pl:Język interpretowany]]
[[en:Interpreter (computing)]]
[[pt:Linguagem interpretada]]
[[et:Interpretaator]]
[[ru:Интерпретируемый язык программирования]]
[[eu:Interpretatzaile]]
[[sv:Interpreterande programspråk]]
[[fa:مفسر (رایانه)]]
[[tr:Yorumlanan programlama dili]]
[[fi:Ohjelmointikielen tulkki]]
[[fr:Interprète (informatique)]]
[[he:מפרש (תוכנה)]]
[[hr:Interpreter]]
[[hu:Értelmező]]
[[is:Túlkur (tölvunarfræði)]]
[[it:Interprete (informatica)]]
[[ja:インタプリタ]]
[[ko:인터프리터]]
[[lt:Interpretatorius]]
[[ms:Pentafsir (pengkomputeran)]]
[[nl:Interpreter]]
[[pl:Interpreter (program komputerowy)]]
[[pt:Interpretador]]
[[ro:Interpretor]]
[[ru:Интерпретатор]]
[[simple:Interpreter (computing)]]
[[sk:Interpreter (programovanie)]]
[[sl:Interpreter]]
[[sr:Интерпретатор]]
[[sv:Interpretator]]
[[th:โปรแกรมแปลคำสั่ง]]
[[tr:Yorumlayıcı]]
[[uk:Інтерпретатор]]
[[vi:Trình thông dịch]]
[[zh:直譯器]]

Revisión del 18:15 1 sep 2009

Un intérprete es un programa informáticohai aja no saben anda

capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código máquina del sistema destino, los primeros (los interpretes) sólo realizan la traducción a medida que sea necesario, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.

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).

Comparando su actuación con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intérprete corresponde al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.

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

Ejemplos

Algunos ejemplos de lenguajes que son normalmente interpretados en vez de compilados son:

Véase también