stringtranslate.com

Implementación del lenguaje de programación.

En programación de computadoras , una implementación de lenguaje de programación es un sistema para ejecutar programas de computadora . Hay dos enfoques generales para la implementación del lenguaje de programación: [1]

Intérprete

Un intérprete se compone de dos partes: un analizador y un evaluador . Después de que un intérprete lee un programa como entrada, el analizador lo procesa. El analizador divide el programa en componentes del lenguaje para formar un árbol de análisis . Luego, el evaluador utiliza el árbol de análisis para ejecutar el programa. [3]

Máquina virtual

Una máquina virtual es un tipo especial de intérprete que interpreta el código de bytes. [2] Bytecode es un código portátil de bajo nivel similar al código de máquina, aunque generalmente se ejecuta en una máquina virtual en lugar de en una máquina física. [4] Para mejorar su eficiencia, muchos lenguajes de programación como Java , [4] Python , [5] y C# [6] se compilan en código de bytes antes de ser interpretados.

Compilador justo a tiempo

Algunas máquinas virtuales incluyen un compilador justo a tiempo (JIT) para mejorar la eficiencia de la ejecución del código de bytes. Mientras la máquina virtual ejecuta el código de bytes, si el compilador JIT determina que una parte del código de bytes se utilizará repetidamente, compila esa parte particular en código de máquina. Luego, el compilador JIT almacena el código de la máquina en la memoria para que pueda ser utilizado por la máquina virtual. Los compiladores JIT intentan lograr un equilibrio entre un tiempo de compilación más largo y un tiempo de ejecución más rápido. [2]

Compilador

Un compilador traduce un programa escrito en un idioma a otro idioma. La mayoría de los compiladores están organizados en tres etapas: un front-end , un optimizador y un back-end . El front-end es responsable de comprender el programa. Se asegura de que el programa sea válido y lo transforma en una representación intermedia , una estructura de datos utilizada por el compilador para representar el programa. El optimizador mejora la representación intermedia para aumentar la velocidad o reducir el tamaño del ejecutable que finalmente produce el compilador. El backend convierte la representación intermedia optimizada al lenguaje de salida del compilador. [7]

Si un compilador de un lenguaje de alto nivel determinado produce otro lenguaje de alto nivel, se llama transpilador . Los transpiladores se pueden utilizar para ampliar los lenguajes existentes o para simplificar el desarrollo de compiladores explotando implementaciones portátiles y bien optimizadas de otros lenguajes (como C ). [2]

Son posibles muchas combinaciones de interpretación y compilación, y muchas implementaciones de lenguajes de programación modernos incluyen elementos de ambas. Por ejemplo, el lenguaje de programación Smalltalk se implementa convencionalmente mediante compilación en código de bytes , que luego es interpretado o compilado por una máquina virtual . Dado que el código de bytes de Smalltalk se ejecuta en una máquina virtual, es portátil a través de diferentes plataformas de hardware. [8]

Múltiples implementaciones

Los lenguajes de programación pueden tener múltiples implementaciones. Se pueden escribir diferentes implementaciones en diferentes lenguajes y pueden usar diferentes métodos para compilar o interpretar el código. Por ejemplo, las implementaciones de Python incluyen: [9]

Referencias

  1. ^ Ranta, Aarne (6 de febrero de 2012). Implementación de lenguajes de programación (PDF) . Publicaciones universitarias. págs. 16-18. ISBN 9781848900646. Archivado (PDF) desde el original el 7 de noviembre de 2020 . Consultado el 22 de marzo de 2020 .
  2. ^ abcde panadero, Greg. "Implementaciones de lenguaje". Ciencias de la Computación - Universidad Simon Fraser . Archivado desde el original el 8 de marzo de 2019 . Consultado el 22 de marzo de 2020 .
  3. ^ Evans, David (19 de agosto de 2011). Introducción a la Computación (PDF) . Universidad de Virginia. pag. 211 . Consultado el 22 de marzo de 2020 .
  4. ^ ab Sridhar, Jay (29 de agosto de 2017). "Por qué la máquina virtual Java ayuda a que su código funcione mejor". Hacer uso de . Consultado el 22 de marzo de 2020 .
  5. ^ Bennett, James (23 de abril de 2018). "Una introducción al código de bytes de Python". Opensource.com . Consultado el 22 de marzo de 2020 .
  6. ^ Ali, Mirza Farrukh (12 de octubre de 2017). "DotNet en tiempo de ejecución de lenguaje común (CLR)". Medio . Consultado el 22 de marzo de 2020 .
  7. ^ Cooper, Keith; Torczon, Linda (7 de febrero de 2011). Ingeniería de un compilador (2ª ed.). Morgan Kaufman. págs. 6-9. ISBN 9780120884780.
  8. ^ Lewis, Simon (11 de mayo de 1995). El arte y la ciencia de Smalltalk (PDF) . Prentice Hall. págs. 20-21. ISBN 9780133713459. Consultado el 23 de marzo de 2020 .
  9. ^ "Implementaciones alternativas de Python". Python.org . Consultado el 23 de marzo de 2020 .

enlaces externos