mercoledì 13 marzo 2013

C'era una volta l'algebra di boole

http://advancedphototech.files.wordpress.com/2010/11/785px-eniac.jpg
Il grande ENIAC, può sembrare complesso ma, in realtà,
è molto più semplice di un moderno PC
   La mattina, quando arrivo in ufficio, accendo il mio portatile che si connette in rete con il mondo intero, lancio una macchina virtuale che mi consente di avere un PC nel PC, un PC completamente dedicato al lavoro che faccio per un mio cliente e che non ha punti di contatto con le altre decine di PC virtuali, uno per ogni
commessa, che si trovano sul mio disco e che, se avessi tante teste e tanti cervelli separati, potrei  attivare contemporaneamente senza grossi problemi. Spesso, durante il mio lavoro, mi trovo a dover scrivere software per gli apparati più disparati, che sono collegati al mio PC per mezzo di cavi o, alle volte, anche senza e, nella mia macchina virtuale, di norma li emulo in modo che, alla fine, ho un PC che finge di essere un altro PC che a sua volta finge di essere un altro apparecchio e, incredibilmente, tutto questo, malgrado la complicazione, la maggior parte delle volte funziona.
   Per me, progettista di vecchia data, che ho iniziato ad entrare nel mondo dell'informatica quando il termine PC non era ancora stato coniato e che, al mio primo impiego, ho scritto decine di migliaia di istruzioni in assembler per processori che, oggi come oggi, non sarebbero presi in considerazione neanche per fare andare un giocattolo, il fatto che cose così complicate possano funzionare quasi sempre è costantemente fonte di sorpresa, un po' mi stupisce quanto ci siamo spinti lontano ed un po' mi stupisce il fatto che, incredibilmente, accettiamo che il software sia imperfetto con una naturalezza inquietante. Quando, però, mi trovo a lavorare con le nuove leve di progettisti, scopro che le mie inquietudini e le loro sono molto diverse. Io sono inquieto perché so cosa c'è dietro i nostri complicatissimi castelli mentre loro sono preoccupati proprio perché non lo sanno (e con questo voglio dire che siamo preoccupati tutti quanti e quindi, utenti ignari, tremate). Cosa significa tutto ciò? Cosa vuole dire che i nuovi progettisti ignorano quello che sta alla base del loro lavoro? Semplice. Per noi, per le vecchie leve, un processore era una cosa complicata sì, ma di una complicazione ragionevole. Chiunque di noi avrebbe potuto, e tanti lo hanno fatto, prendere un microprocessore tipo dell'epoca, diciamo un 8085, un 6502, un 8051 o uno Z80, e riprogettarlo ex novo, a colpi di porte logiche. Un lavoraccio, certo, ma resta il fatto che i processori erano oggetti, nella mente dei progettisti, perfettamente chiari e definiti. Chiunque di noi, ed anche in questo caso la maggior parte di noi lo ha fatto, avrebbe potuto prendere un linguaggio, diciamo il pascal, il C, il PLM o il Fortran e, con un po' di buona volontà, scrivere un compilatore in grado di generare il software eseguibile di uno specifico processore e, allo stesso modo, chiunque di noi avrebbe potuto riscrivere un kernel di sistema operativo funzionante. Era la norma, i processori, i linguaggi ed i sistemi operativi erano più semplici degli attuali, così semplici che il fatto di comprarli e non farseli in casa era dettato da ragioni economiche e non di impossibilità pratica.
   Era considerato normale, quindi, che un progettista venuto improvvisamente a contatto con un mondo più evoluto, diciamo con un compilatore C++ ed un moderno PC, potesse perfettamente immaginarsi cosa sarebbe successo in seguito ad una sua operazione fin nei minimi dettagli, con la possibilità di valutarne pregi e difetti in ogni aspetto. Poi però le cose hanno iniziato a complicarsi ancora di più. Attualmente sono tornati di moda gli interpreti, con Java e C#, che eseguono una sorta di P-code su una macchina virtuale. Conoscere nel dettaglio le cose diventa un bel po' più complicato e per noi progettisti di vecchia data, abituati a crogiolarci nella sicurezza che, casomai, quello che non andava bene avremmo potuto rifarlo noi, le cose stanno cambiando e dobbiamo entrare nell'ottica che, se qualcosa alla base del nostro castello non funziona, non è detto che saremo in grado di metterci le mani per rifarlo meglio, e questa è la base delle nostre inquietudini.
   Le inquietudini delle nuove leve, invece, dipendono dal fatto che, come già detto, non sanno esattamente cosa sta alla base delle loro costruzioni che tendono ad essere, in linea di principio, molto più complesse delle nostre. Non sapere cosa sta sotto, se da un lato ti consente libertà estreme, dall'altro ti lascia la consapevolezza che alle volte l'ultima modifica che hai fatto, quella che sembrava banale, ti causerà un mare di guai.
   Ecco, ironia a parte, a questo punto ci sarebbero da farsi alcune domande: non è per caso che il mondo dell'informatica si sia infilato in un vicolo che porta, attraverso sterili complicazioni, a software sempre più sofisticato e sempre meno affidabile? Ci serve davvero tanta complicazione? Ci è indispensabile, ad esempio, poter vedere la TV in streaming sul PC attraverso una connessione WIFI con la certezza che, durante la serata, si pianterà almeno un paio di volte e probabilmente dovremo riboostrappare la macchina, o sarebbe meglio invece continuare a vederla sull'apposito televisore a tenerci un PC che funziona senza troppi problemi?
   Concludo con una piccola storiella, giusto per far ridere un po'.
pecore sarde   In una piccola strada nel centro della Sardegna passa una grande BMW nera con i vetri neri e l'antenna del satellite sul tetto. Ad un certo punto l'auto si ferma perché un immenso gregge attraversa la strada. L'autista, dopo qualche minuto, si spazientisce e scende dall'auto, vestito come uno dei MIB. Si guarda un po' attorno, si avvicina al pastore e gli dice: -scommettiamo una pecora che io le dico quanti animali ha così, su due piedi?- Il pastore lo guarda negli occhi, anzi, negli occhiali, e fa' cenno di si col capo. Il MIB, allora, tira fuori un GPS, si collega col tablet ad un satellite che, ricevute le coordinate, gli manda indietro una foto ad alta risoluzione dell'area, la invia ad un server in Svezia che, usando un programma militare scaricato abusivamente da un sito russo, identifica le pecore, le conta e gli invia il totale sul telefonino via SMS. Tutto questo non impiega più di due minuti e, ricevuto il messaggio, il MIB dice al pastore: -Lei ha 4137 pecore ed adesso, se non le dispiace, visto che il gregge ha ormai liberato la strada mi prendo la mia pecora e me ne vado.-
   Il pastore annuisce, lo guarda caricare l'animale nel baule e, per la prima volta, parla: -vogliamo scommettere quella bestia che ha nel baule contro tutto il mio gregge che io le dico che mestiere fa?- Il MIB non può che accettare, in fin dei conti di una pecora non saprebbe cosa farsene, neanche di un gregge se per quello, ma vuoi mettere? Così annuisce con fare condiscendente.
   -Lei- dice il pastore -lei non può essere altro che un informatico.-
   -Stupefacente- dice il MIB incredulo. -Mi dica come ha fatto a scoprirlo.-
   -- risponde il pastore -lei si presenta qua senza essere invitato, fa l'esperto di cose che non ha mai visto neanche da lontano, si propone per darmi la soluzione, che detto per inciso conosco benissimo, ad un problema inesistente e, alla fine, si sbaglia pure. Ed adesso, per favore, mi restituisca il cane.-

Nessun commento:

Posta un commento