Categorías destacadas
programacion php    
Artículo
13
¡votar!

 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.
Prolog cuenta con esta característica.

© Copyright 2002

Angel Fernández Pineda.

Publicado por:
manuel delgado
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
Walther Degreiff dice:

SUPER!

22/05/2010, a las 17:04:14
 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon