Network: Needish · clandescuento · Willka Travel & Adventures
// you’re reading...

Programación Declarativa

Traducción libre del artículo Declarative programming [en] hecha por mí. Se aceptan críticas y sugerencias

La programación declarativa es una forma de programación que implica la descripción de un problema dado en lugar de proveer una solucion para dicho problema, dejando la interpretación de los pasos específicos para llegar a dicha solución a un interprete no especificado. La programación declarativa adopta, por lo tanto, un enfoque diferente al de la programación imperativa tradicional, como por ejemplo el caso de C, la que requiere que el programador especifique un lista completa de instrucciones de modo de ejecutar una tarea determinada.

En otras palabras, la programación declarativa provee el “que”, pero deja el “como” liberado a la implementación particular del interprete. Por lo tanto se puede ver que la programación declarativa tiene dos fases bien diferenciadas, la declaración y la interpretación.

Es importante señalar que a pesar de referirnos a interprete no estamos limitados a “lenguajes interpretados” en el sentido habitual del termino, sino que tambien podemos estar trabajando con “lenguajes compilados”.

Los lenguajes declarativos describen la relación entre variables en terminos de funciones y reglas de inferencia o transformación. El interprete produce, mediante algoritmo de procesado de estas delcaraciones, un resultado.
La programación declarativa incluye tanto aspectos de programación lógica como de programación funcional. La programación declarativa fue tambien conocida como “programación orientada al valor”, pero este termino ha dejado de usarse ultimamente.

Desventajas de la programación declarativa

La principal desventaja de la programación declarativa es que no es Turing-complete, o sea no puede resolver cualquier problema dado que está restringida al subconjunto de problemas para los que el interprete fue diseñado.

Otra desventaja de la programación declarativa está relacionada con la eficiencia. Dado que es necesaria una fase de interpretación extra, en la cual se deben evaluar todas las consecuencias de todas las declaraciones realizadas,el proceso es relativamente más lento que en la programación imperativa, en que los cambios de estado del sistema están dado por instrucciones particulares y no por un conjunto de condiciones arbitrariamente grande.

Ventajas

A pesar de lo anterior existen algunas ventajas en el uso de la programación declarativa. Entre las ventajas se destaca que la solución de un problema se puede realizar con un nivel de abstracción considerablemente alto, sin entrar en detalles de implementacion irrelevantes, lo que hace a la soluciones más facil de entender por las personas. La resolución de problemas complejos es resuelta por el interprete a partir de la declaración de las condiciones dadas.

La programación declarativa es muy usada en la resolución de problemas relacionados con inteligencia artificial, problemas de condiciones de borde, bases de datos, configuración, y comunicación entre procesos, sin embargo ningun leguaje declarativo se aproxima en popularidad a los lenguajes imperativos

Ejemplos de lenguajes declarativos

Algunos de los lenguajes declarativos más conocidos son:

  • Prolog
  • SQL
  • HTML
  • WSDL (Web Services Description Language)
  • XML Stylesheet Language for Transformation

Comments

3 comments for “Programación Declarativa”

  1. en realidad mas q una critica tengo una pregunta y es, si php soporta alguna forma de programacion declarativa y si en efecto lo hace donde peudo encrontrar informacion?

    Posted by Simon | April 27, 2006, 15:51
  2. Simón: Realmente desconozco si existe algo de ese tipo. Seguramente exista para casos particulares algun framework que haga uso de un modelo declarativo, pero no lo sé con certeza. Tal vez alguien más pueda aportar alguna idea respecto a este tema.

    Saludos

    Posted by pviojo | April 28, 2006, 12:16
  3. Usa el framework dinámica basado en Java no se necesita conocer java
    el sitio web http://www.martincordova.com

    Posted by Denny Torcates | November 1, 2007, 15:37

Post a comment

Mi nombre es Pablo Viojo y tengo 27 años. Nací en Uruguay el 7 de agosto de 1981. Actualmente vivo en Santiago, Chile
Aparte de esto me interesa todo lo que tenga que ver con Internet y las nuevas tecnologías. Más info aquí, en mi hCard o en formato FOAF

View Pablo Viojo's profile on LinkedIn

Featured Posts

Romper paradigmas
February 23, 2009

A veces es necesario romper paradigmas…
¿Por qué la vista, o un elemento de la vista, no puede comunicarse con el modelo?
Paradigma: Un paradigma es —desde fines de la década de 1960— un modelo o patrón en cualquier disciplina científica u otro contexto epistemológico. El concepto fue originalmente específico de la gramática; en 1900 el diccionario [...]

Reedición: Microformatos, los bloques de la web semántica
November 18, 2008

¿Que son los microformatos?
Se trata de formatos de marcado XHTML, aplicables en contextos particulares, que utilizan los atributos definidos por los estándares para mejorar la semántica de los documentos. Son una herramienta muy util para aquellas estructuras que se repiten frecuentemente en documentos, ya sea que se trate de documentos creados por una persona, por [...]

La importancia del Undo en las Web Applications
November 11, 2008

Tomado de Needish the Blog, con permiso del autor
Robert O’Callahan, en su artículo The Essence Of Web Applications, resume algunos aspectos de las aplicaciones web y su relación con las aplicaciones de escritorio.
En lo personal no estoy muy de acuerdo con lo que opina, sobre todo cuando menciona aspectos relacionados con los elementos [...]

La importancia de las interfaces en los nuevos modelos de interacción web
May 14, 2006

Últimamente este blog ha tenido bastante poco movimiento, fundamentalmente debido a falta de tiempo por parte de quien escribe por estos lados.
Si bien tengo unos cuantos temas que me gustaría tocar, fundamentalmente porque en los últimos meses me ha tocado entrar en un área bastante nueva de la programación para la web (sí, esa, la [...]

Suscribe

Enter your email address: