PDA

Visualizza la versione completa : [JAVA vs PROLOG e simili] AI :domande


toni00t
17-06-2014, 17:10
ciao : ho dato un occhiata al codice sorgente di alcune chatbot nel web : alcuni di loro
sono scritti in java o c++ , il che mi ha lasciato di stucco .
mi sono posto questi dubbi :
una chatbot è un esempio di AI o sbaglio?

per quale motivo dovrei usare il prolog o lisp invece di java per programmare AI (come una
chatbot o altro) ? un linguaggio ad oggetti non va bene per programmare applicazioni di AI ?

Scara95
17-06-2014, 18:01
Tieni presente che il mio discorso è molto generale e non scende nel dettaglio.

lisp e prolog sono di fatto linguaggi general purpose (vedasi ad esempio SBCL, Racket, ciao e swi-prolog). Tuttavia offrono astrazioni comode per alcuni problemi specifici. Ad esempio il fatto che dati e codice coincidano, e ciò permette soluzioni interessanti. Tuttavia in generale non esistono linguaggi che non possono fare una cosa (ad esclusione di casi specifici) e dato un linguaggio è possibile sviluppare astrazioni che permettano la facile risoluzione di un problema. Inoltre implementazioni in lisp e prolog potrebbero incorrere in problemi prestazionali risolvibili trammite la reimplementazione in altri linguaggi. Spesso, e sto parlando generalmente, al difuori dell'AI, si usa un dato linguaggio per la realizzazioni di prototipi e/o implementazioni di riferimento in quanto in quel linguaggio è più facile la ricerca che poi vengono sostituiti da implementazioni in altri linguaggi per questioni prestazionali.

M.A.W. 1968
17-06-2014, 20:47
Per arricchire un minimo la panoramica, sempre restando alle generalità, molti linguaggi "verticali" o presunti tali sono costruiti in modo da essere particolarmente vicini al dominio del problema di un dato settore, dunque maggiormente familiari a ricercatori che abbiano in curriculum poca o nulla preparazione informatica. Fino a pochi anni fa, codesta era la normalità.

Quando si parla di linguaggi di programmazione dal punto di vista scientifico, occorre e basta conoscere il teorema di Boehm-Jacopini sull'espressività dei linguaggi di programmazione. In teoria, quasi qualunque linguaggio di programmazione (purché rispetti i requisiti minimi sanciti dal noto teorema) è potenzialmente adatto ad eseguire qualsiasi algoritmo praticamente utilizzabile ed esprimibile in un qualsiasi formalismo Church-Turing equivalente. Il diavolo, però, è nei dettagli: al di là delle banalità (in quasi nessun linguaggio si può scrivere efficacemente un device driver o un modulo di kernel per un SO mainstream, tanto per limitarsi al più macroscopico e arcinoto esempio ex cathedra, da prima lezione introduttiva), l'ingegneria del software è tale e non è una scienza proprio perché contempla anche un fattore umano e sociale, come pure fattori economici ed altri aspetti secondari rispetto alla banale funzionalità.

Ecco quindi che, in definitiva, taluni linguaggi risultano molto più adatti di altri a risolvere determinati problemi, per un complesso coacervo di fattori che mescola elementi eminentemente poco quantificabili (ad esempio la scarsissima propensione di taluni professionisti a prendere anche minimamente in considerazione certi linguaggi, o talune attitudini sviluppate in seno alla comunità dei teorici dei linguaggi di programmazione fin dagli anni Settanta del secolo scorso, eleganza del codice, robustezza, etc.), accanto a metriche asseverate (LOC, function points, McCabe, Halstead, costo complessivo di sviluppo e manutenzione, efficienza, eccetera).

toni00t
17-06-2014, 21:09
grazie delle risposte : in conclusione per programmare una chatbot credo di aver capito che farei meglio a farlo in prolog , ma che potrei farlo bene anche in java . discorso spinoso!

Scara95
17-06-2014, 21:15
grazie delle risposte : in conclusione per programmare una chatbot credo di aver capito che farei meglio a farlo in prolog , ma che potrei farlo bene anche in java . discorso spinoso! Se non hai esigenze specifiche e non è per scopo di studio ti conviene prendere (o modificare) una libreria già fatta, vista anche la complessità dell'argomento se vuoi ottenere risultati discreti.

toni00t
18-06-2014, 07:40
ciao : a questo punto quantomeno è meglio darci un occhiata a entrambi, compreso al prolog stesso . La cosa fondamentale è che imparare un nuovo linguaggio come quello non sia una perdita di tempo , ma visto che in pratica me lo state consigliando e che nei corsi di AI di solito si usa...

Scara95
18-06-2014, 16:35
ciao : a questo punto quantomeno è meglio darci un occhiata a entrambi, compreso al prolog stesso . La cosa fondamentale è che imparare un nuovo linguaggio come quello non sia una perdita di tempo , ma visto che in pratica me lo state consigliando e che nei corsi di AI di solito si usa...
Le basi di prolog e lisp sono piuttosto semplici, tuttavia un uso consapevole dei linguaggi è tutto su un altro piano. A questo si aggiunge il fatto che in realtà lisp è una famiglia di linguaggi molto diversi fra loro.

Loading