stringtranslate.com

Diseño e implementación de lenguajes de programación.

Los lenguajes de programación generalmente se crean diseñando una forma de representación de un programa de computadora y escribiendo una implementación para el concepto desarrollado, [1] generalmente un intérprete o compilador . Los intérpretes están diseñados para leer programas, generalmente en alguna variación de un formato de texto , y realizar acciones basadas en lo que leen, mientras que los compiladores convierten el código a un nivel inferior. [2]

Diseño

En el diseño de lenguajes de programación, hay una amplia variedad de factores a considerar. Algunos factores pueden ser mutuamente excluyentes (por ejemplo, seguridad versus velocidad). Puede ser necesario considerar si un lenguaje de programación funcionará mejor al interpretarlo o compilarlo, si un lenguaje debe tipificarse dinámica o estáticamente, si se heredará y la sintaxis general del lenguaje. [3] Muchos factores involucrados con el diseño de un lenguaje pueden ser decididos por los objetivos detrás del lenguaje. Es importante considerar el público objetivo de un idioma, sus características únicas y su propósito. [4] Es una buena práctica observar lo que les falta o lo que dificultan los idiomas existentes para asegurarse de que un idioma sirva para un propósito. [4]

Varios expertos han sugerido principios de diseño útiles:

“Así que mi consejo para los diseñadores e implementadores del software del futuro es resumido:
no decidas exactamente qué vas a hacer hasta que sepas cómo hacerlo;
y no decida cómo hacerlo hasta que haya evaluado su plan con todos los criterios de calidad deseados.
Y si no puedes hacer eso, simplifica tu diseño hasta que puedas”.
“un lenguaje de programación es una herramienta que debe ayudar al programador en los aspectos más difíciles de su arte,
es decir, diseño, documentación y depuración de programas”.
“Los criterios objetivos para un buen diseño lingüístico se pueden resumir en cinco frases clave:
simplicidad, seguridad, traducción rápida, código objeto eficiente y legibilidad”.
"Es absurdo realizar elaborados controles de seguridad en las pruebas de depuración, cuando no se confía en los resultados, y luego eliminarlos en las pruebas de producción, cuando un resultado erróneo podría ser costoso o desastroso. ¿Qué pensaríamos de un entusiasta de la navegación que usa ¿Su chaleco salvavidas cuando entrena en tierra firme pero se lo quita tan pronto como se hace a la mar?

Implementación

Intérpretes

Un intérprete es un programa que lee otro programa, normalmente como texto, [4] como se ve en lenguajes como Python . [2] Los intérpretes leen el código y producen el resultado directamente. [8] Los intérpretes normalmente leen el código línea por línea y lo analizan para convertirlo y ejecutarlo como operaciones y acciones. [9]

Compiladores

Los compiladores son programas que leen programas, generalmente también como algún tipo de texto, y convierten el código en operaciones u código de máquina de nivel inferior . [4] Los formatos compilados generados por los compiladores almacenan las acciones de nivel inferior como un archivo. [2] Los lenguajes compilados convertidos a código de máquina tienden a ser mucho más rápidos, ya que las operaciones de nivel inferior son más fáciles de ejecutar y los resultados se pueden predecir y compilar con anticipación. [9]

Proceso

Los procesos de creación de un lenguaje de programación pueden diferir de un desarrollador a otro; sin embargo, aquí hay un proceso general de cómo se podría crear un lenguaje de programación, que incluye conceptos comunes:

Referencias

  1. ^ Tomassetti, Federico (8 de mayo de 2019). "¿Cómo haría para crear un lenguaje de programación?". Instrumentos . Consultado el 3 de marzo de 2023 .
  2. ^ abc "Compilador versus intérprete". Frikis para frikis . 17 de enero de 2022 . Consultado el 3 de marzo de 2023 .
  3. ^ "Lenguajes de programación y aprendizaje". Universidad de Washington . Universidad de Washington . Consultado el 2 de marzo de 2023 .
  4. ^ abcd "¿Cómo se crean los lenguajes de programación?". Ir sin código . 8 de diciembre de 2021 . Consultado el 2 de marzo de 2023 .
  5. ^ Hoare, COCHE (1972). "La calidad del software". Software: práctica y experiencia . 2 (2): 103–105. doi : 10.1002/spe.4380020202 . S2CID  62662609.
  6. ^ "Consejos sobre el diseño de lenguajes de programación" (PDF) . 1973 . Consultado el 7 de marzo de 2023 .
  7. «Sobre el diseño de lenguajes de programación» (PDF) . 1974 . Consultado el 9 de marzo de 2023 .
  8. ^ Buceador, Laurence (7 de diciembre de 2021). "Publicado el 7 de diciembre de 2021 Interpretación de las reglas del código: rendimiento, performatividad y producción". Informe de derecho computacional del MIT .
  9. ^ ab Rathi, Mukul (31 de marzo de 2017). "Cómo escribí mi propio lenguaje de programación" adecuado ". mukulrathi . Consultado el 2 de marzo de 2023 .
  10. ^ Chouchanian, Vic. "Lenguajes de programación". Universidad Estatal de California Northridge . Consultado el 2 de marzo de 2023 .
  11. ^ Stroustrup, Bjarne. "Una historia de C++: 1979-1991" (PDF) . Archivado (PDF) desde el original el 2 de febrero de 2019 . Consultado el 18 de julio de 2013 .
  12. ^ Ferguson, Andrés. "Una historia de los lenguajes de programación informática". Universidad de Brown . Consultado el 2 de marzo de 2023 .
  13. ^ Glück, Robert (2012). "Arranque de generadores de compiladores a partir de evaluadores parciales". En Clarke, Edmund; Virbitskaite, Irina; Voronkov, Andrei (eds.). Perspectivas de la informática de sistemas: octava conferencia internacional en memoria de Andrei Ershov, PSI 2011, Novosibirsk, Rusia, 27 de junio - 1 de julio de 2011, artículos seleccionados revisados . Apuntes de conferencias sobre informática. vol. 7162. Saltador. págs. 125-141. doi :10.1007/978-3-642-29709-0_13. Comenzar presenta el problema del huevo y la gallina que resulta familiar en la construcción de compiladores: se necesita un compilador para arrancar un compilador, y arrancar generadores de compiladores no es una excepción.
  14. ^ "Instalación de GCC: Construcción". Proyecto GNU - Fundación para el Software Libre (FSF) .