Alcuni pensieri e considerazioni sul mondo del software, scritte da un insider

Microsoft Word '97 Easter Egg (flipper)Il termine corretto è Easter Egg, ed è usato per indicare quelle funzionalità nascoste, bizzarre ed innocue che gli sviluppatori inseriscono in un prodotto più complesso. Quando i PC cominciarono a diventare sempre più multimediali e la potenza di calcolo avanzava, presto ci si trovò ad utilizzare macchine venti o trenta volte più potenti rispetto alla generazione precedente, ma usate sostanzialmente per fare sempre le stesse cose. Un software di videoscrittura come Word '97 non differiva di molto da Wordpad, a parte per qualche simpatica funzionalità come i clipart e queklle meno simpatiche come la pubblicazione di pagine web. Per la prima volta ci si trovata con potenza di calcolo in eccesso, così si iniziò a creare applicazioni sempre più complesse e meglio ingegnerizzate. Per un utente però era difficile giustificare il consumo di spazio su disco dell'ultimo pacchetto Office rispetto al precedente, che di solito quadruplicava ad ogni avanzamento, fintanto che si iniziò a sospettare che dentro Office ci fosse qualcosa in più...

Ed in effetti era così. Celebri rimasero gli Easter Eggs di Office 97, veri e propri videogiochi che l'utente poteva attivare mediante trucchetti e procedure da eseguire all'interno degli applicativi della suite Office.

Il primo bug, dal report di Grace Hopper del 1947Un bug è un errore logico presente in un programma per computer. Spesso si parla di bug per indicare un errore nella scrittura di un codice sorgente che impedisce ad un programma di funzionare. Esistono tuttavia bug più subdoli, quelli che deviano il flusso di esecuzione del codice e danno risultati credibili ma errati. Questi sono i più insidiosi, soprattutto nelle applicazioni moderne, dove diversi strati di software dialogano tra di loro per produrre un output. Celebre è il bug che impose a Intel il ritiro del suo primo modello di processore Pentium, nel 1994. A causa di un errore di rappresentazione dei numeri in virgola mobile, le operazioni artmetiche restituivano valori arrotondati in modo impreciso. Fin qui niente di male fintanto che un utente compila un foglio excel in cui archivia per uso personale i valori del proprio peso e della statura.

Ma se un programma deve calcolare coordinate geografiche, rotte aeree o missilistiche, o fare calcoli finanziari? La precisione allora diventa importante perché una piccola differenza può amplificarsi enormemente. Il primo processore Pentium fu infatti ritirato dal mercato e sostituito. Ma da dove viene il termine bug?

Big Bang Theory (2007)La società tende sempre a caratterizzare i propri membri e classificarli sulla base dei loro comportamenti. Ci sono però individui che sfuggono alle normali convenzioni sociali e che per questo vengono considerati bizzarri, strani o addirittura reietti e scarti della società. Sono persone che non fanno nulla di male, semplicemente hanno interessi che sfuggono alla massa delle persone, sia perché ritenuti troppo complessi o marginali per l'andamento della società. Col tempo queste categorie di persone sono state stereotipate, poi derise ed infine rivalutate. In particolare due categorie, il nerd e il geek hanno sempre generato confusione nella testa delle persone. Spesso le due categorie sono state sovrapposte, confuse ed assimilate, mentre all'occhio attento le differenze sono molte.

Premesso che non è giusto generalizzare sulle categorie di persone o ridicolizzarle, è noto che molti informatici spesso ricadono in una delle due categorie, eventualmente prendendo qualcosa da entrambi gli stereotipi. Ma qual è la vera differenza tra nerd e geek?

Linguaggio C (D. Ritchie, B. Kernighan, 1978, Jackson Ed.)Imparare a programmare in C su una nuova piattaforma è come iniziare a conoscere una persona: si inizia rompendo il ghiaccio con gli argomenti più generici, per arrivare piano piano a conoscerne le varie sfaccettature del carattere e la personalità. Imparai a programmare in C nel 1995, su piattaforma SCO UNIX. Il mainframe era un vecchio IBM HP 9000 del 1984 che il laboratorio di informatica ci metteva a disposizione attraverso terminali "stupidi" dotati di vetuste tastiere ingiallite dal tempo e fastidiosi monitor ai fostori verdi parzialmente impressionati in modo irreversibile. Al tempo la percezione era di camminare su un terreno minato poiché il grosso mainframe incuteva soggezione e soprattutto perché il linguaggio C non è propriamente immediato.

C'era chi diceva che prima di poter dire di conoscere il linguaggio C occorre studiarlo tre volte. Io ho perso il conto delle volte che ho letto e riletto il K&R, rigorosamente acquistato dal libraio. Il libro cartaceo era l'unico mezzo di apprendimento, esistevano le BBS (Bulletin Board System) e i newsgroup ma erano di solito organizzati in FAQ, tutorial e argomenti specifici. Non esisteva una guida omnicomprensiva, tipo un manuale online.

Negli anni '90 avevo un Amiga 500 sulla scrivania di casa ed era per me un grande compagno di giochi. Non mettevo in dubbio che lo si potesse programmare per fare anche altro, tuttavia non me ne ero mai preoccupato. Eppure era possibile, bastava un compilatore C ed un manuale.

CalendarioRicordo lo stupore che provai quando iniziai a programmare e scoprii le funzioni di libreria. Questo mondo magico ed ermetico, fatto di funzioni e metodi di cui non si riusciva a comprendere l'implementazione, risolvevano problemi in modo rapido, preciso ma anche misterioso. Quando si lavorava con le date poi sembrava che queste funzioni estrapolassero dati da fonti inaccessibili. Oggi mi rendo conto che dietro ogni funzione ci sono sempre poche righe di sapiente codice e tanto ingegno. Per lavoro mi capita spesso di occuparmi di sistemi che per funzionare devono risalire alla giornata lavorativa precedente nella settimana, e ciò generalmente si traduce nella giornata precedente, ma non il lunedì. Le librerie di funzioni, oggi come allora, mettono a disposizione metodi per estrarre da una data il giorno della settimana, cosa che diciotto anni fa suscitava in me una certa meraviglia, mista ad un religioso stupore. Eppure dietro c'è poco più che un po' di algebra lineare, ma come sempre è l'idea che conta. Ecco quella di Claus Tøndering.