I libri dell’informatico

Andrea D’Alessandro
a_dalessandro@acm.org

 

Arcimboldo, Il libraio, circa 1566


 

Introduzione

Negli ultimi quindici anni abbiamo assistito ad una vera e propria esplosione dell’editoria legata all’informatica, sia causata dalla crescita del numero degli studenti in informatica (o che di essa fanno uso), che dalla diffusione dei computer in larghi strati della popolazione, che infine dal maggiore appeal dell’argomento dovuto alla popolarità di Internet.
C’è però da dire che gran parte dei libri proposti sugli scaffali delle librerie non specializzate, e catalogati come Informatica, sono del tipo Excel per gli idioti, Impara il Visual Basic in 24 ore, Ripara da solo il tuo PC, Come pubblicare il tuo Blog. Questa non è informatica; è come voler catalogare i manuali d’officina della Fiat Punto come Ingegneria Meccanica o le istruzioni di montaggio che accompagnano i mobili Ikea come Architettura e Design.
Mi sono domandato: quali sono i libri i cui contenuti compongono un insieme minimo ma completo della conoscenza di Computer Science ? Per selezionarli ho fatto ricorso ai vari testi che hanno fatto parte del mia educazione scolastica ed extrascolastica nel campo, più altri che ho letto e apprezzato cammin facendo.
A questi ho voluto aggiungere altri testi che mi parevano interessanti per motivi storici (perché furono delle pietre miliari, oppure perché raccontano di come si è arrivati all’informatica moderna), o per motivi sociali (aiutano a comprendere i fenomeni e le dinamiche sociali che si accompagnano al mondo informatico), oppure anche solo perché particolarmente curiosi ed interessanti per un appassionato di questo campo.
Ho volutamente tralasciato alcune branche o argomenti della computer science come l’intelligenza artificiale, la ricerca operativa, la sintesi e il riconoscimento del parlato, il riconoscimento di modelli, lo sviluppo web, la programmazione COM/Corba… eccetera, perché troppo settoriali, anche se sono argomenti interessantissimi.
Alcuni dei testi presentati sono libri di testo a livello universitario, altri sono comprensibili anche a chi ha una preparazione a livello liceale, altri sono decisamente per tutti (specie quelli di argomento storico o sociale).
Di tutti i libri ho presentato l’ultima edizione, anche se la maggior parte dei testi ha una lunga, storia editoriale talvolta pluridecennale.
Uno studente che si accinga a studiare l’informatica e i computer a livello universitario, alla fine del suo corso di laurea si troverà a possedere molti dei libri presenti in questa lista (o equivalenti ad essi per contenuto). Degli altri, un’attenta lettura non potrà che allargargli ulteriormente la comprensione dell’affascinante mondo dei computer.


 

Le basi teoriche dell’informatica

Gödel’s Proof

Ernest Nagel, James R. Newman, Douglas Hofstadter

  • February 2002 (revised edition)
  • Hardcover: 125 pages
  • Casa editrice: New York University Press
  • ISBN: 0814758169

Nel 1931 Kurt Gödel pubblicava il suo fondamentale articolo Sulle Proposizioni Formalmente Indecidibili di ‘Principia Mathematica’ e Sistemi Correlati, dove illustrava il suo teorema di incompletezza, in quale affermava che ogni solido sistema matematico contiene espressioni che non sono provabili all’interno del sistema stesso.
Questa conclusione distruggeva molti dei sogni precedenti di meccanizzazione della logica, e apriva la porta a nuovi, importantissimi risultati non solo nel campo della logica matematica, ma anche in quello della scienza informatica, che muoveva allora i primi passi.
In teoria l’articolo originale non richiedeva per essere compreso nessuna particolare preparazione, al di là di un po’ di algebra a livello di liceo e molta concentrazione. In pratica, la dimostrazione era così densa che pochissimi matematici del tempo (e ancora oggi) erano in grado di comprenderla veramente.
Negli anni ’60 Nagel e Newman scrissero questo libro, divenuto poi un classico, con lo scopo di portare ad un livello meno elitario le conclusioni di Gödel. La nuova edizione, ricompilata da Hofstadter, un altro dei più grandi divulgatori dell’opera di Gödel, è stata espansa e rivista proprio nella parte finale, più complessa, della spiegazione della prova gödeliana, rendendo l’opera imperdibile per tutti gli studenti e i professionisti dei campi della matematica, logica, filosofia ed informatica.

Traduzione Italiana

La prova di Gödel
1a edizione, 144 p., Bollati Boringhieri, 1992

The Calculi of Lambda-Conversion

Alonzo Church

  • Gennaio 1985
  • Paperback: 77 pagine
  • Casa editrice: Princeton University Press
  • ISBN: 0691083940

E’ una curiosità. Non consiglio a nessuno di comprarlo (tra parentesi, non è più in stampa da diverso tempo) in quanto è comprensibile solo ai matematici più avvezzi all’argomento.
Ma è la prima enunciazione formalizzata (il testo originale è del 1941) dell’equivalenza dell’informatica alla logica matematica, e il calcolo lambda è alla base dell’implementazione di diversi linguaggi di programmazione, specialmente funzionali, LISP in primis.

Concrete Mathematics: A Foundation for Computer Science

Ronald L. Graham, Donald E. Knuth, Oren Patashnik

  • Febbraio 1994 (2a edizione)
  • Hardcover: 672 pagine
  • Casa editrice: Addison-Wesley Professional
  • ISBN: 0201558025

Gli autori spiegano: ’Concrete (1) Mathematics’ è un misto di matematica CONtinua e disCRETA. Più concretamente, è la manipolazione controllata di formule matematiche, tramite una serie di tecniche usate per la soluzione dei problemi.
Il testo introduce la matematica necessaria per comprendere e supportare la programmazione avanzata degli elaboratori e l’analisi degli algoritmi; lo scopo è pertanto di fornire una solida base di capacità matematiche atte a risolvere problemi complessi ma concreti, come risolvere somme di orrende serie o scoprire evanescenti pattern nei dati.
Come testo didattico è formidabile in quanto include più di 500 esercizi completi di soluzione, e può essere considerato indispensabile non solo agli adepti della computer science ma a tutti coloro che usano la matematica in qualsiasi disciplina.

Traduzione Italiana

Matematica discreta
(1a edizione) XXIV-608 p., Hoepli, 1992

Struttura dei computers

 

Computer Structures, Readings and Examples

C. Gordon Bell

  • Giugno 1971
  • Paperback: 668 pagine
  • Casa editrice: McGraw-Hill
  • ISBN: 0070043574

Il libro che presenta le architetture dei computer pietre miliari della prima storia dell’informatica (dagli anni ’50 ai ’60), scritta da uno dei maggiori progettisti di tutti i tempi. Bell è stato colui che diede la forma ai più grandi successi della Digital Equipment Corp.: dal PDP/1 al PDP/11 al VAX.
In questo libro approfondisce l’architettura di elaboratori leggendari, utilizzandoli come esempi per spiegare i compromessi di progettazione che ogni designer di computer deve affrontare, specialmente per quanto riguarda la ripartizione dei compiti fra hardware e software.
E’ un testo ancora attuale, in quanto lo studio di quelle semplici architetture d’epoca, aiuta il progettista moderno a capire che non sempre la ricchezza di risorse a disposizione porta a design efficienti ed eleganti.

Computer Architecture: A Quantitative Approach

John L. Hennessy, David A. Patterson

  • Gennaio 1996 (2a edizione)
  • Hardcover: 760 pagine
  • Casa editrice: Morgan Kaufmann
  • ISBN: 1558603298

Una vera pietra miliare. Gli autori sono ricercatori molto conosciuti nel campo della progettazione delle architetture delle CPU: Hennessy iniziò il progetto MIPS a Stanford e fu uno dei fondatori della MIPS Computer Systems, mentre Patterson fu il leader del gruppo che progettò il computer RISC-1 a Berkeley.
Questo testo presenta le problematiche fondamentali che influenzano la progettazione dell’architettura dei computers in modo quantitativo, ossia in modo oggettivo e nel contesto di sistemi reali e contemporanei (come il PowerPC o l’Intel 80x86) invece che in formato puramente astratto, fornendo i metodi analitici per giustificare le scelte progettuali.
Immancabile nella biblioteca non solo dei progettisti di computer, ma anche di tutti coloro che si preoccupano della performance dei programmi software.

Traduzione Italiana

Architetture dei calcolatori. Metodi di valutazione e di progetto
(1a edizione) 704 p., ill., Zanichelli, 1993

Computer Organization and Design: The Hardware/Software Interface

David A. Patterson, John L. Hennessy

  • Agosto 1997 (2a edizione)
  • Hardcover: 965 pagine
  • Casa editrice: Morgan Kaufmann
  • ISBN: 1558604286

Questo libro è l’ideale complemento del testo appena citato, in quanto si sofferma (come il titolo infatti suggerisce) sulla frontiera tra l’hardware e il software.
Gli autori affrontano inizialmente l’argomento dei set di istruzioni dei processori e di come essi sono limitati a livello progettuale dall’hardware sottostante, per poi proseguire sui problemi di pipelining, di accesso alla memoria e alle periferiche. Il testo infine si conclude con una breve discussione sulle problematiche ulteriori inerenti ai sistemi multiprocessore.
Tutti gli argomenti sono affrontati con un continuo riferimento ad architetture reali, e al loro sviluppo dal punto di vista storico.

Traduzione Italiana

Struttura e progetto dei calcolatori. L'interfaccia hardware-software
(1a edizione) 752 p., Zanichelli, 1995


 

Algoritmi e programmazione

The Art of Computer Programming, Volumes 1-3

Donald E. Knuth

  • Ottobre 1998 (1a edizione dei tre volume in cofanetto)
  • Addison-Wesley Professional
  • ISBN: 0201485419

Che dire ? Ogni informatico degno del suo retaggio ritiene fondamentale averlo nella sua biblioteca, non tanto per leggerlo, ma quanto per lo status intellettuale che conferisce anche solo il fatto di possederlo. Come per un attore avere l’editio princeps delle tragedie di Shakespeare.
E’ l’opera della vita di uno dei più grandi e più eclettici personaggi della Computer Science: il piano dell’opera prevede la copertura quasi completa di ogni branca della programmazione. Dopo i primi tre volumi – usciti tra fine dei ’60 e inizio dei ’70 – dedicati agli algoritmi fondamentali che compaiono in quasi tutti i sistemi software (2) , Knuth si è preso due decenni sabbatici e si è occupato di tutt’altro (3) (lasciando il segno ovviamente, come in tutti i campi di cui si è occupato).
Solo negli ultimi anni ha ripreso il lavoro e sta lavorando sul volume 4 (che probabilmente uscirà in più tomi, data la vastità dell’argomento). Tutti i sinceri ammiratori sperano che Dio dia a Knuth una lunga vita, in modo che possa completare la sua immensa opera.
D’altra parte, si possono avanzare dubbi sull’utilità pratica dell’opera: pochi programmatori possiedono la preparazione matematica sufficiente per comprendere la trattazione matematica degli algoritmi; e ancora meno sono veramente interessati ad approfondirla.
Inoltre, è probabilmente obsoleta dal punto di vista informatico, in quanto gli algoritmi dei primi tre volumi sono scritti in MIX, un assembler per una macchina fittizia, con un’architettura anni ’60. I nuovi volumi saranno scritti in MIXX, un assembler RISC.

Algorithms + Data Structures = Programs

Niklaus Wirth

  • Febbraio 1976
  • Hardcover: 366 pagine
  • Casa editrice: Prentice Hall
  • ISBN: 0130224189

Il creatore del Pascal, del Modula2, di Oberon ha scritto diversi testi di livello universitario. A parte il report del Pascal, questo è il suo libro più di successo.
Il libro non è vasto: 366 pagine divise in soli in cinque capitoli; ma riesce a presentare le strutture dati fondamentali, il sorting, la ricorsione, le strutture dati dinamiche, ed infine le strutture dei linguaggi di programmazione e i compilatori.
Gli algoritmi sono presentati in Pascal classico, nello stile un po’ idiosincratico di Wirth, un po’ obsoleto ma trasparente. Purtroppo, non viene più ristampato.

Traduzione Italiana

Algoritmi + Strutture Dati = Programmi
360 p., Tecniche Nuove, 1987 (non più ristampato)

Introduction to Algorithms

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein

  • Settembre 2001 (2a edizione)
  • Hardcover: 1184 pagine
  • Casa editrice: The MIT Press
  • ISBN: 0262032937

Sull’argomento degli algoritmi esistono libri che sono rigorosi ma incompleti e altri che coprono un vasto numero di argomenti ma mancano di rigore. Questo testo combina completezza, chiarezza di esposizione e rigore matematico (anche se è apprezzabile anche da coloro che – non preparati – devono saltare gli approfondimenti matematici).
Tutti gli algoritmi sono presentati in pseudo-codice, cosa che facilita l’implementazione in un linguaggio finale e pone il testo al di là delle mode passeggere.
Come già accennato, il testo copre dagli algoritmi di base a quelli più avanzati, fino ad una trattazione di algoritmi approssimati per problemi NP-completi; gli esempi non sono limitati ai campi classici dell’elaborazione dati, ma si estendono a campi come la biologia molecolare, gli affari e l’ingegneria, mostrando le applicazioni pratiche di molti algoritmi.
Insomma, se un deve possedere un solo testo sugli algoritmi, questo è quello da scegliere.

Numerical Recipes in C++: The Art of Scientific Computing

William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery

  • Febbraio 2002 (2a edizione)
  • Hardcover: 1032 pagine
  • Casa editrice: Cambridge University Press
  • ISBN: 0521750334

Il testo di calcolo numerico per i non professionisti, prodotto da un team di ricercatori provenienti sia dal campo accademico che da quello dell’industria.
Veramente enciclopedico, riporta gli algoritmi per la maggior parte dei problemi di calcolo che qualunque programmatore incontra, prima o poi: algebra lineare, interpolazioni, numeri casuali, sistemi di equazioni non lineari, ottimizzazione, autovalori e autovettori, trasformate di Fourier e wavelets, ecc.
Ogni algoritmo è espresso in un frammento di programma molto facile da incorporare nei propri programmi. Dapprima uscito con gli algoritmi espressi in Fortran, è stato poi affiancato da altre edizioni con gli stessi algoritmi espressi in C, Pascal e ora C++ (l’edizione citata).
Un testo di riferimento, che deve stare sullo scaffale di ogni programmatore. Addirittura, la versione in C è liberamente scaricabile da Internet.

Structure and Interpretation of Computer Programs

Harold Abelson, Gerald Jay Sussman

  • Settembre 1996 (2a edizione)
  • Paperback: 657 pagine
  • Casa editrice: The MIT Press
  • ISBN: 0262510871

Un approccio alternativo alla didattica della programmazione (troppo spesso basata su linguaggi procedurali come C, C++, Java, Pascal). Gli autori sono nomi famosi del giro del Laboratorio di Intelligenza Artificiale del MIT, pertanto vivono, mangiano, dormono e pensano solamente in LISP (4) .
Attenzione, questo non è un testo di ricette in un particolare linguaggio, con trucchi, esempi e algoritmi predigeriti: non cerca di fornire soluzioni immediatamente applicabili ad una situazione reale.
E’ invece un testo sull’arte, sull’essenza, sulla filosofia della programmazione; e grazie al suo approccio inusuale aiuta moltissimo a meditare sui significati profondi di molti aspetti di essa, anche a coloro che si sentono già dei professionisti in questo campo.

Instructor's Manual to ‘Structure and Interpretation of Computer Programs’

Julie Sussman

  • Settembre 1998 (2a edizione)
  • Paperback: 2111 pagine
  • Casa editrice: The MIT Press
  • ISBN: 0262692201

Bisogna notare che il testo succitato non fornisce le soluzioni degli esercizi proposti e le implementazioni delle procedure necessarie. Esse sono fornite dall’Instructor Manual, fondamentale se il testo deve essere usato da un autodidatta.


 

Linguaggi di programmazione

Pascal User Manual and Report: ISO Pascal Standard

Kathleen Jensen, Niklaus Wirth, Andrew B. Mickel, James F. Miner

  • Settembre 1991 (4° edizione)
  • Paperback: 266 pagine
  • Casa editrice: Springer Verlag
  • ISBN: 0387976493

Nato all’inizio degli anni ’70 per presentare al mondo il linguaggio Pascal, questo testo ha subito negli anni molti aggiornamenti, che riflettono l’evoluzione che il linguaggio ha subito, dall’origine ai giorni nostri, passando dall’approvazione dello standard ISO nel 1983.
Il libro è diviso in due parti, il manuale utente (User Manual) e il riferimento del linguaggio (Revised Report); il dialetto incarnato da questo libro viene appunto denominato Standard Pascal, che costituisce una base comune tra le varie implementazioni del linguaggio, e che risolve le discrepanze tra lo standard ISO e quello americano ANSI.
Lo stile della prima parte è didattico, e ogni caratteristica del linguaggio è illustrata da un opportuno esempio, con lo scopo di guidare un principiante all’apprendimento del linguaggio; ciononostante, la precisione della seconda parte rende il testo un importante riferimento utile anche al programmatore esperto e all’implementatore di compilatori.

The C Programming Language

Brian W. Kernighan, Dennis M. Ritchie

  • Marzo 1988 (2a edizione)
  • Paperback: 274 pagine
  • Casa editrice: Prentice Hall
  • ISBN: 0131103628

Scherzosamente, gli hacker americani chiamano questo libro la Bibbia, Nuovo Testamento (intendendo che il Primo Testamento era la prima – storica – edizione, del 1978 (5) ).
Certo, esistono centinaia di libri che cercano di insegnare, con buon successo, il linguaggio C (in 32 lezioni, in un weekend, in 24 ore), ma questa è la vera fonte originale della conoscenza del linguaggio favorito dai professionisti dell’informatica di tutto il mondo. Se un hacker parla di K&R, intende questo libro.

Traduzione Italiana

Il linguaggio C. Principi di programmazione e manuale di riferimento
(2a edizione) 296 p., Pearson Education Italia, 2004

The C++ Programming Language

Bjarne Stroustrup

  • 1997 (3a edizione)
  • Paperback: 911 pagine
  • Casa editrice: Addison-Wesley
  • ISBN: 0201889544

Come il K&R è il riferimento del C, questo libro lo è del linguaggio C++, il successore object-oriented del C creato da Bjarne Stroustrup.
L’autore ha voluto seguire, nelle tre edizioni del suo libro (la prima è del 1987), le evoluzioni che il linguaggio da lui creato ha subito negli anni, dall’originale creato ai laboratori Bell, all’attuale specifica standard internazionale ISO/ANSI.
Rispetto alle edizioni precedenti (oltre alle già accennate variazioni dovute al processo di standardizzazione), l’autore ha voluto dedicare ampio spazio ai principi di progettazione e ai contenuti della libreria standard C++.
Pur non essendo il testo ideale per imparare il linguaggio, nessuno che usi seriamente il C++ può pensare di fare a meno di avere nella propria libreria questo essenziale testo di riferimento.

Traduzione Italiana

C++. Linguaggio, libreria standard, principi di programmazione
(3a edizione) 1015 p., Pearson Education Italia, 2000

Programming in Prolog

W. F. Clocksin, C. S. Mellish

  • Settembre 1994 (4a edizione)
  • Paperback: 281 pagine
  • Casa editrice: Springer-Verlag
  • ISBN: 0387583505

Pubblicato in origine nel 1981, questo libro era il primo testo sulla programmazione in Prolog, uno dei più originali e simpatici linguaggi in circolazione, utilizzato soprattutto nella costruzione di sistemi esperti e altri sistemi di intelligenza artificiale.
Dopo tutti questi anni, nonostante siano usciti molti altri libri su questo linguaggio, questo classico (aggiornato allo standard ISO del Prolog) rimane ancora il migliore testo sia introduttivo che di riferimento sul Prolog, grazie alla sua completezza, approccio didattico ed alla particolare enfasi sulle sue applicazioni di uso generale (invece che restringerne l’uso in campi correlati all’AI).

LISP

Patrick Winston, Berthold Horn

  • Gennaio 1989 (3a edizione)
  • Paperback: 611 pagine
  • Casa editrice: Addison Wesley
  • ISBN: 0201083191

Da sempre, la migliore introduzione al linguaggio LISP (6) - forse il linguaggio di programmazione contemporaneamente più antico e più moderno – da parte di due importanti scienziati dell’area della ricerca dell’intelligenza artificiale (Winston è il direttore del famoso AI-Lab del MIT).
Il testo accompagna il novizio del linguaggio dall’iniziale didattica fino a elaborate applicazioni pratiche del LISP, come sistemi esperti, interfacce utente in linguaggio naturale, fino a moderne applicazioni quali quella del riconoscimento visuale di oggetti.


 

Compilatori

Compilers: Principles, Techniques and Tools

Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman

  • Gennaio 1986
  • Hardcover: 500 pagine
  • Casa editrice: Addison Wesley
  • ISBN: 0201100886

Questo trio di scienziati (combinati fra loro in varie formazioni) ha scritto negli ultimi trent’anni molti libri dedicati alla programmazione, ai suoi linguaggi, alla loro comprensione e compilazione.
Fra i tanti, questo è il vero classico: nell’ambiente ci si riferisce ad esso come al Dragon Book (perché sulla copertina la complessità del problema della compilazione viene rappresentata come un drago).
Il testo fornisce una approfondita introduzione alla progettazione dei compilatori, coprendo argomenti tipo le grammatiche context-free, le macchine a stati finiti, e la traduzione syntax-directed.
A metà degli anni ’80, era il testo più aggiornato e approfondito disponibile sull’argomento. Ma nel nuovo millennio era necessaria una revisione radicale, e così alla fine di quest’anno uscirà:

 

21st Century Compilers

Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Monica Lam

  • Novembre 2005
  • Hardcover: 704 pagine
  • Casa editrice: Addison Wesley
  • ISBN: 0321131436

Aggiorna tutte le nozioni presentate nei testi precedenti, e le approfondisce affrontando argomenti avanzati come la garbage collection e l’ottimizzazione del codice. Non è ancora uscito e non l’ho ancora potuto consultare, ma conoscendo i precedenti, sono sicuro che anche questo sarà una pietra miliare.


 

Sistemi Operativi

Operating Systems Concepts

Abraham Silberschatz, Peter Baer Galvin, Greg Gagne

  • Dicembre 2004 (7a edizione)
  • Hardcover: 944 pagine
  • Casa editrice: John Wiley & Sons
  • ISBN: 0471694665

Fra tutti i campi dell’informatica, quello relative ai sistemi operativi è forse quello che più si è evoluto negli ultimi vent’anni. Se un testo degli anni ’70 sui compilatori può essere ancora utile oggi, quello sui sistemi operativi degli anni ’80 è completamente superato.
Eppure… questo testo (giunto oggi alla settima edizione (7) ) ha saputo evolversi attraverso le ere dei sistemi operativi senza perdere il suo smalto e la leadership del suo segmento. Caratterizzato in tutte le sue edizioni da immagini di dinosauri in copertina (simboli dei gigantesche dimensioni dei sistemi operativi, e un po’ anche dell’arretratezza di alcuni di essi), nell’ultima edizione compaiono dei piccolini, simboli dei piccoli sistemi operativi montati a bordo di cellulari, PDA e lettori MP3.
Oltre agli argomenti teorici e architetturali che stanno alla base di ogni sistema operativo, il testo affronta argomenti molto attuali quali sistemi operativi real-time ed embedded, multimedia, sicurezza, protezione, programmazione distribuita.
Il libro è concepito come un testo didattico, con esercizi per gli studenti.

Traduzione Italiana

Sistemi operativi. Concetti ed esempi
(6a edizione) 934 p., Pearson Education Italia, 2002
Sistemi operativi. Con esempi per l'uso in Java
(7a edizione) 714 p., Apogeo, 2005

Operating Systems: Design and Implementation

Andrew S. Tanenbaum, Albert S. Woodhull

  • Gennaio 1997 (2a edizione)
  • Hardcover: 939 pagine
  • Casa editrice: Prentice Hall
  • ISBN: 0136386776

Nonostante il titolo generico, questo testo non si occupa di sistemi operativi, al plurale, ma solamente di un singolo, piccolo sistema operativo inventato per l’occasione, e clone dello UNIX v.7, e denominato MINIX.
Il sorgente di tutto il sistema è riportato nel testo e descritto nel dettaglio, e il sistema è veramente funzionante: dall’uscita della prima versione del libro (che riportava il codice del sistema per Intel 8088, con un singolo floppy da 360kb come memoria di massa) è stato evoluto e MINIX oggi gira su macchine dal 386 in su, su Macintosh e SPARC.
Forse la cosa più importante del libro sta nel fatto che ha dato l’avvio alla catena di eventi che ha portato alla nascita del sistema operativo più trendy del momento: LINUX. Linus Torvalds aveva una copia del libro, e aveva installato MINIX sul suo PC. Ma non era totalmente contento, e così aveva cominciato a scrivere un suo kernel basandosi sul file system di MINIX e usando MINIX come sistema di sviluppo.
Poi Linux è volato con le proprie ali, ma MINIX rimane nelle sue radici.

A Commentary on the UNIX Operating System

John Lions

  • Agosto 1977
  • Paperback: 254 pagine
  • Casa editrice: Peer-To-Peer Communications
  • ISBN: 1573980137

Fantastico. Lions ha approcciato il codice di un sistema operativo complesso come UNIX allo stesso modo in cui Croce ha fatto con la Commedia dell’Alighieri, commentandolo e spiegandolo nei minimi dettagli.
Il codice della 6a edizione dello UNIX (una versione ancora scritta a sole quattro mani da Thompson e Ritchie (8) ) viene riportato e commentato riga per riga, in modo che lo studente ne comprenda ogni sfumatura.


 

Reti di computer

Computer Networks

Andrew S. Tanenbaum

  • Agosto 2002 (4a edizione)
  • Hardcover: 912 pagine
  • Casa editrice: Prentice Hall PTR
  • ISBN: 0130661023

Un classico della didattica sulle reti di computers. Nelle successive edizioni Tanenbaum ha aggiornato gli argomenti alleggerendo gli approfondimenti teorici delle prime edizioni e aggiungendo invece argomenti pratici su Internet e i problemi correlati.
Certo, la prima edizione aveva un po’ più di fascino, ma si può comunque dire che se si vuole raggiungere una buona comprensione tecnica delle problematiche delle reti moderne usufruendo di un singolo testo, questo può essere considerato la migliore risorsa.
Completo e affascinante.

Traduzione Italiana

Reti di calcolatori
(4a edizione) 1000 p., Pearson Education Italia, 2003

The Art of Deception: Controlling the Human Element of Security

Kevin Mitnick, William L. Simon

  • Ottobre 2003 (nuova edizione)
  • Hardcover: 366 pagine
  • Casa editrice: John Wiley & Sons
  • ISBN: 076454280X

Molti libri sulla sicurezza informatica preparano a rinforzare il perimetro logico dei sistemi, a implementare meccanismi di verifica dell’identità e delle credenziali di accesso.
Questo libro, invece, si concentra sull’elemento che costituisce l’anello più debole della catena della sicurezza: quello umano. Un testo che spiega le principali tecniche di social engineering utilizzate dagli hacker per ingannare gli impiegati di una società, inducendoli a rivelare informazioni sensibili e penetrare grazie ad esse nei sistemi di sicurezza così accuratamente costruiti e preparati.

Traduzione Italiana

L’arte dell'inganno. I consigli dell’hacker più famoso del mondo
(edizione originale) 324 p., Feltrinelli, 2005


 

Database

An Introduction to Database Systems

C.J. Date

  • Luglio 2003 (8a edizione)
  • Hardcover: 1024 pagine
  • Casa editrice: Addison Wesley
  • ISBN: 0321197844

Costantemente aggiornato in successive edizioni, il Date è la classica introduzione ai database. All’epoca in cui i db relazionali si affacciavano sul mercato, Date fu il più assiduo evangelista degli stessi, oltre ad essere un profondo ricercatore e grande amico  personale di Ed Codd, che il paradigma relazionale aveva per primo formalizzato e codificato.
Nel suo testo, oltre ai db relazionali, Date illustra pregi e difetti degli altri paradigmi; ovviamente, si diffonde maggiormente sull’algebra relazionale e sul linguaggi (SQL, ecc.) che la implementano.

The Database Relational Model: A Retrospective Review and Analysis

C. J. Date

  • Maggio 2000
  • Paperback: 152 pagine
  • Casa editrice: Addison Wesley Longman
  • ISBN: 0201612941

Una rivisitazione dei contributi di Ed F. Codd nel campo della tecnologia dei database da parte del suo migliore discepolo ed amico (e grande scienziato anche lui nel campo).
Date rivede gli articoli originali di Codd, spiegandone il significato e l’influenza  che ciascuno di essi ha avuto nel settore, riaffermandone il messaggio a vantaggio di una nuova generazione.


 

Software Engineering

Software Engineering: A Practitioner's Approach

Roger S. Pressman

  • Aprile 2004 (6a edizione)
  • Paperback: 880 pagine
  • Casa editrice: McGraw-Hill
  • ISBN: 007301933X

Per oltre vent’anni questo libro è stato la più venduta guida all’ingegneria del software sia per gli studenti che per i professionisti del ramo.
Il testo è organizzato in modo da essere alla portata di chi è completamente a digiuno dell’argomento, e ciononostante presentare materiale relativo agli argomenti più avanzati, di interesse dei programmatori professionisti.
La sesta edizione continua nella tradizione delle precedenti, aggiungendo una parte completamente dedicata all’analisi, progettazione e collaudo di applicazioni web e migliorando la parte dedicata all’UML (9) .
Inoltre vengono illustrati gli ultimi paradigmi di programmazione divenuti recentemente in voga: Agile Process Models, Requirements Engineering, e Design Engineering.

Traduzione Italiana

Principi di ingegneria del software
(4a edizione) 804 p., McGraw-Hill Companies, 2004

The Mythical Man-Month

Frederick P. Brooks

  • Agosto 1995 (edizione del 20° anniversario)
  • Paperback: 322 pagine
  • Casa editrice: Addison-Wesley
  • ISBN: 0201835959

Perchè i grandi progetti software falliscono ? Molti articoli e libri sono stati dedicati all’argomento.
Brooks era a capo di uno dei più ambiziosi e – poi – fallimentari progetti software IBM degli anni ’60, il sistema operativo per il sistema Stretch. Il libro analizza il suo fallimento personale e altri analoghi, e cerca di identificare gli errori fatti e i modi per prevenirli.
Brooks nel 1975 ha scritto un testo classico sull’elemento umano del software engineering. E’ tutt’altro che obsoleto: i paradigmi di programmazione e gli strumenti software possono essere cambiati, ma non sono cambiati per niente né le peculiari economie di scala non lineari del lavoro collaborativi, né la natura degli individui coinvolti in un gruppo di lavoro.
Quest’edizione che ne celebra il ventesimo anniversario include quattro nuovi capitoli; i consigli contenuti sono validi ancora oggi, ma troppi manager software non li seguono, e i progetti continuano a fallire.

About Face 2.0 - The Essentials of Interaction Design

Alan Cooper, Robert M. Reimann

  • Marzo 2003
  • Paperback: 504 pagine
  • Casa editrice: John Wiley & Sons
  • ISBN: 0764526413

Rifacimento di un classico del design dell’interfaccia utente (About Face, 1995), scritto da uno dei profeti del campo (10) . Un libro eccellente per chiunque voglia capire come mai la maggior parte del software sia così miseramente progettato dal punto di vista dell’interfaccia utente, e voglia pertanto migliorare le proprie capacità nel campo.
Una lettura obbligatoria per chiunque scriva software professionalmente.

Joel On Software

Joel Spolsky

  • Agosto 2004
  • Paperback: 362 pagine
  • Casa editrice: Apress
  • ISBN: 1590593898

Joel Spolsky da anni scrive uno dei più leggendari e più letti blog nel campo dell’informatica, Joel On Software (11) , basandosi su anni di esperienza personale in diverse aziende produttrici di software (tra cui Microsoft).
I migliori articoli pubblicati su quel blog, su molti aspetti della programmazione – dal modo migliore di scrivere software, al modo migliore per pubblicarlo, o persino sul miglior modo di arredare un ufficio da programmatore in modo da massimizzare le sue performance - stati trasformati in questo libro, pieno di saggezza.
Imperdibile per chiunque debba gestire un team di programmatori.

Traduzione Italiana

Joel e il software
384 p., Mondadori Informatica, 2005

Cube Farm

Bill Blunden

  • Agosto 2004
  • Paperback: 176 pagine
  • Casa editrice: Apress
  • ISBN: 1590594037

Complementare al testo di Brooks: mostra le dinamiche interne di un gruppo di ricerca e sviluppo di una delle più famose aziende di ERP americane. Uno spaccato delle rivalità esistenti all’interno di un’azienda caratterizzata da una lunga serie di progetti software fallimentari; mostra come si può sopravvivere e cercare di ottenere qualcosa, nonostante tutto.

Traduzione Italiana

Intrappolati in un open space
176 p., Mondadori Informatica, 2005


 

Argomenti specifici

Computer Graphics: Principles and Practice in C

James D. Foley, Andries van Dam, Steven K. Feiner, John F. Hughes

  • Agosto 1995 (2a edizione)
  • Hardcover: 1200 pagine
  • Casa editrice: Addison-Wesley
  • ISBN: 0201848406

Questo libro è la migliore introduzione disponibile alle tecniche più attuali della computer graphics. Copre in maniera esaustiva praticamente tutti gli argomenti del campo, a partire dall’hardware delle schede grafiche, alla grafica delle interfacce utente, al rendering e ray tracing, all’animazione,
Non è un libro per principianti, in quanto presume che il lettore abbia un certa esperienza di programmazione; gli algoritmi – tutti visti da un punto di vista estremamente pratico – sono presentati in linguaggio C.
Oltre ad essere utile e istruttivo, il libro è anche molto piacevole da leggere perché riporta più di cento bellissime fotografie a colori che illustrano gli algoritmi citati.


 

Storia e cultura dell’Informatica

Weaving the Web

Tim Berners-Lee

  • Novembre 2000 (1a edizione)
  • Paperback: 256 pagine
  • Casa editrice: HarperCollins
  • ISBN: 006251587X

Un giorno verso la fine degli anni ’80, Tim Berners-Lee, un fisico che lavorava al CERN di Ginevra, rimuginava sull’idea, che già circolava da molti anni, di collegare tutte le informazioni memorizzate sui computer in giro per il mondo fra di loro.
E gli venne in mente un modo per assegnare a ogni pagina memorizzata su un computer un indirizzo standard (che chiamò URL - Universal Resource Locator), accessibile tramite un protocollo che chiamò HTTP (HyperText Transfer Protocol), e formattata con un sistema denominato HTML (HyperText Markup Language).
Per dimostrare la sua idea, scrisse un server per l’HTTP e il primo browser capace di rendere l’HTML. E chiamò il suo sistema WWW (World Wide Web).
Questo libro è la storia dettagliata dell’invenzione del web, da parte di Berners-Lee e dei vari interessanti personaggi che con lui collaborarono a questa impresa, che a posteriori possiamo considerare un vero salto quantico nella storia dell’informazione, dell’economia e della società.

Traduzione Italiana

L’architettura del nuovo Web
196 p., Feltrinelli, 2001

How the Web was Born

James Gillies, Robert Caillau

  • Gennaio 2000 (1a edizione)
  • Paperback: 372 pagine
  • Casa editrice: Oxford University Press
  • ISBN: 0192862073

Questo libro, scritto da due altri protagonisti (12) – insieme a Tim Berners-Lee - dell’invenzione del World Wide Web, tracciano l’origine dello stesso a partire dalla nascita di ARPANet fino a metà degli anni ’90, quando cominciava a tratteggiarsi il boom di Internet.
Il libro racconta di come l’idea del Web nacque al CERN, di come fu sviluppata e di come alla fine venne regalata al resto del mondo in modo che venisse adottata universalmente.
La storia viene raccontata da vari punti di vista via via che i vari protagonisti vengono presentati: Steve Jobs, Bill Gates, Marc Andreessen, Tim Berners-Lee (ovviamente) e gli autori, e molti altri.

Traduzione Italiana

Com’è nato il Web
430 p., Baldini Castoldi Dalai, 2002

Whee Wizards Stay Up Late

Katie Hafner, Matthew Lion

  • Gennaio 1998 (reprint edition)
  • Paperback: 304 pagine
  • Casa editrice: Simon & Schuster
  • ISBN: 0684832674

Gli autori hanno scritto una storia ben documentata delle origini di Internet, partendo da estese interviste con i suoi creatori.
La storia parte dall’era dello Sputnik, quando durante l’amministrazione Eisenhower venne fondato l’IPTO (Information Processing Techniques Office) all’interno dell’agenzia ARPA (Advanced Research Projects Agency) del Dipartimento della Difesa. ARPANet, la creazione sponsorizzata dall’IPTO, venne concepita da J.C.R. Licklider come una rete che mettesse in comunicazione i pochi computer sparsi per il territorio degli Stati Uniti, e – in un epoca ossessionata dalla prospettiva di una guerra nucleare - resa interessante dalle idee di Paul Baran su una infrastruttura di comunicazione virtualmente indistruttibile grazie alla tecnologia packet-switching.
La storia continua con la costruzione dell’infrastruttura di comunicazione da parte della BBN (Bolt, Beranek & Newman) e dell’ideazione dei vari protocolli di comunicazione da parte dei ricercatori delle varie università coinvolte nel progetto.
Non viene poi dimenticato il cruciale contributo dato da quei ricercatori, come Bob Taylor e Larry Roberts, che si dimostrarono ottimi amministratori una volta incaricati di coordinare tutto il progetto non solo dal punto di vista scientifico ma anche organizzativo.

Traduzione Italiana

La storia del futuro. Le origini di Internet
280 p., Feltrinelli, 1998

The Soul Of A New Machine

Tracy Kidder

  • Giugno 2000 (ristampa)
  • Paperback: 320 pagine
  • Casa editrice: Back Bay Books
  • ISBN: 0316491977

Nei tardi anni ’70, il giornalista Kidder visse per mesi a stretto contatto con il team che alla Data General progettò e costruì il minicomputer a 32bit Eclipse in soli 12 mesi.
Questo libro, che vinse il premio Pulitzer nel 1981, racconta le storie dei giovani ingegneri che con grande motivazione, e sforzo eroico, si dedicarono ad un progetto la cui schedulazione aveva dell’impensabile.
Nonostante gli avanzamenti fatti della tecnologia, questo libro rimane una interessantissima storia di uomini e macchine.

Understanding Media

Marshall McLuhan

  • Ottobre 1994 (reprint edition)
  • Hardcover: 392 pagine
  • Casa editrice: The MIT Press
  • ISBN: 0262631598

Quest’edizione è stata ristampata per celebrare il trentesimo anniversario dell’uscita, nel 1965, di uno dei classici più influenti della cultura del 20° secolo.
McLuhan dedicò questo lavoro al fenomeno allora emergente dei mass media, e su queste pagine introdusse modi di dire che entrarono a far parte del lessico moderno, come villaggio globale, o il medium è il messaggio.
Il concetto centrale, che funziona da leitmotiv dell’intero libro, è che ogni medium di massa è un’estensione dell’uomo; pertanto, quello che è fondamentale per lo studioso di informatica moderna è capire che anche il computer è un’estensione dell’uomo, e inquadrarlo nelle teorie di McLuhan sui modelli massmediologici.
In una nuova introduzione a quest’edizione, il direttore di Harper’s Lewis Lapham rivaluta il lavoro di McLuhan alla luce dei cambiamenti tecnologici, politici e sociali che sono avvenuti nell’ultima parte del secolo che si è appena chiuso.

Traduzione Italiana

Gli strumenti del comunicare
384 p., Net, 2002

The New Hacker’s Dictionary

Eric Raymond

  • Ottobre 1996 (3a edizione)
  • Paperback: 547 pagine
  • Casa editrice: The MIT Press
  • ISBN: 0262680920

Non bisogna pensare che sia un dizionario tecnico di informatica, che se riporta definizioni accurate della maggior parte dei termini tecnici usati nel campo.
Piuttosto, è uno spaccato della subcultura hacker, visto attraverso il suo gergo segreto e il suo slang, con molti riferimenti alla sua storia e al suo sviluppo.
Eccezionalmente divertente e istruttivo.

The Cuckoo’s Egg

Clifford Stoll

  • Ottobre 2000 (1a edizione Pocket) - uscito in origine per Doubleday nel 1989
  • Paperback: 416 pagine
  • Casa editrice: Pocket
  • ISBN: 0743411463

Questo libro sembra aver ispirato tutta una categoria di libri dedicate alla ricerca e alla cattura di criminali informatici (13) ; rimane però il primo e il migliore, grazie anche al giusto mix di approfondimenti tecnici e pathos da romanzo poliziesco che lo rendono godibile sia dall’esperto di informatica che dal completo illetterato.
Tutto cominciò come un errore di addebito di tempo di computer per 75 centesimi di dollaro, per trasformarsi presto, per l’autore protagonista – un astrofisico che lavorava come system manager in un laboratorio di ricerca californiano - in un’appassionante caccia all’uomo cibernetica.
Inizialmente Stoll condusse una guerra solitaria, ricevendo poca collaborazione da parte degli amministratori degli altri sistemi violati dal cibercriminale, dalle agenzie governative, e persino dai responsabili del laboratorio che Stoll gestiva.
Ma la sua persistenza e diligenza pagarono, e alla fine Stoll riuscì ad incastrare l’hacker venticinquenne tedesco Markus Hess, appartenente ad una gang spionistica che da Hanover penetrava i sistemi di importanti installazioni governative americane alla ricerca di segreti, da vendere ai Servizi della Germania Orientale.
Ma dopo la caccia ci fu un epilogo: il primo meltdown della rete Internet causata da un virus (14) . Stoll racconta di come partecipò al confinamento dei danni e alla riparazione della vulnerabilità dei sistemi colpiti.

Just For Fun

Linus B. Torvalds, David Diamond

  • Giugno 2002
  • Paperback: 288 pagine
  • Casa editrice: HarperCollins
  • ISBN: 0066620732

E’ la storia di come Linus Torvalds si è trasformato da un introverso programmatore senza un soldo nella Helsinki dei primi anni ‘90 a essere verso la fine della decade un inconsapevole leader di una rivoluzione radicale nella storia dei computer.
La storia – narrata in prima persona dal protagonista, con l’aiuto del direttore di Red Herring - racconta del tentativo di Torvalds, di migliorare MINIX, il sistema operativo scritto da Andrew Tanenbaum. Linus non era per nulla contento della struttura, per cui piano piano costruì un nuovo kernel utilizzando MINIX come file system e sistema di sviluppo. Quindi, con una mossa che si rivelò vincente, condivise il codice via Internet con altri appassionati programmatori, che fecero a gara ad aiutarlo a rifinire il sistema stesso.
In questo modo, LINUX (come venne chiamato il sistema operativo) si trasformò rapidamente in una rivoluzione accidentale, e Torvalds oggi per molti è una star dell’informatica più di Bill Gates.

Traduzione Italiana

Rivoluzionario per caso
(2a edizione) 285 p., Garzanti Libri, 2005

Libertà di software, hardware e conoscenza

Mariella Berra, Angelo Raffaele Meo

  • Novembre 2005
  • Paperback: 360 pagine
  • Casa editrice: Bollati Boringhieri
  • ISBN:

E’ l’edizione ampliata, aggiornata e riveduta di Informatica solidale, che è stato un grande successo nel 2001.
Il successo di invenzioni come il sistema operativo Linux o l’enciclopedia Wikipedia, frutto della collaborazione spontanea di migliaia di persone di tutto il mondo, offre una prospettiva concreta ad un modello di sviluppo basato sul dono e la cooperazione, e sulla conoscenza aperta e libera: Per un futuro possibile – dicono gli autori – di crescita più eguale, equilibrata, sostenibile e conviviale.
Si tratta di un’analisi approfondita delle nuove tecnologie e delle politiche dei governi nazionali e locali nei confronti del software libero e open source.
Più in generale, nell’ultimo capitolo, viene discussa la questione della proprietà intellettuale di cui il caso del software libero è soltanto uno degli esempi più emblematici.

 



(1) Concrete in inglese significa sia concreto che cemento.

(2) I titoli dei tre volumi sono Fundamental Algorithms, Seminumerical Algorithms, e Sorting and Searching.

(3) Tanto per dire, ha rivoluzionato l’editoria elettronica inventando TEX e MetaFont, un discreto numero di nuovi tipi di caratteri, e inventato il Literate Programming, ossia una modalità di programmazione che unisce codice e documentazione in un unico documento.

(4) In questo caso particolare, in Scheme, uno dei dialetti del LISP maggiormente adatti alla didattica.

(5) La prima edizione copriva il C classico, come inventato da Dennis Ritchie e Ken Thompson (e chiamato, da questo libro, K&R C); la seconda edizione è uscita dopo la standardizzazione del C operata dall’American National Standards Institute e, oltre a illustrare C standard ANSI, espande alcune parti (forse un po’ troppo asciutte nella prima edizione) aiutando molto l’autodidatta.

(6) Il dialetto LISP qui utilizzato è il Common LISP, con le sue estensioni object-oriented CLOS.

(7) Nelle edizioni precedenti Silberschatz aveva come co-autore Peterson, oggi sostituito da Galvin e Gagne.

(8) Un’edizione che contiene ancora il famoso commento You are not expected to understand this

(9) Unified Modeling Language, il linguaggio più in voga di descrizione dei sistemi.

(10) Alan Cooper scrisse quel software di rapid prototyping visuale che, acquistato da Microsoft, divenne Visual Basic.

(12) Ambedue lavoravano al CERN con Berners-Lee; in particolare, Caillau scrisse insieme a quest’ultimo la famosa proposta al management del CERN WorldWideWeb: Proposal for a HyperText Project del 12 novembre 1990.

(13) Vedi Takedown di Tsutomu Shimomura o The Fugitive Game di Jonathan Littman, entrambi dedicati alla cattura di Kevin Mitnick.

(14) Il famoso Internet Worm del novembre 1988, scritto da Robert Tappan Morris, uno studente di informatica, per impressionare il padre Robert Morris Sr., famosissimo esperto di sicurezza informatica della NSA (National Security Agency).