stringtranslate.com

Transformación del programa

Una transformación de programa es cualquier operación que toma un programa de computadora y genera otro programa. En muchos casos se requiere que el programa transformado sea semánticamente equivalente al original, en relación con una semántica formal particular y en menos casos las transformaciones dan como resultado programas que difieren semánticamente del original de manera predecible. [1]

Si bien las transformaciones se pueden realizar manualmente, suele ser más práctico utilizar un sistema de transformación de programas que aplique especificaciones de las transformaciones requeridas. Las transformaciones de programas pueden especificarse como procedimientos automatizados que modifican las estructuras de datos del compilador (por ejemplo, árboles de sintaxis abstracta ) que representan el texto del programa, o pueden especificarse más convenientemente utilizando patrones o plantillas que representen fragmentos de código fuente parametrizados.

Un requisito práctico para los sistemas de transformación de código fuente es que puedan procesar eficazmente programas escritos en un lenguaje de programación . Esto generalmente requiere la integración de una interfaz completa para el lenguaje de programación de interés, incluido el análisis del código fuente , la creación de representaciones internas del programa de las estructuras del código, el significado de los símbolos del programa, análisis estáticos útiles y la regeneración del código fuente válido a partir de representaciones transformadas del programa. . El problema de construir e integrar interfaces adecuadas para lenguajes convencionales ( Java , C++ , PHP , etc.) puede ser tan difícil como construir el propio sistema de transformación de programas debido a la complejidad de dichos lenguajes. Para que sea ampliamente útil, un sistema de transformación debe poder manejar muchos lenguajes de programación de destino y debe proporcionar algún medio para especificar dichas interfaces.

Una generalización de la equivalencia semántica es la noción de refinamiento de programa : un programa es un refinamiento de otro si termina en todos los estados iniciales en los que termina el programa original, y para cada uno de esos estados se garantiza que terminará en un posible estado final para el programa original. En otras palabras, un refinamiento de un programa es más definido y más determinista que el programa original. Si dos programas son refinamientos entre sí, entonces los programas son equivalentes. [ se necesita aclaración ]

Ver también

Referencias

  1. ^ Ward, Martín (1989). Demostración de refinamientos y transformaciones del programa (tesis de doctorado). Universidad de Oxford.{{cite book}}: Mantenimiento CS1: falta el editor de la ubicación ( enlace )

Enlaces externos