100% encontró este documento útil (1 voto)
130 vistas

Programación Lógica

Este documento contiene información sobre varios temas de programación, incluyendo programación lógica, programación paralela, programación distribuida y programación lógica inductiva. Explica conceptos clave como predicados, reglas lógicas, pipelines, arquitecturas distribuidas y sistemas de aprendizaje de primer orden.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
130 vistas

Programación Lógica

Este documento contiene información sobre varios temas de programación, incluyendo programación lógica, programación paralela, programación distribuida y programación lógica inductiva. Explica conceptos clave como predicados, reglas lógicas, pipelines, arquitecturas distribuidas y sistemas de aprendizaje de primer orden.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 14

Ing.

sistemas computacionales
ateria: Programacin Lgica y Funciona
PROFESOR:
Horacio Escobar Rodrguez
Grupo: M4
Horario: de 11:00 a.m. a 12:00 p.m.

PROGRAMACIN LGICA
La programacin lgica es un tipo de paradigmas de programacin dentro del
paradigma de programacin declarativa. El resto de los subparadigmas de
programacin dentro de la programacin declarativa son: programacin
funcional, programacin con restricciones, programas DSL (de dominio especfico)
e hbridos. La programacin funcional se basa en el concepto de funcin (que no
es ms que una evolucin de los predicados), de corte ms matemtico. La
programacin lgica gira en torno al concepto de predicado, o relacin entre
elementos.
La programacin lgica encuentra su hbitat natural en aplicaciones de
inteligencia artificial o relacionada: Sistemas expertos, donde un sistema de
informacin imita las recomendaciones de un experto sobre algn dominio de
conocimiento.

Demostracin automtica de teoremas, donde un programa genera nuevos


teoremas sobre una teora existente.

Reconocimiento de lenguaje natural, donde un programa es capaz de


comprender (con limitaciones) la informacin contenida en una expresin
lingstica humana.

Etc.

La programacin lgica tambin se utiliza en aplicaciones ms "mundanas" pero


de manera muy limitada, ya que la programacin tradicional es ms adecuada a
tareas de propsito general.
La programacin lgica permite formalizar hechos del mundo real, por ejemplo:
las aves vuelan
los pinginos no vuelan
"pichurri" es un ave
"sandokan" es un perro
"alegra" es un ave

y tambin reglas o restricciones:

una mascota vuela si es un ave y no es un pingino


Ante dicho "programa" es posible establecer hiptesis que no son ms que
preguntas o incgnitas, por ejemplo:
"pichurri" vuela ?
qu mascotas vuelan ?....
Gracias a que la lgica de primer orden es computable, el ordenador ser capaz
de verificar la hiptesis, es decir, responder a las incgnitas:
Es cierto que "pichurri" vuela.
"pichurri" y "alegra" vuelan.
Obsrvese que el programa lgico no solamente es capaz de responder si una
determinada hiptesis es verdadera o falsa. Tambin es capaz de determinar qu
valores de la incgnita hacen cierta la hiptesis.
El lenguaje de programacin lgica por excelencia es Prolog, que cuenta con
diversas variantes. La ms importante es la programacin lgica con restricciones,
que posibilita la resolucin de ecuaciones lineales adems de la demostracin de
hiptesis.

PROGRAMACIN PARALELA
La programacin paralela es el uso de varios procesadores trabajando en conjunto
para dar solucin a una tarea en comn, lo que hacen es que se dividen el trabajo
y cada procesador hace una porcin del problema al poder intercambiar datos por
una red de interconexin o a travs de memoria.
La programacin paralela permite resolver problemas que no caben en un solo
procesador y que no se resuelven en un tiempo razonable, se pueden ejecutar
problemas con mayor complejidad ms rpidamente.
El rendimiento de las computadoras tradicionales secuenciales est saturndose
porque las aplicaciones de hoy en da necesitan realizar trabajo ms complejo, por
lo cual la solucin es tener varios procesadores en sistemas paralelos, al as
obtener ganancia de eficiencia siempre y cuando los algoritmos se diseen
adecuadamente.

Lenguajes para computadoras paralelos son flexibles para permitir una


implementacin eficiente y ser an ms fciles para programar.
Dos tcnicas bsicas:
Pipeline:

Un pipeline es un conjunto de elementos procesadores de datos conectados en


serie, en el cual la salida de un elemento est conectada en la entrada del que
sigue. Los elementos de esta tcnica son ejecutados en paralelo, debe haber un
tipo buffer insertando los elementos.
Aplicaciones de pipelines, consiste en mltiples procesos que estn ordenados de
tal forma que el flujo de salida de un proceso se alimenta de la entrada del
siguiente proceso.
Replicacin asincrnica

Tecnologa en la que una vez que los datos estn escritos en el sitio de
almacenamiento primario, los nuevos datos a este sitio son aceptados, sin tener
que esperar que el sitio de almacenamiento secundario o remoto termine su
escritura.
Espero que mi explicacin les sirva, si tienen algn comentario acerca de esta
entrada, espero me digan ya que estoy abierto a cualquier error.

PROGRAMACIN DISTRIBUIDA
La programacin distribuida es un paradigma de programacin enfocado en
desarrollar sistemas distribuidos, abiertos, escalables, transparentes y tolerantes a

fallos. Este paradigma es el resultado natural del uso de las computadoras y las
redes.
Casi cualquier lenguaje de programacin que tenga acceso al mximo al hardware
del sistema puede manejar la programacin distribuida, considerando una buena
cantidad de tiempo y cdigo.
La programacin distribuida tpicamente cae en alguna de las varias arquitecturas
bsicas o arquitecturas: cliente-servidor, 3-tier, n-tier, objetos distribuidos, entre
otras adems de ser base para la pragmatisidad. Los lenguajes especficamente
diseados para programacin distribuida son: Ada, Alef, E, Erlang, Limbo y Oz.
Multicomputadoras
Caractersticas generales y tipos:

Son un tipo especial de sistemas con mltiples procesadores. Las


caractersticas que les distinguen son:
1.
La memoria es privada (es decir, cada procesador tiene un mapa de
direcciones propio que no es accesible directamente a los dems).
2.
La comunicacin entre procesadores es por paso de mensajes a travs de
una red de interconexin.
En un multicomputadora, cada nodo es una computadora clsica.
Los nodos colaboran para resolver juntos un mismo problema (ejecutar la
misma aplicacin).
La comparticin de datos es explcita, ya que el acceso a datos comunes es
por paso de mensajes
.
Multicomputadoras con base en buses
Cada CPU tiene conexin directa con su propia memoria local. El nico problema
restante es la forma en que los CPU se comunicarn entre s. Es claro que aqu
tambin se necesita cierto esquema de interconexin, pero como slo es para la
comunicacin entre un CPU y otro, el volumen del trfico ser de varios rdenes
menores en relacin con el uso de una red de interconexin para el trfico CPUmemoria.
Multicomputadoras con conmutador
Se han propuesto y construido varias redes de interconexin, pero todas tienen la
propiedad de que cada CPU tiene acceso directo y exclusivo a su propia memoria
particular. Hay dos topologas populares, una retcula y un hipercubo. Las retculas
se basan en las tarjetas de circuitos impresos. Se adecuan mejor a los problemas

con naturaleza bidimensional inherente, como la teora de grficas o la visin. Un


hipercubo es un cubo n-dimensional. Se puede pensar como dos cubos ordinarios,
cada uno de los cuales cuenta con 8 vrtices y 12 aristas. Cada vrtice es un
CPU. Cada arista es una conexin entre dos CPU. Se conectan los vrtices
correspondientes de cada uno de los cubos.

PROGRAMACIN LGICA INDUCTIVA


Programacin lgica inductiva es un subcampo de la mquina de aprendizaje que
utiliza la programacin lgica como una representacin uniforme para ejemplos,
conocimientos e hiptesis. Dada una codificacin del conocimiento de fondo
conocido y un conjunto de ejemplos representados como una base de datos lgica
de datos, un sistema de ILP derivar un programa de lgica planteada como
hiptesis que implica todo el positivo y ninguno de los ejemplos negativos.
Esquema: ejemplos positivos ejemplos negativos conocimiento de fondo =>
hiptesis.
Programacin lgica inductiva es particularmente til en la bioinformtica y de
procesamiento de lenguaje natural. El trmino programacin lgica inductiva se
introdujo por primera vez en un artculo de Stephen Muggleton en 1991.
Implementaciones
ACE
Aleph
Claudien
DL-Estudiantes
DMx
FOIL
Golem
Inthelex
Cal
Mio
MIS por Ehud Shapiro
Progol

RSD
Warmr
La programacin lgica inductiva se define como la interseccin entre el
aprendizaje inductivo y la programacin lgica. Esto es as porque utiliza tcnicas
de ambos campos:
Del aprendizaje inductivo en los ordenadores hereda su objetivo: desarrollar
herramientas y tcnicas para inducir hiptesis a partir de observaciones (ejemplos)
y sintetizar nuevo conocimiento a partir de la experiencia.
De la programacin lgica hereda bsicamente el formalismo de representacin y
su orientacin a la semntica. La ILP utiliza la programacin lgica como
mecanismo para representar las hiptesis y las observaciones, superando as dos
de las principales limitaciones de las tcnicas clsicas de aprendizaje en
ordenadores: la rigidez en la representacin del conocimiento (lgica de
proposiciones, rboles de decisin, etc.) y la dificultad para expresar conocimiento
de base (background knowledge).
En los sistemas de aprendizaje de orden-0 el conjunto de entrenamiento consta de
vectores de valores, cada uno perteneciente a una clase conocida. El
conocimiento inducido permite definir clases en funcin del valor de los atributos,
siendo representable con expresiones de la lgica de proposiciones. En
ocasiones, se representa en forma de rbol de decisin: ID3, C4.5, etc. y a veces
en forma de reglas: PRISM, C4.5rules, etc.
Por el contrario, en los sistemas de aprendizaje de primer orden, el conjunto de
entrenamiento lo forman relaciones definidas de forma extensional, y el
conocimiento de base lo constituyen otras relaciones, definidas intencionalmente.
El objetivo del aprendizaje es, en estos sistemas, la construccin de un programa
lgico que defina de forma intencional una relacin objetivo (extensional) del
conjunto de entrenamiento. En este tipo de definiciones lgicas se permite la
recursin y algunos cuantificadores, muy tiles cuando se trabaja con objetos
estructurados, difciles de describir en un formato objeto-atributo-valor.
El inconveniente de usar representaciones tan expresivas como la lgica de
predicados de primer orden es que, aunque las descripciones que se construyen
tienden a ser ms sencillas que las obtenidas en lgica de proposiciones, el
espacio de bsqueda de las mismas es mucho mayor. Esto hace que la bsqueda
de la mejor descripcin sea una difcil y costosa tarea, que slo puede realizarse
mediante mtodos heursticos de bsqueda.

PROGRAMACIN CON RESTRICCIONES


La Programacin
por
restricciones
es
un
paradigma
de
la programacin en informtica, donde las relaciones entre las variables son
expresadas en trminos de restricciones (ecuaciones). Actualmente es usada
como una tecnologa de software para la descripcin y resolucin de problemas
combinatorios particularmente difciles, especialmente en las reas de
planificacin y programacin de tareas (calendarizacin).
Este paradigma representa uno de los desarrollos ms fascinantes en
los lenguajes de programacin desde 1990 y no es sorprendente que
recientemente haya sido identificada por la ACM (Asociacin de Maquinaria
Computacional) como una direccin estratgica en la investigacin en
computacin.
Se trata de un paradigma de programacin basado en la especificacin de un
conjunto de restricciones, las cuales deben ser satisfechas por cualquier solucin
del problema planteado, en lugar de especificar los pasos para obtener dicha
solucin.
La programacin con restricciones se relaciona mucho con la programacin
lgica y con la investigacin operativa. De hecho cualquier programa lgico puede
ser traducido en un programa con restricciones y viceversa. Muchas veces los
programas lgicos son traducidos a programas con restricciones debido a que la
solucin es ms eficiente que su contraparte.
La diferencia entre ambos radica principalmente en sus estilos y enfoques en el
modelado del mundo. Para ciertos problemas es ms natural (y por ende ms
simple) escribirlos como programas lgicos, mientras que en otros es ms natural
escribirlos como programas con restricciones.
El enfoque de la programacin con restricciones se basa principalmente en buscar
un estado en el cual una gran cantidad de restricciones sean satisfechas
simultneamente. Un problema se define tpicamente como un estado de la
realidad en el cual existe un nmero de variables con valor desconocido. Un
programa basado en restricciones busca dichos valores para todas las variables.
Algunos dominios de aplicacin de este paradigma son:

Dominios booleanos, donde solo existen restricciones del tipo


verdadero/falso.

Dominios en variables enteras y racionales.

Dominios lineales, donde solo se describen y analizan funciones lineales.

Dominios finitos, donde las restricciones son definidas en conjuntos finitos.

Dominios mixtos, los cuales involucran dos o ms de los anteriores.

Los lenguajes de programacin con restricciones son tpicamente ampliaciones de


otro lenguaje. El primer lenguaje utilizado a tal efecto fue Prolog. Por esta razn es
que este campo fue llamado inicialmente Programacin Lgica con Restricciones.
Ambos paradigmas comparten caractersticas muy similares, tales como las
variables lgicas (una vez que una variable es asignada a un valor, no puede ser
cambiado), o el backtracking.
La programacin con restricciones puede ser implementado como un lenguaje
propio o como bibliotecas para ser usadas en algn lenguaje de programacin
imperativo. Algunos lenguajes populares de programacin con restricciones son:

B-Prolog (Basado en Prolog, propietario)


CHIP V5 (Basado en Prolog, tambin existen bibliotecas en C y C++,
propietario)

Ciao Prolog (Basado en Prolog, software libre: GPL/LGPL)

ECLiPSe (Basado en Prolog, software libre)

Mozart ( Basado en Oz, software libre: X11)

SICStus (Basado en Prolog, propietario)

GNU Prolog (Basado en Prolog, software libre)

SWI-Prolog Un entorno Prolog que contiene varias libreras para soluciones


con restricciones (LGPL)

INTEGRACIN CON OTROS PARADIGMAS: OO,


PROGRAMACIN FUNCIONAL.
PROGRAMACION ORIENTADA A OBJETOS
La Programacin Orientada a Objetos (POO u OOP segn sus siglas en ingls) es
un paradigma de programacin que usa objetos y sus interacciones para disear
aplicaciones y programas de computadora. Est basado en varias tcnicas,
incluyendo herencia, modularidad, polimorfismo, y encapsulamiento. Su uso se
populariz a principios de la dcada de 1990. Actualmente son muchos los
lenguajes de programacin que soportan la orientacin a objetos. Actualmente una
de las reas ms candentes en la industria y en el mbito acadmico es la
orientacin a objetos. La orientacin a objetos promete mejoras de amplio alcance
en la forma de diseo, desarrollo y mantenimiento del software ofreciendo una
solucin a largo plazo a los problemas y preocupaciones que han existido desde el
comienzo en el desarrollo de software: la falta de portabilidad del cdigo y
reusabilidad, cdigo que es difcil de modificar, ciclos de desarrollo largos y
tcnicas de codificacin no intuitivas .
CARACTERISTICAS DE LENGUAJE ORIENTADA A OBJETOS

HERENCIA MULTIPLE

EFICIENCIA

suele ser comn a la mayora de los lenguajes OOP, aunque


introduce un problema al existir la posibilidad de que el objeto
sucesor herede el mismo atributo, aunque con distinto tipo y valor, de
ms de un predecesor.

Los lenguajes OOP arrastraron en un principio la reputacin de ser


ineficaces. Esto se deba en gran medida a que los primeros
lenguajes (como Smalltalk) eran interpretados y no compilados. La
existencia de compiladores permite a los desarrolladores ganar
rapidez.

ASIGNACION DE TIPOS

Los lenguajes orientados a objetos varan de forma sustancial la


forma por la que se aproximan a la asignacin de tipos.

Manejo de memoria

Los OOP son lenguajes que utilizan de manera intensiva la memoria


de la computadora.

Hay dos tipos de aproximacin a la gestin de memoria.

El sistema en tiempo de ejecucin libera la memoria


automticamente a medida que los objetos dejan de utilizarse.

Encapsulacin

Por asignacin de tipos entendemos que cada variable sea


identificada como perteneciente a una clase (asignacin fuerte) o sea
simplemente un objeto indeterminado (asignacin dbil).

Consiste en separar aquellos atributos del objeto que deben ser


conocidos por el resto, de aquellos necesarios para su
funcionamiento propio.

Polimorfismo:

comportamientos diferentes, asociados a objetos distintos, pueden


compartir el mismo nombre, al llamarlos por ese nombre se utilizar
el comportamiento correspondiente al objeto que se est usando.

Ventajas y desventajas de programacin orientada a objetos


VENTAJAS:
La OOP proporciona las siguientes ventajas sobre otros lenguajes de
programacin

Uniformidad

Comprensin

Ya que la representacin de los objetos lleva implica tanto el anlisis


como el diseo y la codificacin de los mismos.

Tanto los datos que componen los objetos, como los procedimientos
que los manipulan, estn agrupados en clases, que se corresponden
con las estructuras de informacin que el programa trata.

Flexibilidad

Al tener relacionados los procedimientos que manipulan los datos


con los datos a tratar, cualquier cambio que se realice sobre ellos
quedar reflejado automticamente en cualquier lugar donde
estos datos aparezcan.

Estabilidad

Dado que permite un tratamiento diferenciado de aquellos objetos


que permanecen constantes en el tiempo sobre aquellos que
cambian con frecuencia permite aislar las partes del programa que
permanecen inalterables en el tiempo.

DESVENTAJAS:
A pesar de que las ventajas de la programacin orientada a objetos superan
a las limitaciones de la misma, podemos encontrar algunas caractersticas
no deseables en sta. Limitaciones para el programador. No obstante que
la tecnologa orientada a objetos no es nueva, un gran porcentaje de
programadores no estn familiarizados con los conceptos de dicha
tecnologa. En otras palabras, la lgica de la programacin estructurada
sigue siendo predominante en la mayora de los desarrolladores de
software, despus de haber revisado de forma breve los principios de la
programacin orientada a objetos, nos es claro que en sta se requiere una
lgica de pensamiento totalmente diferente a la lgica comnmente
utilizada para la programacin estructurada. Tamao excesivo en las
aplicaciones resultantes. La gran mayora de los equipos de cmputo
cuentan con capacidades tanto de almacenamiento como de memoria lo
suficientemente buena como para ejecutar la mayora de las aplicaciones
que puedan desarrollarse con la tecnologa orientada a objetos, sin
embargo existen casos en los que lo anterior no se cumple.

PROGRAMACIN FUNCIONAL
La programacin funcional es un paradigma de programacin declarativa basado
en la utilizacin de funciones aritmticas que no maneja datos mutables o de
estado. Enfatiza la aplicacin de funciones, en contraste con el estilo
de programacin imperativa, que enfatiza los cambios de estado. La programacin
funcional tiene sus races en el clculo lambda, un sistema formal desarrollado en
los aos 1930 para investigar la definicin de funcin, la aplicacin de las
funciones y la recursin. Muchos lenguajes de programacin funcionales pueden
ser vistos como elaboraciones del clculo lambda.

En la prctica, la diferencia entre una funcin matemtica y la nocin de una


"funcin" utilizada en la programacin imperativa es que las funciones imperativas
pueden tener efectos secundarios, al cambiar el valor de clculos realizados
previamente. Por esta razn carecen de transparencia referencial, es decir, la
misma expresin sintctica puede resultar en valores diferentes en diferentes
momentos dependiendo del estado del programa siendo ejecutado. Con cdigo
funcional, en contraste, el valor generado por una funcin depende
exclusivamente de los argumentos alimentados a la funcin. Al eliminar los efectos
secundarios se puede entender y predecir el comportamiento de un programa
mucho ms fcilmente, y esta es una de las principales motivaciones para utilizar
la programacin funcional.
Los lenguajes de programacin funcional, especialmente los que son puramente
funcionales, han sido enfatizados en el ambiente acadmico principalmente y no
tanto en el desarrollo de software comercial. Sin embargo, lenguajes de
programacin
importantes
tales
como Scheme, Erlang, Rust, Objective
Caml y Haskell, han sido utilizados en aplicaciones comerciales e industriales por
muchas organizaciones. La programacin funcional tambin es utilizada en la
industria a travs de lenguajes de dominio especfico como R (estadstica),
Mathematica (matemticas simblicas), J y K (anlisis financiero), F# en
Microsoft.NET y XSLT (XML). Lenguajes de uso especfico usados comnmente
como SQL y Lex/Yacc, utilizan algunos elementos de programacin funcional,
especialmente al procesar valores mutables. Las hojas de clculo tambin pueden
ser consideradas lenguajes de programacin funcional.
La programacin funcional tambin puede ser desarrollada en lenguajes que no
estn diseados especficamente para la programacin funcional. En el caso
de Perl, por ejemplo, que es un lenguaje de programacin imperativo, existe un
libro que describe cmo aplicar conceptos de programacin funcional. JavaScript,
uno de los lenguajes ms ampliamente utilizados en la actualidad, tambin
incorpora capacidades de programacin funcional. Python tambin incorpora
particularidades de los lenguajes funcionales como listas de comprensin y
funciones de tratamiento de listas como matemtica de conjuntos. Java en su
versin 8, est incorporando la programacin funcional, as como el uso de las
expresiones lambda.

BIBLIOGRAFA

http://es.slideshare.net/karlabarriosalejo/savedfiles?
s_title=lenguaje-de-programacin-orientada-aobjetos&user_login=jona_1994
http://es.wikipedia.org/wiki/Programaci%C3%B3n_distribuida
http://indalog.ual.es/WWW/prolog2005.pdf
http://ccc.inaoep.mx/~emorales/Papers/2006/capilp.pdf

También podría gustarte