Prolog. ¿Para qué c*ño sirve?

B

Alguien más aparte de yo conoce el lenguaje de programación lógica Prolog ? De ser así, alguien sabe qué aplicaciones prácticas tiene ?

Esta mañana lo hablaba con algunos compañeros de otros grupos de la asignatura de lógica y de varios intentos de preguntar a nuestros profesores para qué sirve, en ninguno hemos obtenido algo parecido a una respuesta.

Para qué sirve el prolog en la vida real ?

J0d3r

pues no es mas que un lenguaje de programación tremendamente orientado a las funciones lógicas, es decir algebra de bool etc...

SouL

jajaja puto asco que da el prolog, menos mal que ya aprobé lógica, además en el examen tipo test acerté 2 de 3 q hicieron sobre prolog a boleo xD. Bueno, q se me va, yo tampoco se pa q sirve xDDD

guner

http://es.wikipedia.org/wiki/Prolog

"Prolog, proveniente del francés Programation et Logique, es un lenguaje de programación bastante popular en el medio de investigación en Inteligencia Artificial."

B

#4 quedo como un borde pero es que no es eso lo que he preguntado.

itero mi pregunta: Para qué sirve el prolog en la vida real ?

#6 7 líneas! jarl
#7 vaya tela. creo que nunca entenderé ese código pq soy lo peor pero gracias XD

S

Servir, sirve mucho para IA, y para resolver problemas pequeños y complejos es gratamente sorprendente, sobre todo con los modos de uso.

Es un clásico el programa ése de 7 líneas que te halla funciones primitivas y derivadas xD

itero mi pregunta: Para qué sirve el prolog en la vida real ?

No sé, la vida de la mayoría de investigadores de IA es bastante real :P

S

/* Derivation Definition /
d(X,X,1) :- !. /
d x dx = 1 /
d(C,X,0) :- atomic(C). /
d c dx = 0 /
d(-U,X,-A) :- d(U,X,A). /
d -u dx = - d u dx /

d(U+V,X,A+B) :- d(U,X,A), d(V,X,B). /
d u+v dx = d u dx + d v dx /
d(U-V,X,A-B) :- d(U,X,A), d(V,X,B). /
d u-v dx = d u dx - d v dx /
d(C
U,X,CA) :- atomic(C), C \= X, d(U,X,A), !. / d cu dx = cd u dx /
d(U
V,X,BU+AV) :- d(U,X,A), d(V,X,B). /* d uv dx = ud v dx + v*d u dx /
d(U/V,X,A) :- d(U
V-1,X,A). /* d u/v dx = d (u*v)-1 dx /
d(UC,X,C
UC-1W) :- atomic(C), C \= X, d(U,X,W). / d uc dx = cuc-1d u dx /
d(log(U),X,A
U-1) :- d(U,X,A). /* d ln(u) dx = u-1 * d u dx */

/* Integral Definition /
i(0,X,0) :- !. /
Int 0 dx = 0 /
i(X,X,(X
X)/2) :- !. /* Int X dx = (X2)/2 /
i(C,X,C
X) :- atomic(C). /* Int c dx = c*x /
i(-U,X,-A) :- i(U,X,A). /
Int -U dx = - Int U dx /
i(U+V,X,A+B) :- i(U,X,A), i(V,X,B). /
Int U+V dx = Int U dx + Int V dx /
i(U-V,X,A-B) :- i(U,X,A), i(V,X,B). /
Int U-V dx = Int U dx - Int V dx /
i(C
U,X,CA) :- atomic(C), C \= X, i(U,X,A), !. / Int cU dx = c (Int U dx) /
i(XC,X,(XC+1)/(C+1)) :- atomic(C), !. /
Int xc dx = xc+1/(c+1) /
i(U,V,U
V-A) :- d(V,U,A), !. /* Int u dv = u*v - Int v du */

/* Simplification Rules /
s(+,X,0,X). /
x + 0 = x /
s(+,0,X,X). /
0 + x = x /
s(+,X,Y,X+Y). /
x + y = x + y /
s(+,X,Y,Z) :- integer(X), integer(Y), Z is X+Y. /
x + y = z <- Calculate /
s(
,,0,0). /* anything * 0 = 0 /
s(
,0,
,0). /* 0 * anything = 0 /
s(
,1,X,X). /* 1 * x = x /
s(
,X,1,X). /* x * 1 = x /
s(
,X,Y,XY). / x * y = x * y /
s(
,XY,W,XZ) :- integer(Y), integer(W), Z is YW.

s(
,X,Y,Z) :- integer(X), integer(Y), Z is XY. / x * y = z <- Calculate */

/* Simplification Definition */
simp(E,E) :- atomic(E), !.
simp(E,F) :- E =.. [Op, La, Ra], simp(La,X), simp(Ra,Y), s(Op,X,Y,F).

Éste es el programa completo en la página en inglés de la wikipedia, aunque parte del código es superfluo, porque con los modos de uso la integración es redundante: sólo tienes que invertir las incógnitas en la derivación.

guiye

He visto sopas de letras más chulas que esa

Tig

Yo tuve prácticas el año pasado y ya las saqué jeje, todo es ponerse, aunque aún al final había cosas que seguía sin enteder por que pasaban, y eso que es un programa de lógica ¬¬

guner

#5, tranki : ), pero aún así contesté a lo que preguntabas.

NoSHeL

No todos los lenguajes tienen que tener una relacion con la vida real, de hecho hay mas de los que te imaginas que son meramente para el estudio/enseñanza.

Saludos!

PeLoTaSo

Yo he utilizado prolog este año y al principio parecía que no servía para nada pero luego me he ido dando cuenta que puede resolver problemas que mentalmente tardarías tu tiempo, es decir, tu le introduces los nombres de todos los miembros de tu familia, incluso lejanos, y luego las relaciones entre ellos y con una consulta te puede decir si hay relacion entre dos personas o no. Esto es algo muy básico que te enseñan en primero no creas que sólo se puede hacer esto.

Como dice soy_heaton es la base de cualquier IA. Por ejemplo, en la UA lo han utilizado para hacer la IA de algunos robots.

#7 No habia visto yo ese código, tengo que probarlo, aunque antes tengo que intentar comprenderlo para saber como realizar las consultas xD.

Hannibax

Dios como no os puede gustar la logica y el prolog.... a ver entenderme.. no es que sea apasionante... pero si es cierto que es de gran utilidad, la IA se basa en la logica computacional al 100% (bueno en la propabilidad tmb un poquito.) y es muy necesario aprenderla para poder luego programar, en cualquier otro lenguaje, codigo que tenga algo de heuristica.

Usuarios habituales