|
Curso avanzado de Prolog |
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.
© Copyright 2002
Angel Fernández Pineda.
SUPER!
















































