Buscar..


Maquina abstracta

Por eficiencia, el código de Prolog se compila generalmente para abstraer el código de la máquina antes de ejecutarse.

Se han propuesto muchas arquitecturas y variantes de máquinas abstractas diferentes para la ejecución eficiente de los programas Prolog. Éstos incluyen:

  • WAM , la máquina abstracta de Warren
  • TOAM , una máquina abstracta utilizada en B-Prolog.
  • ZIP , utilizado por ejemplo como base para la máquina virtual de SWI-Prolog
  • VAM , una arquitectura de investigación desarrollada en Viena.

Indexación

Todos los intérpretes de Prolog ampliamente utilizados utilizan la indexación de argumentos para seleccionar eficazmente las cláusulas adecuadas.

Normalmente, los usuarios pueden confiar en al menos la indexación del primer argumento , lo que significa que las cláusulas se pueden distinguir de manera eficiente por el funtor y la aridad del término más externo del primer argumento. En las llamadas en las que ese argumento tiene una instancia suficiente, las cláusulas coincidentes pueden seleccionarse esencialmente en tiempo constante mediante el hash en ese argumento.

Más recientemente, la indexación JIT se ha implementado en más sistemas, lo que permite una indexación dinámica en cualquier argumento que tenga una instancia suficiente cuando se llama el predicado.

Optimización de llamadas de cola

Prácticamente todos los sistemas Prolog implementan optimización de llamadas de cola (TCO). Esto significa que las llamadas de predicado que están en una posición de cola pueden ejecutarse en un espacio de pila constante si el predicado es determinista.

La optimización de recursión de cola (TRO) es un caso especial de optimización de llamada de cola.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow