Una implementación de lenguaje de programación es un sistema para ejecutar programas de ordenador. Hay dos aproximaciones generales a implementación de lenguaje de programación: interpretación y recopilación.[1]

La interpretación es un método de ejecutar un programa. El programa está leído tan entrada por un intérprete, el cual actúa las acciones escritas en el programa.[2]

La compilación es un proceso diferente , donde un compilador lee en un programa, pero en vez de correr el programa, el compilador traduce este a algún otro lenguaje, como bytecode o código de máquina. El código traducido puede ser directamente ejecutado por hardware, o servir tan entrada a otro intérprete u otro compilador.[2]

Intérprete

editar

Un intérprete está compuesto de dos partes: un parseador y un evaluador. Después de que un programa es leído como un dato de entrada por un intérprete, es procesado por el parser. El parser rompe el programa a componentes de lenguaje para formar un árbol de parseo. El evaluador entonces utiliza el árbol de parseado para ejecutar el programa.[3]

Máquina virtual

editar

Una máquina virtual es un tipo especial de intérprete que interpreta bytecode.[2]​ Bytecode Es un código de nivel bajo portátil similar a código de máquina, aunque es generalmente ejecutado en una máquina virtual en vez de una máquina física.[4]​ Para mejorar su eficiencia, muchos lenguajes de programación como Java, Python, y C# están compilados a bytecode antes de ser interpretados.[5]

Compilado Justo-a-tiempo

editar

Algunas las máquinas virtuales incluyen un compilador justos-a-tiempo (JIT en inglés) para mejorar la eficacia de ejecución del bytecode. Mientras el bytecode está siendo ejecutado por la máquina virtual, si el proceso JIT del compilador determina que una porción del bytecode será utilizado repetidamente, compila que porción particular a código de máquina. El JIT del compilador entonces almacena el código de máquina en memoria de modo que pueda ser utilizado por la máquina virtual. Los compiladores JIT intentan lograr un equilibrio entre tiempo de recopilación más largo y un tiempo de ejecución más rápida.

Compilador

editar

Un compilador traduce un programa escrito en una lenguaje a otro lenguaje. La mayoría de compiladores están organizados a tres etapas: un frente, un optimizador, y un fin posterior. El fin de frente es responsable para comprensivo el programa. Hace seguro el programa es válido y transforma él a una representación intermedia, una estructura de dato utilizada por el compilador para representar el programa. El optimizer mejora la representación intermedia para aumentar la velocidad o reducir la medida del ejecutable cuál es finalmente producido por el compilador. El fin posterior convierte la representación intermedia optimizada a la lengua de producción del compilador.[6]

Si un compilador de un lenguaje de alto nivel produce otro lenguaje de nivel alta, se denomina transpilador. Los transpiladores puede ser usados para extender lenguajes existentes o para simplificar el desarrollo de compiladores mediante el uso de implementaciones optimizadas y portátiles de otros lenguajes como C).[2]​</ref>

Muchas combinaciones de interpretación y compilación son posibles, y muchas implementaciones de lenguaje de programación modernos incluyen elementos de ambos. Por ejemplo, el lenguaje de programación Smalltalk es convencionalmente implementado mediante compilación a bytecode, el cual es entonces es interpretado o compilado por una máquina virtual. Al ser corrido Smalltalk bytecode en una máquina virtual, es portátil a través de plataformas de hardware diferente.[7]

Implementaciones múltiples

editar

Los lenguajes de programación pueden tener implementaciones múltiples. Implementaciones diferentes pueden ser escritas en lenguajes diferentes y puede utilizar métodos diferentes para compilar o interpretar código. Por ejemplo, las implementaciones de Python incluyen:[8]​ 

Referencias

editar
  1. Ranta, Aarne (9 de mayo de 2012). Implementing Programming Languages (en inglés). College Publications. pp. 16-18. ISBN 9781848900646. Consultado el 22 de marzo de 2020. 
  2. a b c d Baker, Greg. «Language Implementations». Computing Science - Simon Fraser (en inglés). Consultado el 22 de marzo de 2020. 
  3. Evans, David (19 de agosto de 2011). Introduction to Computing. University of Virginia. p. 211. Consultado el 22 de marzo de 2020. 
  4. Sridhar, Jay. «Why the Java Virtual Machine Helps Your Code Run Better» (en inglés). Consultado el 22 de marzo de 2020. 
  5. Bennett, James. «An introduction to Python bytecode» (en inglés). Consultado el 22 de marzo de 2020. 
  6. Cooper, Keith; Torczon, Linda (7 de febrero de 2011). Engineering a Compiler (2nd edición). Morgan Kaufmann. pp. 6-9. ISBN 9780120884780. 
  7. Lewis, Simon (11 de mayo de 1995). The Art and Science of Smalltalk. Prentice Hall. pp. 20-21. ISBN 9780133713459. Archivado desde el original el 15 de febrero de 2020. Consultado el 23 de marzo de 2020. 
  8. «Alternative Python Implementations» (en inglés). Consultado el 23 de marzo de 2020. 

📚 Artikel Terkait di Wikipedia

Comprensión del lenguaje natural

ISBN 0-7167-0463-3 pages 188-189 Roger Schank, 1969, A conceptual dependency parser for natural language Proceedings of the 1969 conference on Computational linguistics

Gramática ambigua

c n d n | n > 0 } {\displaystyle \{a^{n}b^{n}c^{n}d^{n}|n>0\}} .​ Chart parser, otro tipo de analizador sintáctico para gramáticas ambiguas Hopcroft, John;

Java (lenguaje de programación)

«Programming Language Español». 2020. Archivado desde el original el 16 de enero de 2025. Consultado el 16 de enero de 2026/5.  «TIOBE Programming Community

Mustache (motor de plantillas)

arquitectura v1.X tienen un método render, una clase Mustache_Compiler y una clase Parser. Mustache ha inspirado numerosas bibliotecas de plantillas para JavaScript

Historia de la construcción de los compiladores

978-0-13-155077-3. Computer Science Department, University of Toronto, "The XPL Programming Language" Johnson, S.C., “Yacc - Yet Another Compiler Compiler”, Computing

Intérprete (informática)

de marzo de 2015. . Consultado el 13 de marzo de 2015. «XMLmosaic Programming Language» [Lenguaje de programación XMLmosaic]. CodePlex (en inglés). Archivado

C++11

2009) Working Draft, Standard for Programming Language C++ ISO/IEC (2003). ISO/IEC 14882:2003(E): Programming Languages - C++ §3.2 One definition rule [basic

Forth

seminal (pero que ya no se imprime) Thinking Forth por Leo Brodie, publicado en 1984. Datos: Q275472 Multimedia: Forth (programming language) / Q275472