1. Universidad de oriente
Núcleo de Monagas
Departamento de Ingeniería de sistemas
Curso Especial de Grado
Maturín/ Monagas/ Venezuela
Profesor:
Ing. Jonathan Vázquez
Ronald Cortez
Carlos Castro
Maturín, Mayo de 2015 Equipo
2. Equipo
1. Introducción
2. Programación Declarativa
3. Requisitos que debe cumplir la lógica
4. Programación lógica
5. Programación Funcional
6. Comparación con los lenguajes convencionales y
áreas de aplicación
7. Diseño del lenguaje y escritura de programas
8. Lenguajes en la Programación Declarativa
9. Conclusión
10. Referencia Bibliográficas
Ronald Cortez
4. Equipo
Ronald Cortez
Es un estilo de programación en el que el programador
especifica qué debe computarse y no cómo debe hacerse.
programa = lógica + control
algoritmos + estructuras de datos = programas
Componente lógico = el significado del programa
Componente de control -> su eficiencia
la tarea de programar se centra en la lógica
5. Equipo
Ronald Cortez
• Un programa es una teoría formal en una
cierta lógica, esto es, un conjunto de
fórmulas lógicas
La computación se entiende como una forma
de inferencia o deducción en dicha lógica.
6. Equipo
Ronald Cortez
1. Disponer de un lenguaje que sea suficientemente
expresivo.
2. Disponer de una semántica operacional.
3. Disponer de una semántica declarativa.
4. resultados de corrección y completitud
8. Equipo
Ronald Cortez
Lógica de cláusulas de Horn
Gestión automática de la memoria
Built-in search
a) El programa puede responder a diferentes
objetivos sin efectuar cambios.
b) Se permite el cómputo de datos parcialmente
definidos.
c) La relación de entrada/salida no está fijada de
antemano.
10. Equipo
Ronald Cortez
a) Diseño del lenguaje y escritura
de programas.
b) Verificación de programas.
c) Mantenimiento.
d) Coste y eficiencia.
11. Equipo
Ronald Cortez
Sintaxis sencilla
Modularidad y compilación separada
Mecanismos de reutilización del software
Facilidades de soporte al método de análisis
• son lenguajes de especificación =⇒ muy
adecuados en las fases de análisis y rápido
prototipo
• requieren del uso de algún tipo de seudocódigo
+ técnica de diseño para la confección de un
algoritmo
Entornos de programación
12. Equipo
Ronald Cortez
Verificación de la corrección
Terminación
Depuración de programas
• El uso de baterías de pruebas no asegura un programa libre de
errores.
• Si se desea tener un alto grado de certeza, la batería de pruebas
debe de ser significativa =⇒ se alarga el tiempo de desarrollo del
programa.
• Para ayudar en la tarea de la depuración el lenguaje debe
suministrar:
Detección de errores en tiempo de compilación;
Depuración de errores en tiempo de ejecución;
Una sintaxis que sea legible.
13. Equipo
Ronald Cortez
a) Facilidad de uso y lectura.
Para que no sea muy complicado llegar a comprender el texto del
programa y encontrar los errores.
También, si hay que extender el programa, un programador que no
conozca la aplicación (o incluso el lenguaje) se beneficiará de estas
propiedades.
b) Modularidad y compilación separada.
Para que los errores estén localizados y simplificar las modificaciones.
Nuevamente, la posibilidad de realizar compilación separada ahorra gran
cantidad de tiempo de desarrollo.
14. Equipo
Ronald Cortez
a) Coste de ejecución. El coste de ejecución es de primaria importancia en
aplicaciones que se ejecutan repetidamente.
Uno de los puntos débiles de los lenguajes declarativos es que suelen
ser ineficientes.
Causa: La dificultad de implementar las operaciones de unificación y
emparejamiento y los mecanismos de búsqueda de soluciones en
máquinas de arquitecturas convencionales.
b) Coste de desarrollo. Comprende los costes asociados a las fases de
análisis, programación y verificación de un programa. Es un criterio
importante, ya que el coste de la hora de programador es muy alto frente
al de la hora de UCP.
16. Equipo
Ronald Cortez
A pesar de ser un área de trabajo relativamente nueva la
programación declarativa ha encontrado una gran variedad
de aplicaciones
Más generalmente, la programación declarativa se ha
aplicado en todos los campos de la computación simbólica
(lenguajes de computación simbólica).
• Representación del Conocimiento, Resolución de
Problemas, Desarrollo de Sistemas de Producción, Sistemas
Expertos y Procesamiento del lenguaje natural.
• Metaprogramación.
• Prototipado de aplicaciones, Bases de Datos Deductivas,
Servidores y buceadores de información inteligentes.
• Química y biología molecular.
• Diseño de sistemas VLSI.