Seleziona la tua lingua

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

In memoria di Andrew Fluegelman

Andrew Fluegelman (27 novembre 1943, 6 luglio 1985)Trent'anni fa scompariva in circostante misteriose Andrew Cardoza Fluegelman, avvocato, imprenditore publicitario e programmatore americano. Andrew scrisse una pagina importante nella storia dell'informatica ed ogni programmatore che si rispetti conosce almeno a tratti la sua storia. Andrew era un sostenitore del software libero ancora prima che si iniziasse a parlare di licenza GPL e opensource. Nel 1982 scrisse e divulgò un programma per PC-AT, la prima architettura per microcomputer domestici di casa IBM.

Questo programma si chiamava PC-Talk ed era un tool per la comunicazione via rete. Il programmatore distribuiva gratuitamente l'applicazione a chiunque gli spedisse un dischetto formattato ed il pagamento era facoltativo. Fluegelman chiedeva a chi volesse contribuire alla sua causa di donargli 25 dollari americani per acquistare il software, sebbene questo pagamento non fosse obbligatorio. In seguito alla ricezione l'utente poteva redistribuire liberamente il programma e diffonderlo tra i suoi amici, l'importante era che non ne cambiasse la licenza d'uso.

Uova di Pasqua informatiche

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.

A bug's life - genesi di una parola

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?

Nerd vs Geek

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?

Programmazione al tempo del colera

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.

Pagina 4 di 8