PDA

View Full Version : Conoscete il Prolog?


Kanop
25-04-2002, 19:00
Facendo ricerche in internet riguardo l'intelligenza artificiale mi sono imbattuto in questo particolare linguaggio.
Naturalmente ciò che ho letto a proposito è assai poco, ma da quello che mi sembra di avere capito questi linguaggio serve apposta per programmare l'I.A..
Sapete qualcosa di più riguardo questo linguaggio, come è nato, su che macchine gira, magari come si fa a programmarlo, quale compilatore (ammesso che sia roba da PC) servirebbe ecc...
Naturalmente per il momento si tratta solo di curiosità.
Ciao:)

cionci
25-04-2002, 19:59
Il Prolog è un linguaggio di programmazione logico...
Serve principalmente per programmare sistemi esperti...
Se ti interessa dai una lettura a questa roba : http://info.iet.unipi.it/~lazzerini/icse/LucidiProlog.pdf

Comunque a me non piace per niente programmarci ;)

badaze
25-04-2002, 20:16
L'ho studiato alcuni anni fa all'università. Ho anche fatto un generatore di programmi su mac intosh tipo vb ma 2 o 3 anni prima di vb :( .

Comunque... Prolog significa Programmazione Logica. Usavo sia Turbo Prolog della Borland ( su PC E DOS ) sia un'altro Prolog su apple. Ma era sopratutto un linguaggio universitario e dopo gli studi non l'ho mai sentito nominare.

/\/\@®¢Ø
25-04-2002, 20:49
Originariamente inviato da Kanop
[B]
Sapete qualcosa di più riguardo questo linguaggio, come è nato, su che macchine gira, magari come si fa a programmarlo, quale compilatore (ammesso che sia roba da PC) servirebbe ecc...
Naturalmente per il momento si tratta solo di curiosità.
Ciao:)

Se non sbaglio si tratta di un linguaggio nato principalmente per i problemi di I.A. . Sostanzialmente si tratta di un linguaggio in cui invece di scrivere una serie di istruzioni definisci le relazioni tra i dati, i dati di base. la "esecuzione" del codice si ha effettuando delle "richieste" al programma. Un esempio classico e' quello delle parentele. Ad esempio puoi definire la relazione "padre(tizio,caio)" che diche che tizio e' padre di caio, analogamente con "padre(caio,sempronio)" dici che caio e' padre di sempronio. A questo punto puoi cominciare ad elaborare le relazioni. Puoi dire ad esempio che "se A e' padre di B e B e' padre di C allora A e' nonno di C".
il codice che lo scrive e' ( dovrebbe ! e' un po' che non lo uso )
nonno(A,C):- padre(A,B) , padre(B,C).
La cosa bella e' che ora puoi usare questa relazione in tutti i modi possibili. Ad esempio puoi dare il padre ed ottenere il figlio , o viceversa. Oppure puoi solo chiedere di avere tutte le coppie "nonno-nipote" ed ottenerle una ad una, anche se queste esplicitamente non sono scritte da nessuna parte.
L'utilita' e' comunque fortemente limitata dal fatto che ci vuole molta esperienza ed "occhio" per impostare il tutto, altrimenti rischi che il "motore" prolog continui a ricercare all'infinito senza trovarti una soluzione.
Oggi l'uso che se ne fa e' molto limitato ( nullo penso al di fuori degli ambienti accademici ), proprio per via di questi suoi limiti, anche se forse le cose potranno migliorare ora che si sta cercando di applicare tecniche di apprendimento automatico al motore stesso del linguaggio.
Di interessante oggi il prolog ha soprattutto che sono state fatte delle "estensioni" al linguaggio originale per lavorare in ambiti particolari. Ad esempio puo' essere utilizzato come linguaggio di interrogazione per i database. Oppure , se dotato di estensioni per lavorare sui numeri, per problemi di ottimizzazione , soprattutto quando questi non sono comodamente risolvibili tramite la programmazione lineare.

Per utilizzare il prolog basta un compilatore/interprete ( e' un linguaggio che usa una VM come Java ). C'e' una versione gratuita della GNU , il gprolog , che si compila su praticamente qualsiasi computer degno di tal nome ( e fra l'altro ha incorporato le estensioni per problemi su interi ).

Il linguaggio non e' difficile, ha veramente pochi costrutti, pero' per riuscire a sfruttarlo ci vuole un minimo di teoria sotto.

Kanop
26-04-2002, 12:23
Grazie a tutti per le informazioni:)

cionci
27-04-2002, 11:37
Se ti interessa l'IA...uno degli argomenti che mi è piaciuto di più sono le reti neurali...