吃什么东西养胃| 肾虚吃什么药好| 肉芽是什么| 卵巢囊肿有什么症状| 补体c3偏高说明什么| 脚踝肿什么原因| 手串断了是什么预兆| 涧是什么意思| 吃葡萄对身体有什么好处| 脸部填充用什么填充最好| 8000年前是什么朝代| 秦二世为什么姓胡| 淋巴结肿大看什么科室最好| 美国的国花是什么花| 下巴长痘是为什么| 查甲状腺功能挂什么科| 小孩尿不出来尿是什么原因| 蝌蚪吃什么食物| 扁桃体1度肿大是什么意思| 什么是重水| 甲状腺肿大是什么原因引起| 焗油和染发有什么区别| 主动权是什么意思| 甲亢查什么| 明矾是什么东西| canyou是什么意思| 恏是什么意思| 肺结节吃什么食物散结节最快| 姨妈推迟是什么原因| 为什么会有盆腔积液| 肚子拉稀吃什么药| 上午11点是什么时辰| 艾灸痒痒的是什么原因| 关羽的刀叫什么名字| 卫生棉条是什么| 为什么来月经会拉肚子| 包皮脱皮是什么原因| m指的是什么| 止血芳酸又叫什么名| 全性向是什么意思| 瘦的快是什么原因| 福生无量是什么意思| 2 26是什么意思| 雅蠛蝶什么意思| 黄鼠狼喜欢吃什么东西| 维生素ad和d3有什么区别| 胃疼可以吃什么食物| 睡觉多梦是什么原因| 尿蛋白弱阳性是什么意思| 球菌阳性是什么意思| 曙光什么意思| 什么牌子的山地车好骑又不贵| 女性夜尿多吃什么调理| cc是什么牌子| 什么空如什么| 一什么房子| 垫脚石是什么意思| 晰字五行属什么| 天热出汗多是什么原因| 男人长期喝什么茶最好| 低烧是什么病的前兆| 指甲表面凹凸不平是什么原因| 白内障的主要症状是什么| 全身发黄是什么原因| 疖肿是什么意思| 中戏是什么学校| 汐字五行属什么| 舌根起泡是什么原因| sp是什么面料| 滴虫长什么样子图片| 虫字旁的字和什么有关| 两肺纹理增重什么意思| 椒盐是什么| 见多识广是什么生肖| 坐小月子可以吃什么水果| 肝叶钙化灶是什么意思| 8月3日是什么日子| 窗口期是什么意思| 生育津贴什么时候到账| 异性是什么意思| 自身免疫性胃炎是什么意思| 坐骨神经痛是什么症状| 路的尽头是什么| 蜂窝织炎用什么抗生素| 990是什么意思| 什么的寒冷| 真菌感染吃什么药| 什么是比值| 修女是什么意思| 六月19是什么日子| 江西是什么菜系| 颈椎曲度变直是什么意思| 施字五行属什么| cache是什么意思| 曼陀罗是什么| 五联什么时候打| 事无巨细是什么意思| 刘邦和项羽是什么关系| 怀孕会出现什么状况| 半夜容易醒是什么原因| 事急从权是什么意思| 吹弹可破的意思是什么| 晚上1点是什么时辰| 牙龈起包是什么原因| 老佛爷是什么牌子| 5月9号什么星座| 鲁肃的性格特点是什么| 3月22日是什么星座| 人心隔肚皮什么意思| 犹太人为什么那么聪明| 右腿麻木是什么原因| 脸红什么| 甲状腺结节是什么意思| 疱疹是什么样子的| 2000年属什么的| 苏打水是什么| 内膜薄是什么原因| 吃什么才能提高免疫力| 广式腊肠炒什么菜好吃| 工商联是什么单位| bv中间型是什么意思| 胎毒是什么意思| 吃避孕药会有什么副作用| 胃糜烂吃什么药可以根治| 百花齐放是什么生肖| 狐臭什么味| 天上的星星为什么会发光| 为什么痛风就痛一只脚| 吃螃蟹不能喝什么饮料| 相依相偎是什么意思| 氮是什么| 121是什么意思| 反吟是什么意思| 毛主席女儿为什么姓李| 编程是什么专业| 猜忌是什么意思| 垂髫是什么意思| 男人阳萎吃什么药最好| 03年属什么生肖| 尿酸高适合吃什么食物| 恃宠而骄什么意思| 正月是什么意思| 胆固醇高是什么原因| 肚脐眼周围疼是什么原因| 梦见很多虫子是什么意思| 红隼吃什么| 豆蔻年华是什么意思| 八哥是什么鸟| 儿童发育过早应该挂什么科| 乙肝属于什么科| 海兔是什么| hcg是检查什么的| twice什么意思| 黄加蓝色是什么颜色| 过期化妆品属于什么垃圾| 10万个为什么的作者| 眼皮发黑是什么病症| 鸩杀是什么意思| 搞基是什么| 海蓝之谜适合什么年龄| 纸醉金迷下一句是什么| 茶叶过期了有什么用途| 左眼皮一直跳是什么意思| 为什么会尿血| 有品味什么意思| 老是腹泻是什么原因导致的| xy是什么意思| 打葡萄糖点滴有什么用| 13岁属什么| 吃鹅蛋对孕妇有什么好处| 男性为什么长丝状疣| 巨细胞病毒igg阳性是什么意思| 什么的孙悟空| 唇色深的人适合什么颜色的口红| 六月初二是什么日子| 也字五行属什么| 溃疡性结肠炎有什么症状| c1e驾照能开什么车| 肩周炎挂什么科| 云吞面是什么面| 吃了小龙虾不能吃什么| 神经性头痛吃什么药好| 测五行缺什么| 钴蓝色是什么颜色| 公共关系是什么意思| 扁桃是什么水果| 行驶证和驾驶证有什么区别| 错觉是什么意思| 肾结石什么原因引起的| bmi指数是什么| 何以笙箫默什么意思| 梦到拔牙是什么预兆| 肺气虚吃什么食物| 昊是什么意思| 受孕是什么意思| 五爷是什么菩萨| 什么是囊肿| b型血阳性是什么意思| 活好的女人有什么表现| lh是什么意思啊| 射精出血是什么原因| 8月18日什么星座| 弥可保是什么药| 奇花异草的异什么意思| 10.5号是什么星座| 阴虚火旺吃什么中药| 在什么什么后面的英文| 魄力是什么意思| 唯女子与小人难养也什么意思| 怀孕初期吃什么水果好| 减肥能吃什么零食| ceo是什么意思| 强直性脊柱炎是什么病| 一碗香是什么菜| 屁股里面疼是什么原因| 小孩鼻子出血什么原因| 今天生日什么星座| 桑黄有什么药用价值| 有始无终是什么生肖| 痢疾吃什么药最有效| 自卑是什么意思| 克是什么意思| 拔牙第二天可以吃什么| 虐狗什么意思| 持之以恒是什么意思| 女人吃什么提高性激素| 家什是什么意思| 产后漏尿是什么原因| 主胰管不扩张是什么意思| 九个月的宝宝吃什么辅食食谱| 四级什么时候报名| 过期食品属于什么垃圾| 脚肿吃什么消肿最快| 秦时明月什么时候更新| 轻微脑梗吃什么药| 脱脂棉是什么| 梦见自己在飞是什么征兆| 孕妇什么不能吃| 今天生日什么星座| 发烧了吃什么食物好| 心率过快会有什么后果| 唐僧的真名叫什么| 梦到死人了有什么兆头| 屎壳郎的学名叫什么| 银屑病是什么引起的| 34岁属什么的生肖| 67什么意思| 全科门诊主要看什么| 什么是无性婚姻| 甲状旁腺分泌什么激素| 苦瓜泡水喝有什么好处| 尿酸高吃什么能降| 梦见和尚是什么预兆| 刑警队是干什么的| 什么是肺磨玻璃结节| 妹妹是什么意思| 缺钙会出现什么症状| 牛油果是什么味道的| 来例假吃什么食物好| 双红出彩是什么生肖| ecco什么牌子| 维生素c十一什么意思| 脑死亡是什么原因引起的| 腿酸胀是什么原因| 百度Ir al contenido

爆料:《异形》《变形金刚5》等大片组团来内地淘金了

De Wikipedia, la enciclopedia libre
Patrón de dise?o de intérprete UML de W3sDesign.
百度 南京市副市长胡万进,南京市博物总馆馆长曹志君,周恩来纪念地管理局局长孙晓燕,淮安市档案局局长金德海,区委常委、宣传部长张建闯,区政协原副主席金志庚以及省、市、区相关主办及承办单位主要负责人,部分“周恩来班”、“邓颖超班”师生代表参加了开展仪式。

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

[editar]

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

[editar]

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

[editar]

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

[editar]

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

[editar]

Algunos ejemplos de intérpretes:

Lenguaje interpretado

[editar]

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

[editar]

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

[editar]

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

[editar]

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

[editar]

  • APL Un lenguaje orientado a vectores que usa un conjunto de caracteres inusual
    • J Una variante de en el que la definición tácita ofrece algunos de los beneficios de la compilación

  • BASIC (aunque la versión original, era compilada, así como muchos modernos)

Lenguajes normalmente compilados a código byte

[editar]

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 anticipado, o ejecutado nativamente, por el procesador hardware.

Véase también

[editar]

Notas y referencias

[editar]
  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.
  5. ?XMLmosaic Programming Language? [Lenguaje de programación XMLmosaic]. CodePlex (en inglés). Archivado desde el original el 2 de agosto de 2009. Consultado el 11 de julio de 2025. ?Un lenguaje de programación interpretado parecido a C# escrito en Visual Basic .NET?. 

Enlaces externos

[editar]
乘晕宁又叫什么 十一点是什么时辰 鹅翅膀下垂是什么原因 1963年发生了什么 眉头长痘痘是因为什么原因引起的
梦见看电影是什么意思 为什么会被鬼压床 什么一清二白 慢性胃炎要吃什么药 什么是半衰期
为什么的拼音怎么写 吃盐吃多了有什么危害 管科是什么专业 意见是什么意思 三庭五眼是什么意思
看正月初一是什么生肖 bls是什么意思 男人肝火旺吃什么药 轻断食什么意思 金砖国家是什么意思
为什么不能抖腿wzqsfys.com 什么东西补精子最快hcv9jop3ns7r.cn 屁股里面疼是什么原因hcv9jop0ns2r.cn 塑料水杯什么材质好hcv7jop9ns9r.cn 桥本甲状腺炎挂什么科hcv9jop2ns0r.cn
打饱嗝是什么原因造成的hcv8jop8ns1r.cn 心脏右束支传导阻滞是什么意思tiangongnft.com 头皮软绵绵的什么原因hcv7jop7ns1r.cn 1217是什么星座hcv8jop5ns9r.cn 凝血四项是检查什么的zhiyanzhang.com
多吃山竹有什么好处hcv8jop1ns7r.cn 骨髓穿刺能查出什么病hcv7jop6ns0r.cn 爱情的故事分分合合是什么歌kuyehao.com 双恋是什么意思hcv7jop9ns6r.cn 感冒吃什么水果比较好hcv7jop5ns3r.cn
检查头部挂什么科室hcv9jop5ns0r.cn 吃月饼是什么节日hcv8jop8ns1r.cn 脾阳虚吃什么中成药hcv8jop4ns9r.cn 拉肚子吃什么蔬菜hcv9jop4ns2r.cn 什么人不能爬泰山hcv8jop6ns6r.cn
百度