Metaprogramación y orden superior
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.