HISTORIA FUNCIONALIDAD
PROLOG EJEMPLOS VENTAJAS Y DESVENTAJAS
HISTORIA
Prolog(del francs, programmation en logique). Se trata de un lenguaje de programacin ideado a principios de los aos 70 en la universidad de aixmarseille (marsella, francia) por los profesores alain colmerauer y philippe roussel.
HISTORIA
Tena como objetivo el procesamiento de lenguajes naturales. Dio lugar a una version preliminar del lenguaje Prolog a finales de 1971 y apareciendo la versin definitiva en 1972.
HISTORIA
Esta primera versin fue programada en algol w (se denomina algol a un lenguaje de programacin. La voz es un acrnimo de las palabras inglesas algorithmic language (lenguaje algortmico)).
HISTORIA
Inicialmente se trataba de un lenguaje TOTALMENTE INTERPRETADO hasta que, en 1983, David H.D. Warren desarroll un compilador capaz de traducir Prolog en un conjunto de instrucciones de una mquina abstracta denominada Warren Abstract Machine, o abreviadamente, WAM. Desde entonces PROLOG es un lenguaje SEMI-INTERPRETADO.
HISTORIA
En la dcada de 1980 contribuy notablemente a su popularizacin el desarrollo del proyecto de la quinta generacin de computadoras en cuyo contexto se desarroll la implementacin paralelizada del lenguaje llamada KL1 y del que deriva parte del desarrollo moderno de PROLOG.
HISTORIA
En 1995 se estableci un estndar ISO (ISO/IEC 13211-1), llamado ISO-Prolog. PROLOG se enmarca en el paradigma de los lenguajes lgicos y declarativos, lo que lo diferencia enormemente de otros lenguajes ms populares tales como Fortran, Pascal, C o Java.
FUNCIONALIDAD
En los lenguajes de programacin, las instrucciones se ejecutan normalmente en orden secuencial, es decir, una a continuacin de otra, en el mismo orden en que estn escritas, que slo vara cuando se alcanza una instruccin de control (un bucle, una instruccin condicional o una transferencia).
FUNCIONALIDAD
Los programas en Prolog se componen de clusulas de Horn que constituyen reglas del tipo "modus ponendo ponens", es decir, "Si es verdad el antecedente, entonces es verdad el consecuente. No obstante, la forma de escribir las clusulas de Horn es al contrario de lo habitual.
HECHOS: Expresan relaciones entre objetos. Suponiendo que se quiera expresar el hecho de que "un coche tiene ruedas". Este hecho, consta de dos objetos, "coche" y "ruedas", y de una relacin llamada "tiene". La forma de representarlo en PROLOG es: tiene(coche,ruedas).
FUNCIONALIDAD
VARIABLES: Representan objetos que el mismo PROLOG determina, puede estar instanciada(cuando existe un objeto determinado representado por la variable) no instanciada. Los nombres de variables comienzan siempre por una letra mayscula.
FUNCIONALIDAD
REGLAS: Una regla consiste en una cabeza y un cuerpo, unidos por el signo ":-". La cabeza est formada por un nico hecho. El cuerpo puede ser uno mas hechos (conjuncin de hechos), separados por una coma (","), que acta como el "y" lgico. Las reglas finalizan con un punto (".").
FUNCIONALIDAD
EJEMPLOS
tiempo(lluvioso) ----> suelo(mojado) suelo(mojado) suelo(mojado):- tiempo(lluvioso). suelo(mojado). tiempo(lluvioso):- suelo(mojado). suelo(mojado). es_un_coche(X) ----> tiene(X,ruedas) tiene(X,ruedas):- es_un_coche(X).
enfermo_de(manuel,gripe). tiene_sintoma(alicia,cansancio). sintoma_de(fiebre,gripe). sintoma_de(tos,gripe). sintoma_de(cansancio,anemia). elimina(vitaminas,cansancio). elimina(aspirinas,fiebre). elimina(jarabe,tos). recetar_a(X,Y):-enfermo_de(Y,A),alivia(X,A). alivia(X,Y):-elimina(X,A),sintoma_de(A,Y).
EJEMPLOS
EJEMPLOS
EJEMPLOS
VENTAJAS
1. Es ms fcil pensar las soluciones y muchos detalles procedurales son resueltos automticamente por el propio lenguaje. 2. La facilidad para programar ya que se pueden escribir programas rpidamente, con pocos errores originando programas claramente legibles, aun si no se conoce muy bien el lenguaje.
VENTAJAS
3. Cada predicado (procedimiento) puede ser ejecutado, validado y examinado independiente e individualmente. 4. No tiene variables globales, ni asignacin. Cada relacin est auto contenida, lo que permite una mayor modularidad, portabilidad y reusabilidad de relaciones entre programas.
DESVENTAJAS
1. La resolucin automtica no siempre es eficiente, por lo que eventualmente se podra dar una respuesta incorrecta a una consulta. 2. Poco eficientes. 3. Poco utilizado en aplicaciones reales. 4. Algunas veces es incapaz de reconocer que un problema es (para su propio conocimiento) inaplicable o insuficiente.
DESVENTAJAS
5. Si el programa no contiene suficiente informacin para contestar una consulta, es incapaz de reconocerlo y responde no. En esta situacin sera ms eficiente conocer que la respuesta no es negativa, sino que no es posible inferir un resultado. 6. Los motores de inferencia poseen algunos lmites.