En informática , la evaluación parcial es una técnica para optimizar programas mediante especialización . Su aplicación más directa consiste en crear programas nuevos que se ejecuten más rápido que los originales, manteniendo al mismo tiempo el mismo comportamiento.
Un programa informáticose considera como una asignación de datos de entrada a datos de salida:
dóndeLos datos estáticos son la parte de los datos de entrada que se conoce en tiempo de compilación.
El evaluador parcial transformaenprecalculando todos los datos de entrada estáticos en tiempo de compilación.Se denomina "programa residual" y debería ejecutarse de forma más eficiente que el programa original. El acto de evaluación parcial se denomina "residualización".a.
Proyecciones de Futamura
Un ejemplo particularmente interesante del uso de la evaluación parcial, descrita por primera vez en la década de 1970 por Yoshihiko Futamura, [ 1 ] es cuandoes un intérprete para un lenguaje de programación .
Sies código fuente diseñado para ejecutarse dentro de ese intérprete, luego la evaluación parcial del intérprete con respecto a estos datos/programa produce, una versión del intérprete que solo ejecuta ese código fuente, está escrita en el lenguaje de implementación del intérprete, no requiere que se vuelva a suministrar el código fuente y se ejecuta más rápido que la combinación original del intérprete y el código fuente. En este casoes efectivamente una versión compilada de.
Esta técnica se conoce como la primera proyección de Futamura, de la cual existen tres:
- Especializar un intérprete para un código fuente dado, generando un archivo ejecutable.
- Especializar el especializador para el intérprete (como se aplicó en el #1), lo que produce un compilador.
- Especializar el especializador para sí mismo (como se aplica en el punto 2), lo que da como resultado una herramienta que puede convertir cualquier intérprete en un compilador equivalente.
Fueron descritos por Futamura en japonés en 1971 [ 2 ] y en inglés en 1983. [ 3 ]
RPython de PyPy y el framework Truffle de GraalVM son ejemplos de compiladores JIT del mundo real que implementan la primera proyección de Futamura.
Véase también
Referencias
- ↑ «Profesor Yoshihiko Futamura» . fi.ftmr.info . Consultado el 28 de enero de 2026 .
- ↑ "Evaluación parcial del proceso de computación: un enfoque para un compilador-compilador", Transacciones del Instituto de Ingenieros de Electrónica y Comunicaciones de Japón , 54-C : 721–728 , 1971
- ↑ Futamura, Y. (1983). "Cálculo parcial de programas". Simposios RIMS sobre Ciencia e Ingeniería del Software . Notas de clase en Ciencias de la Computación. Vol. 147. Springer. págs. 1–35 . doi : 10.1007/3-540-11980-9_13 . hdl : 2433/103401 . ISBN 3-540-11980-9.
Referencias generales
- Futamura, Y. (1999). "Evaluación parcial del proceso de computación: un enfoque para un compilador-compilador". Higher-Order and Symbolic Computation . 12 (4): 381– 391. CiteSeerX 10.1.1.10.2747 . doi : 10.1023/A:1010095604496 . S2CID 12673078 .
- Consel, Charles; Danvy, Olivier (1993). «Notas tutoriales sobre evaluación parcial». POPL '93: Actas del 20.º Simposio ACM SIGPLAN-SIGACT sobre principios de lenguajes de programación . Association for Computing Machinery. págs. 493–501 . CiteSeerX 10.1.1.114.7330 . doi : 10.1145/158511.158707 . ISBN 0897915607. S2CID 698339 .
Enlaces externos
- Jones, Neil D.; Gomard, Carsten K.; Sestoft, Peter (1993). Evaluación parcial y generación automática de programas . Prentice Hall. ISBN 9780130202499.
- Danvy, O., ed. (1999). "Evaluación parcial y manipulación de programas basada en semántica PEPM'99" (PDF) . CiteSeerX 10.1.1.164.2284 .
- Veldhuizen, Todd L. (1999). "Plantillas de C++ como evaluación parcial". PEPM'99 . págs. 15–. arXiv : cs/9810010 .
- Aplicación de la evaluación parcial dinámica a lenguajes de programación dinámicos y reflexivos.
- Optimizaciones del compilador
- Estrategia de evaluación