Visualizzazione post con etichetta Filosofia. Mostra tutti i post
Visualizzazione post con etichetta Filosofia. Mostra tutti i post

martedì 1 febbraio 2011

Template Metaprogramming: un approccio filosofico


Alan Turing è un personaggio affascinante: uomo geniale e sensibile la cui morte è contornata di mistero e leggenda. Negli anni 30 fonda i principi dell'informatica teorizzando il primo computer, negli anni quaranta lavora alacremente per decifrare "Enigma" la macchina che decriptò gli ordini inviati ai sommergibili tedeschi. Qualcuno paragona il suo successo all'impresa dei piloti della RAF durante la battaglia d'Inghilterra. Negl'anni cinquanta si occupa di intelligenza artificiale e propone il test di Turing per definire una macchina intelligente (guadare Blade Runner per maggiori informazioni).

Condannato per omossessualità, morirà suicida pochi anni dopo morsicando una mela intinta nel cianuro. Turing getta anche i fondamenti della matematica computazionale, cioè definisce cos'è computabile (calcolabile), ma va oltre, dimostra che un linguaggio di programmazione può risolvere qualunque problema computabile se supporta un certo numero di funzionalità. Per esempio le quattro operazioni, if-else, switch e poco altro. Quando un linguaggio rispetta tutte queste richieste (poche per la verità) si dice turing-completo.

I linguaggi di programmazione si sono evoluti molto in fretta ed hanno cominciato a aumentare il loro livello d'astrazione. Un computer non lascia niente al caso, tutto è deterministico, insomma è come un pedante ragioniere, il tipo di linguaggio che comprende è una lunga striscia di 0 e 1. Il programmatore, per quanto giudicato quadrato da artisti e letterati, gradisce un linguaggio più colloquiale, maggiormente espressivo.

Per questa ragione sono nati i compilatori, sono dei programmi che prendono un listato leggibile da umani un po' speciali e lo traduce in linguaggio capibile dalle macchine. Questa operazione si chiama "compilazione" ed avviene prima (e una volta sola) che il programma venga usato.

Verso la metà degl'anni novanta un linguaggio di programmazione molto noto (C++) viene arricchito con una nuova funzionalità di alto livello: i template. In sostanza si permette al programmatore di scrivere un programma generico che non dipende dai dati che sta trattando. Solo il cuore del programma è importante e non più il tipo di dato (intero, numero reale o variabile booleana). Il compito di sistemare le cose viene lasciato al compilatore che genererà del codice (di alto livello) che verrà poi ulteriormente trasformato in linguaggio macchina.

Quindi si è passati da una situazione: 
codice di alto livello (scritto da umani) => linguaggio macchina  

a:
codice generico (scritto da umani) => codice di alto livello (scritto dal compilatore) => linguaggio macchina

Il fatto che una macchina scriva del codice di alto livello è di per se un fatto interessante.

Ma lo è ancora di più se il linguaggio intermedio è anch'esso turing-completo. Poco dopo l'introduzione dei template in C++ un programmatore ha scritto un programma che falliva la compilazione (e quindi non creava nessun programma), ma che riportava nel messaggio d'errore la sequenza dei primi 10 numeri primi! Un nuovo linguaggio è apparso dal nulla, si posso scrivere programmi che si eseguono durante la compilazione.

Badate, non era intenzione di chi ha introdotto la funzionalità nel linguaggio ottere questo risultato; è semplicemente capitato. Alcuni linguaggi di programmazione sono diventati così complessi che contengono a loro volta altri linguaggi di livello inferiore. 

Tutto è successo per caso! Turing ne sarebbe felice, forse.

domenica 21 novembre 2010

Teoria o pratica


Sono sempre stato un teorico cresciuto in una famiglia dal senso pratico. Adesso che abbiamo le chiavi della nostra nuova casa vorrei aver passato più tempo a far "pratica" e meno tempo a "teorizzare".

Insomma per farla breve: teoria o pratica? Voi cosa votate?

martedì 30 giugno 2009

Naturalmente un manoscritto

Un bibliofilo di fama internazionale mi ha fatto avere copia della stesura originale del capolavoro di Galileo "Dialogo sopra i due massimi sistemi del mondo". Pare che l'argomento nella sulla prima versione fosse troppo controverso per l'epoca e quindi modificato nel meno scabroso trattato astrologico. A voi regalo questa anteprima:

Sagredo: Mie cari ed illustri commensali, spero di non spingere troppo il là il mio ardire se chiedo il vostro parere su forse il più elevato dei quesiti. Il coperchio del pitale deve restar sollevato oppure abbassato?

Simplicia: Non ve' dubbio alcuno, giammai in una dimora consona e rispettosa del pubblico decoro si deve assistere allo scempio di un gabinetto ignudo di codesta copertura.

Salviati: oiboh, con quale furia la nostra gentile ospite si scaglia contro un'innocua abitudine. Non ebbi mai notizia di nessun deceduto e nummanco ferito da una tavola alzata.

Simplicia: converranno lor signori che è fatto d'igiene elementare doverla abbassare.

Salviati: per dover correttamente argomentare, mi occorre obbiettare che è necessario soltanto sollevare, solo quando un maschio si appresta ad orinare. Inoltre la matematica ci aiuta a evidenziare come è sempre conveniente la tavoletta non abbassare.

Sagredo: Non mi privi del diletto di udire la dissertazione dissertazione.

Salviati: Come è noto le gaudenti donzelle usano sia defecare che urinare con la tavola abbassata. Questo non si può dire dell'uomo educato che usa sollevarla durante la minzione. Giacché le donne urinano più di frequente degli uomini e cacano non tanto sovente, è molto probabile per un uomo trovare la tavola abbassata e molto meno ad una donna di trovarla alzata. E' facile contare che si ottengono meno movimenti complessivi lasciando il posizione alzata la tavoletta che viceversa.

Simplicia: L'uomo con questo gesto volgare insulta il mondo femminile. E' sintomo di noncuranza e prepotenza.

Salviati: Mia dolce collega non esageri, non costruisca una crociata su fondamenta fragili e maleodoranti. Si tratta semplicemente di comodità e nulla più.

Sagredo: L'uomo potrebbe orinare da seduto, e il problema sarebbe sciolto come neve dal calore delle nostre scorie ammoniacali.

Salviati: Potrebbe, ma è giusto chiedere al leone di non cacciare ed al riccio di non fornicare?

Sagredo: La grande tradizione orientale del Feng Shui raccomanda di chiudere la tavola perché essa ricopre la fonte di energia negative che per la dimora si possono spandere.

Salviati: Ohhh, mio caro amico, grande è il suo intelletto e vasta è la sua cultura, come sono vere e sagge le sue parole, in alcuni giorni le energia negative possono avere effetti pestilenziali.

Sagredo: Mie cari signori, il sole è già tramontato da parecchio, è meglio ritirarci. Che la notte vi porti consiglio, domani continueremo la nostra dotta discussione.

Fine della giornata prima.

Voi come la pensate, alzate o abbassate?


giovedì 19 marzo 2009

La sincerità è in sè una stronzata




Mettiamo subito le cose in chiaro. Quello che leggerete non è farina del mio sacco. Non lo dico per prendere le distanze, ma solo per non prendermi dei meriti che non ho.

Cercherò di riassumervi un (già succinto) libro zeppo di spunti interessanti, che mi è capitato di rileggere in questo periodo.

"Uno dei tratti salienti della nostra società è la quantità di stronzate in circolazione. Tutti lo sanno. Ciascuno di noi dà il proprio contributo. Tendiamo però a dare per scontata questa situazione"

Con queste parole inizia il saggio filosofico di Harry G. Frankfurt "Stronzate".

Il libro parte con una rassegna dei lavori in materia (piuttosto pochi) e costruisce pian piano una definizione di "stronzata" pur senza condensarla in un'unica frase.

Ci provero io, anche se vi consiglio vivamente di leggervi il libro.

Stronzata: falsa rappresentazione, pur senza giungere alla menzogna, dei propri pensieri, sentimenti e atteggiamenti.

L'essenza della stronzata è nella subordinata "pur senza giungere alla menzogna". Quando uno dice una stronzata non sta necessariamente mentendo, si sta semplicemente disinteressando della verità della sua affermazione. Un bugiardo conosce la verità e volontariamente la nega. Il concetto di verità è assolutamente centrale nel ragionamento del bugiardo.

Il produttore di stronzate è interessato unicamente a comunicare una certa immagine di se e la verità assume un ruolo marginale.

Le stronzate sono un nemico della verità molto più pericoloso delle menzogne, nonostante ciò sono considerate moralmente meno gravi.

Pronunciare una stronzata è inevitabile ogni volta che si parla di qualcosa che non si conosce. Il proliferare delle stronzate ha diffuso forme di scetticismo sulla possibilità di ottenere accesso affidabile all'analisi oggettiva.

Insomma, stiamo cominciando a pensare che sia impossibile conoscere la verità sulle cose.

Questo ci spinge all'abbandono dell'ideale di ESATTEZZA per un ideale alternativo di SINCERITA'.

L'uomo, convinto che non sia possibile descrivere con ESATTEZZA la realtà, si accontenta di esprimere in maniera SINCERA se stesso.

Chi può pensare che descrivere se stessi sia più facile che descrivere un qualsiasi fenomeno? Chi può affermare che la psiche umana (anche la propria) sia più semplice del mondo che ci circonda?

Ma se questo è vero, la sincerità è in sè una stronzata.

martedì 13 gennaio 2009

La forza di cento braccia


All'inizio ero un induttivo (da osservazioni particolari si ricavano leggi generali), come tutti i bambini del resto. Sperimentavo, guardavo, toccavo, spesso assaggiavo e qualche volta anche rompevo. Tutto faceva parte del processo di apprendimento. Attraverso uno strumento semplice e potente come l'analogia capivo come funzionava il mondo. Un bambino che si scotta con un accendino sa immediatamente che e' la fiamma ad essere pericolosa, quindi si terra' lontano anche da fornelli, accendi-gas e caminetti.

Il modello induttivo venne messo in crisi dall'acquisto da parte di mia madre della "Pasta Matic". Non so se ve la ricordate, ma era uno elettodomestico creato per automatizzare la preparazione della pasta fatta in casa. Si buttavo gli ingredienti nella macchina e dopo qualche tempo si vedeva fuoriuscire dallo stampo in bronzo la pasta fresca.

Rimasi incantato a vedere quel processo. Ricordo ancora il rumore, un ronzio torvo ed instancabile. Penso di aver speso molte ore ad osservare, la cosa che colpi di piu' la mia fantasia era la trafilatura. Il concetto era semplice: diversa forma dello stampo, diversa forma del trafilato.

Come ero solito fare applicai il metodo induttivo ed ottenni un evidente incongruenza. Perche' quando faccio la cacca ha simmetria cilindrica, invece di uscire a "cartolina"?

Qualcuno obiettera' che piu' che essere una lacuna del metodo induttivo e' una mancanza nel mio metodo d'indagine, forse avete ragione. Ma da allora sono diventato un deduttivo (da degli assiomi si costruisce una teoria di carattere generale, l'esperimento perde d'importanza) e lo sono stato per molto tempo. Cambiando per sempre il mio modo di pensare e quindi la mia vita.

Lo sono stato per molto tempo, poi e' successo qualcosa che mi ha fatto cambiare idea.

Ma questa e' un'altra storia e ve la raccontero' un'altra volta.

E voi? Che tipi siete?