Articulo de referencia

Evaluación parcial

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 eje...

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áticoprograma{\displaystyle {\texttt {prog}}}se considera como una asignación de datos de entrada a datos de salida:

programa:Iestático×IdinámicaO,{\displaystyle {\texttt {prog}}:I_{\text{estático}}\times I_{\text{dinámico}}\to O,}

dóndeIestático{\displaystyle I_{\text{estático}}}Los datos estáticos son la parte de los datos de entrada que se conoce en tiempo de compilación.

El evaluador parcial transformaprograma,Iestático{\displaystyle \langle {\texttt {prog}},I_{\text{static}}\rangle }enprograma:IdinámicaO{\displaystyle {\texttt {prog}}^{*}:I_{\text{dynamic}}\to O}precalculando todos los datos de entrada estáticos en tiempo de compilación.programa{\displaystyle {\texttt {prog}}^{*}}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".programa{\displaystyle {\texttt {prog}}}aprograma{\displaystyle {\texttt {prog}}^{*}}.

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 cuandoprograma{\displaystyle {\texttt {prog}}}es un intérprete para un lenguaje de programación .

SiIestático{\displaystyle I_{\text{estático}}}es 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 produceprograma{\displaystyle {\texttt {prog}}^{*}}, 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 casoprograma{\displaystyle {\texttt {prog}}^{*}}es efectivamente una versión compilada deIestático{\displaystyle I_{\text{estático}}}.

Esta técnica se conoce como la primera proyección de Futamura, de la cual existen tres:

  1. Especializar un intérprete para un código fuente dado, generando un archivo ejecutable.
  2. Especializar el especializador para el intérprete (como se aplicó en el #1), lo que produce un compilador.
  3. Especializar el especializador para sí mismo (como se aplica en el punto n.° 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

  1. «Profesor Yoshihiko Futamura» . fi.ftmr.info . Consultado el 28 de enero de 2026 .
  2. "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
  3. 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 . 
  • 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.
Obtenido de " https://en.wikipedia.org/w/index.php?title=Partial_evaluation&oldid=1337641006 "