Curso avanzado de Prolog

Este curso avanzado de Prolog esta dedicado a las capacidades de orden superior del lenguaje. Se trata de un conjunto de funcionalidades generalmente desconocidas (no s�lo en Prolog, sino tambi�n en otros lenguajes) pero que dotan de una enorme expresividad y potencia a los programas.

.�Orden Superior

El concepto de orden superior es tan dif�cil de entender como de explicar. Podriamos definirlo como la capacidad de un lenguaje para manejar su propio c�digo como una estructura de datos m�s. El orden superior existe en muchos lenguajes pero, debido a que se implementa de formas distintas, no se suele usar esta denominaci�n. Algunos ejemplos:

  • En el lenguaje C: los punteros a funciones. Estos permiten pasar funciones como argumentos.
  • En Java y otros lenguajes OO: las referencias a instancias. Permiten ejecutar c�digo distinto dependiendo de la referencia utilizada.

Un aspecto particular del orden superior es la capacidad de pasar un procedimiento o funci�n como argumento a otro procedimiento o funci�n. Esta es la caracter�stica m�s utilizada.

.�Metaprogramaci�n

La metaprogramaci�n es una implementaci�n posible del orden superior tremendamente vers�til. Consiste en la posibilidad de que el c�digo se modifique a s� mismo. Para entender la diferencia entre metaprogramaci�n y orden superior pondremos un ejemplo:

  • Escribimos una funci�n, y la pasamos como argumento a otra funci�n. �sta �ltima la ejecuta sin saber exactamente qu� est� ejecutando. Esto es una caracter�stica de orden superior.
  • Tomamos una cadena de texto donde almacenamos el nombre de una funci�n, por ejemplo, tabla_logaritmo. Por otra parte construimos una lista con dos elementos, los n�meros 3 y 5, por ejemplo. Ahora juntamos la lista con la cadena de texto y generamos una llamada v�lida a la funci�n tabla_logaritmo(3,5). La llamada se ejecuta. Esto es metaprogramaci�n.
Prolog cuenta con esta caracter�stica.

� Copyright 2002

Angel Fern�ndez Pineda.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO