Pagine

Google
in tutto il Web in questo blog e nei suoi archivi

Visitate anche http://ilpixelmatto.altervista.org

venerdì 7 novembre 2008

Programmazione logica: Prolog

Comincio adesso a parlarvi della programmazione logica.
Questo articolo è in aggiornamento, ogni volta che potrò aggiungerò le informazioni che potrete trovare utili, quindi tornate spesso a controllare l'articolo!!!!

Che cos'è il Prolog?

Il Prolog è un linguaggio di programmazione dichiarativo. Ciò significa che in Prolog non scrivete che cosa dovrebbe fare il calcolatore linea per linea, come nei linguaggi procedurali C e Java. L'idea generale dietro i linguaggi dichiarativi è descrivere una situazione. Sulla base di questo codice, l'interprete o il compilatore vi dirà una soluzione. Nel caso del Prolog, vi dirà se una frase di Prolog sia vera o no, e, se contiene le variabili, quali valori devono avere. Ciò può suonare come una panacea per i programmatori, ma la verità è che il Prolog è usato raramente in questo modo. Benché l'idea dichiarativa sia alla base del Prolog, è possibile vedere il codice di Prolog come procedurale. Un programmatore di Prolog lavorerà secondo la parte del codice che sta leggendo o scrivendo. Il Prolog tuttavia, come esperienza di programmazione procedurale, non è utile (si dice spesso che è più facile da imparare per qualcuno che non abbia alcun'esperienza di programmazione procedurale). Il Prolog è considerato un linguaggio difficile da padroneggiare, particolarmente quando l'allievo prova a scorrere velocemente le cose, principalmente a causa del modo differente di pensare che l'allievo deve adottare e della quantità di ricorrenza nei programmi in Prolog.
Una volta imparato ad usarlo correttamente, tuttavia, il Prolog può essere molto potente.

Il Prolog (PROgramming in LOGic) è un linguaggio di programmazione che adotta il paradigma di programmazione logica.
È stato ideato da Robert Kowalski (aspetto teorico), Marten Van Emdem (dimostrazione sperimentale), ed implementato da Alain Colmerauer negli anni 70, costituendo un tentativo di costruire un linguaggio di programmazione che consentisse l'espressione del problema in forma logica invece della traduzione di un algoritmo di soluzione in forma di istruzioni da eseguire da parte della macchina.
Il Prolog è impiegato in molti programmi di Intelligenza artificiale, la sua sintassi e la semantica sono molto semplici e chiare (lo scopo primitivo era quello di fornire uno strumento di lavoro a linguisti privi di conoscenze informatiche).
I concetti fondamentali sono l'unificazione, la ricorsione in coda e il backtracking.

Imparare il Prolog certamente non sarà sempre fruttuoso quanto imparare C++, Java o Python. Il Prolog è più utile nelle zone relative alla ricerca in intelligenza artificiale, quali soluzione dei problemi, la progettazione o l'interpretazione di linguaggio naturale.

Logica Proposizionale del prolog

Nella logica proposizionale esistono due fondamentali elementi di base , termini e connettivi. I termini sono rappresentati da lettere (di solito maiuscole), e rappresentano i valori vero e falso, quindi un termine può essere vero o falso, benché non sia sempre chiaro cosa rappresenti veramente. In questo senso essi sono come le variabili in matematica perché rappresentano un valore.

I connettivi, come suggerisce la parola, connettono due termini. Il risultato di questa connessione prende il valore di vero o falso basandosi proprio sul valore dei due termini. Consideriamo per esempio il connettivo AND. Questo connettivo può mettere in relazione i termini A e B per creare la proposizione "A AND B". La proposizione "A AND B" è vera quando sono vere A e B. Se una o entrambe sono false, la proposizione è falsa. I connettivi sono solitamente rappresentati da simboli piuttosto che da parole. La seguente tabella mostra i connettivi più comunemente usati, il loro significato ed i simboli più correntemente usati per rappresentarli.


Nome Uso Significato Simbolo
congiunzione A \land B vera quando entrambe sono vere  \land \quad ,
disgiunzione A \lor B vera quando una o entrambe sono vere  \lor \quad ;
or esclusivo A \oplus B vera quando una e solo una è vera \oplus \quad \underline {\lor} \quad
negazione \lnot A vera quando una è falsa e viceversa  \sim  \quad \lnot \quad \bar {q}
implicazione A \rightarrow B vera quando A è vera e B è vera; vera quando A è falsa  \rightarrow \quad \Rightarrow \quad \models
uguaglianza A \leftrightarrow B vera se entrambe false o entrambe vere  \leftrightarrow \quad \Leftrightarrow \quad =
Fonti wikipedia.

Adesso spieghiamo il backtracking

E' il meccanismo con il quale il motore differenziale risponde alle domande. Se non trova una risposta al primo tentativo, torna indietro e prova a soddisfare il predicato cambiando il valore alle variabili.
Cominciamo a programmare in prolog
Dopo la teoria, un pò di pratica!!
Allora, poniamo le basi per una programmazione in prolog.
Come abbiamo visto, nel prolog non abbiamo necessità di descrivere l'algoritmo, ma basta descrivere i dati e il programma deduce l'algoritmo e ci da la soluzione più probabile.
Per lavorare in prolog, è necessario, prima di tutto, fornire all'interprete la base di conoscenza, cioè i dati di cui deve disporre e da cui intuirà poi la soluzione.
es:
persona(mario rossi).
persona è il predicato, che è costituito dai vari elementi o atomi (in questo caso mario rossi).
il punto ha il significato dell'OR, mentre la virgola significa AND.
la base di conoscenza che noi forniamo al programma viene considerata dal programma sempre vera.

In prolog è anche importante il modo in cui si scrivono gli atomi, in quanto ogni parola che inizia con la lettera maiuscola verrà interpretata come variabile e il prolog cercherà di dargli un valore affinche l'espressione risulti vera.
Per poter scrivere una parola con la lettera maiuscola senza che venga interpretata come una variabile bisogna inserirla tra 'apici': animale('gatto').

Facciamo un esempio di programma.
Forniamo le conoscenze per descrivere una situazione come questa:

Ecco un esempio di continente dove ci sono delle terre (a,b,c...) che hanno un determinato colore (giallo, rosso...) e attorno c'è il mare che è di colore blu.
Cominciamo a descrivere il tutto:
colore(a, rosso).
colore(b, verde).
colore(c, giallo).
colore(d, rosso).
colore(e, verde).
colore(f, giallo).
confinanti(a, b).
confinanti(a, c).
confinanti(a, e).
confinanti(a, mare).
confinanti(b, a).
confinanti(b, c).
confinanti(b, d).
confinanti(b, mare).
confinanti(c, a).
...
...
...
una volta terminato di scrivere la base di conoscenza del nostro programma, possiamo cominciare a fare delle domande al nostro interprete.
Se noi, per esempio, gli chiediamo:
colore(a,X).
lui interpreterà come:
qual'è il colore di a?
Il motore differenziale scorre la base di conoscenza finchè non trova un valore da dare alla variabile (X) in modo che l'espressione risulti vera.
Se trova un valore che inizialmente risulta vero, ma dopo un controllo di un'altra espressione, risulta falsa, allora inizia il backtracking, che va a cambiare il valore della variabile scorrendo nuovamente tutta la base di conoscenza escludendo i valori scartati.
In questo modo il sistema aumenta la conoscenza (base dei sistemi di intelligenza artificiale).

mercoledì 5 novembre 2008

Il sito tecnfree.netsons.org si aggiorna!

tecnofree.netsons.org finalmente si aggiorna!
Ok, dopo un'infinità di tempo che non mi sono dato per niente da fare, ho recentemente ripreso la mia attività in internet e vi prometto che da oggi aggiornerò il mio sito internet aggiungendo contenuti nuovi e migliori, migliorando il servizio che visualizza le foto, attualmente uso flickr, ma ho deciso di eliminarlo e molto altro ancora!!!!
Per suggerimenti e quant'altro commentate oppure inviate una mail a leopardx7 @ gmail .com

Aggiornamento: Reunion 21 22 23 novembre 2008

Un aggiornamento degli ospiti della reunion organizzata dallo stic:

oltre a Rene Auberjonois, a questa reunion saranno presenti anche Alice Krige, l'attrice che ha interpretato la Regina Borg nel film Primo Contatto e nell'ultimo episodio di Star Trek Voyager. Pur avendo partecipato a moltissime produzioni televisive (tra le quali 4400, Deadwood, Six feet under), il suo ruolo come Regina Borg è stato sicuramente uno dei più importanti, tanto da farle vincere il Saturn Award come migliore attrice non protagonista nel 1996. E' recentemente uscito il suo ultimo film, di cui è protagonista, dal titolo Skin.


Sarà presente anche Giovanni Mongini, scrittore, saggista e autorità mondiale indiscussa sul cinema di fantascienza, è nato a Quartesana (FE) il 14 luglio 1944, ma da anni vive e lavora a Salara in una casa che raccoglie una straordinaria collezione di libri rari, pellicole, curiosità legate alla sua grande passione per il cinema e la letteratura di fantascienza, l’astronomia e la divulgazione scientifica. È responsabile dal 2007 del settore cinema della Perseo Libri, ed ora collabora con la Elara, casa editrice sorta dalle ceneri della Perseo.


Infine ci sarà anche Fabrizio Mazzotta è nato a Monza (MI) il 1° Dicembre 1963. Vive e lavora a Roma come doppiatore. Ha prestato la voce a Krusty il clown de "I Simpson" e a Eros in "Pollon", ma ha iniziato con "Goldrake": era la voce di Mizar. E' direttore di doppiaggio di disegni animati, telefilm e film. Ha diretto il doppiaggio dell'edizione 2004 di "Mobile Suit Gundam" e del suo seguito "Mobile Suit Zeta Gundam" (in anteprima alla Reunion). Fabrizio è anche autore e disegnatore di fumetti. Ha collaborato a riviste come "Topolino", "Lupo Alberto" e "Cattivik".

Bene, questa reunion sta cominciando a prendere forma ed importanza, non so voi, ma questi ospiti mi sembrano abbastanza interessanti.

Fonte delle informazioni il sito dello STIC

Siete pronti a scendere in battaglia?

Con War Rock potrete giocare online epiche battaglie moderne, in real time schierandovi con l'esercito regolare o con i guerriglieri, optando per la modalità cecchino, assaltatore, truppa pesante, dottoressa o ingegnere, e usando anche elicotteri, carri-armati, blindati, mezzi anfibi, oltre a mitragliatrici pensanti artiglieria e altro ancora!!!

WarRock è un FPS multiplayer online, disponibile gratuitamente per il download, anche se esiste una versione commerciale che include delle opzioni in più, come alcune armi in più e alcuni bonus. Il gioco è ambientato in una guerra civile tra Esercito regolare (Forze Governative-Derbaran) e Guerriglieri (Movimento di Liberazione-NIU). Il gioco è suddiviso in 3 diverse modalità di gioco:
-- Close Quarter Combat (CQC): Max 16 player, mappe piccole e nessun veicolo. In CQC e' disponibile anche la modalita' Free For All (tutti contro tutti).
-- Urban Ops: Max 24 player, mappe medie e molti veicoli.
-- Battle Group: Max 32 player, mappe grandi e sono disponibili molti veicoli, tra cui elicotteri, motoscafi, navi da guerra, carri armati ed altri.

Nel gioco potrete utilizzare 5 diverse classi:
-- Engineer: L'ingegnere, colui che ripara i veicoli con la sua chiave inglese.
-- Medic: Il medico del team, può curare i propri compagni in qualsiasi momento.
-- Assault: Il combattente, molto utile negli attacchi ravvicinati.
-- Sniper: Il cecchino, e' dotato di un fucile di precisione ed e' in grado di uccidere da lunga distanza anche con un solo colpo.
-- Heavy Trooper: E' l'unico dotato di un bazooka, ed e' in grado di distruggere i veicoli, anche grazie alle sue mine.

WarRock e' sempre in continuo aggiornamento. Ad ogni update vengono corretti vari bug, aggiunte nuove mappe, armi e molto altro ancora! I server su cui giocare sono suddivisi per nazione, ed è possibile anche chattare durante il gioco per impartire o dare ordini agli altri compagni di squadra.

Come grafica non è niente male, ma per sfruttare al massimo la grafica del gioco, oltre ad avere un computer abbastanza potente, bisogna avere una connessione veloce.
Con connessioni più lente, è possibile giocare lo stesso, basta diminuire il livello di grafica del gioco!!
Buon divertimento a tutti!