PDA

View Full Version : chi conosce lisp e prolog???


rey.mysterio83
26-04-2006, 23:04
ciao ragazzi!!!!
mi chiedevo, siccome ho un bel compitone in università su questi due linguaggi, qualcuno li conosce mica?? :rolleyes:

o meglio...qualcuno sa pure usarli? se non bene, almeno sapere qualcosa? giusto x curiosità... o sono l'unico sciocco che all'alba del 2030 studia ancora ste cose antiche e inutili?? :(

rey.mysterio83
27-04-2006, 10:40
up

shinya
27-04-2006, 10:43
o sono l'unico sciocco che all'alba del 2030 studia ancora ste cose antiche e inutili?? :(

Non sono inutili. Conoscere un linguaggio funzionale ti da un punto di vista diverso dal quale vedere i problemi, e migliora le tue qualità di programmatore in generale (soprattutto se sei abituato solo a linguaggi imperativi).
Io so un pochino di haskell (lo sto imparando).
Mi sapresti indicare un metodo più elegante di questo per il calcolo del fattoriale?

fact n = foldl (*) 1 [1..n]

Ma gli esempi sono moltissimi, te ne accorgi solo imparando.
Il quicksort è un esempio famoso che mostrano tutti i tutorial:

qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

ed in più funziona con tutti i tipi di dato per i quali esista l'ordinabilità.
Direttamente dalla definizione.

Ovviamente hanno le loro belle controindicazioni, non sono la panacea contro tutti i mali del programmatore (l'I/O ad esempio non è banale).

In conclusione, lisp non lo conosco, ma posso indicarti una faq:
http://www.lispniks.com/faq/faq.html

rey.mysterio83
27-04-2006, 10:59
beh si in effetti... però non so chi può chiederti un programma con uno di questi linguaggi oggi...
pensavo che c++ o java fossero oramai universali... invece...
grazie mille per la guida.
vediamo se trovo qualcuno che sappia darmi nà mano mo.. :cry:

shinya
27-04-2006, 12:38
beh si in effetti... però non so chi può chiederti un programma con uno di questi linguaggi oggi...
pensavo che c++ o java fossero oramai universali... invece...

Pensa invece che la Ericsson ha sviluppato internamente un linguaggio funzionale molto simile ad haskell per i loro task, con un attenzione particolare alla gestione della concorrenza.
Si sta cominciando a diffondere anche al di fuori di ericsson in questi mesi. Si chiama Erlang, se ti interessa :)

Inoltre python ha preso in prestito molte cose da haskell, come le list comprehension e la partial evaluation delle funzioni (questa solo dalla versione 2.5 se non vado errato - non uso python solitamente, ho letto solo la news da qualche parte).

Questo per dirti quanto siano inutili i linguaggi funzionali. :ciapet:

rey.mysterio83
27-04-2006, 19:05
up. qualcuno che sappia programma con sti 2 cosi??? PAGOOOOOOOO!!! :stordita: :D

spk
27-04-2006, 20:25
Me la cavo col prolog, il lisp mi fa troppo skifo, ma se vuoi la sincerità la voglia è <0 :asd:

rey.mysterio83
27-04-2006, 20:53
Me la cavo col prolog, il lisp mi fa troppo skifo, ma se vuoi la sincerità la voglia è <0 :asd:

:cry: ...
davvero??
cacchio... bè era gia un passo avanti. be nel caso ti venisse un minimo di voglia avvisami... oppure aggiungi il mio contatto su msn se ce l'hai... ciao!

Ghepardo
27-04-2006, 20:57
Io ho studiato lisp per il corso di informatica teorica 1.

Ti linko delle dispensine, sono molto utili come introduzione:

http://www.dis.uniroma1.it/%7Elaura/didattica/suppteorica/displisp.pdf

Spero ti siano utili.

Ciao !

rey.mysterio83
27-04-2006, 22:28
grazie mille.... bhè se proprio proprio non trovo nessuno, è già un buon inizio... grazie mille! :ave:

rey.mysterio83
28-04-2006, 18:20
up

rey.mysterio83
30-04-2006, 14:55
up

huNewbie
01-05-2006, 18:27
Premettendo che San Google è il santo protettore di chi cerca qualcosa... posso dire che il Prolog è un linguaggio logico. Praticamente funziona con istruzioni dette "predicati" che possono essere veri o falsi che, combinati, portano a risolvere problemi. Non è un linguaggio di programmazione vero e proprio, ma molto di più: stà a vedere... prendendo come esempio il più famoso sillogismo del mondo: "Tutti gli uomini sono mortali. Socrate è un iomo. Quindi...?"

Uomo(Socrate)

Questo è un "fatto": indica che Socrate è un uomo. Altri esempi possono essere Pari(2) o Doppio(2, 4), il cui significato lo decide chi inventa il pradicato (volendo, ha senso dire che Doppio(4, 2), perchè è il programmatore che decide l'ordine di lettura)

Mortale(x) :- Uomo(x)

Questa invece è un'affermazione generica: indica che, se x è un uomo, allora x è mortale: in altre parole, tutti gli uomini sono mortali. Un altro esempio può essere
Pari(y) :- Doppio(x, y)
dato che il doppio di un numero è sempre pari.

A questo punto abbiamo dato al sistema tutti i dati che abbiamo. Proviamo a fargli una domanda: Socrate è mortale?

? -Mortale(Socrate)

Il sistema risponderà "Vero". In pratica un sistema Prolog può *ragionare* !

Da notare che è sempre l'utente a decidere il "linguaggio" da usare, anche se ovviamente esistono alcuni predicati standard come, che ne so, sum(x, y, z), la somma di x e y è z (la sintassi reale dipende sal sistema).

Forte, eh? :D

rey.mysterio83
01-05-2006, 21:04
si be, ma io prolog e lisp lo so usare... questo lo sapevo e so ovviamente anche di più a livello universitario, solo che... il progetto che ci hanno dato è pesantissimo! in pratica ad esempio, quello vecchio, era di creare Word in questi due linguaggi... andare a capo, sillabare, ecc...
x questo... :cry:

rey.mysterio83
02-05-2006, 14:17
up

rey.mysterio83
05-05-2006, 14:23
up