Questo documento elenca quello che io considero essere libri di riferimento essenziali per imparare Unix (specialmente Linux) e a programmare in esso.
Le nuove versioni del Linux Reading List HOWTO saranno postate periodicamente su comp.os.linux.answers. Ne sarà inoltre fatto l'upload ai tanti siti WWW e FTP su Linux, tra cui la home page di LDP.
L'ultima versione la si può consultare nel World Wide Web a questo URL http://sunsite.unc.edu/LDP/HOWTO/Reading-List-HOWTO.html.
Se si hanno domande o commenti su questo documento (o semplicemente si vuole suggerire un libro che si pensa ci dovrebbe essere), si invii liberamente una mail a Eric S. Raymond, a esr@thyrsus.com. Qualsiasi suggerimento o critica sarà il benvenuto.
Per HOWTO, riviste e altro materiale in linea, si veda la home page del Linux Documentation Project.
Alcuni anni fa ho scritto una bibliografia Unix meno incentrata su Linux che potrebbe ancora essere di un qualche interesse, oltre a essere un po' divertente. La Loginataka la si può trovare a http://www.tuxedo.org/~esr/faqs/loginataka.html.
SAGE, il System Administrator's Guild, mantiene un elenco eccellente di libri importanti a http://www.usenix.org/sage/sysadmins/books/booklist.html.
I commenti non tra virgolette o sono miei, oppure non ho trovato nessun motivo di cambiare quelli originali di Jim Haynes (il manutentore precedente di questo documento). Commenti inviati da altri sono tra virgolette e sono preceduti dal nome del rispettivo autore (JH è Jim Haynes).
Gli URL «Si veda» annessi alle informazioni di pubblicazione puntano direttamente al catalogo web dell'editore e tipicamente conducono ad una pagina contenente una foto della copertina, fascette pubblicitarie e informazioni per l'ordine. Alcuni libri non hanno questo link poiché l'editore usa i frame e non è possibile fare un bookmark delle pagine del catalogo.
Le aree elencante partono a grandi linee dalle cose più generali fino a quelle più specifiche (dalla cultura alla programmazione utente, per passare poi alla programmazione del kernel fino all'hardware). Nelle varie sezioni ho provato a elencare per primi i libri più utili e con i quali ho più familiarità. Onestamente, è solamente un'imbarazzante coicidenza che un mio libro appaia per primo in questo elenco! (Sono ben accetti suggerimenti per una migliore organizzazione.)
Raymond, Eric S.; MIT Press; 1996; ISBN 0-262-68092-0; 547pp.
Si veda
http://www-mitpress.mit.edu/book-home.tcl?isbn=0262680920.
Ehm... Una guida alla cultura di Internet. Piace ad un sacco di gente. Versione HTML nella Jargon File Resource Page.
Salus, Peter H.; Addison-Wesley; 1994; ISBN 0-201-54777-5; 256pp.
Si veda
http://www.awl-he.com/titles/13683.html
Linux è parte della tradizione Unix. Questo libro è la storia di Unix -- come è nato, com'è evoluto, come si è diffuso -- raccontata da chi c'era.
Brooks, Frederick P.; Addison-Wesley 1995 (ISBN 0-201-83595-9).
Si veda
http://www.awl-he.com/titles/14147.html.
Il libro sull'ingegneria del software che tutti dovrebbero leggere.
Alan Cox: «Lo raccomando non per il suo valore tecnico, bensì per come applica il comune buon senso e realismo ai progetti software.» JH: «Ah, sì. Quello che si sarebbe dovuto fare se Linus avesse auto a disposizione 200 programmatori e avesso voluto produrre Linux in 3 mesi!»
AT&T; 416 pp.
Alcuni dei primi articoli su Unix, tra cui Ritchie & Thompson, «The UNIX Time Sharing System»; Thompson, «UNIX Implementation»; Ritchie, «A Retrospective»; Bourne, «The UNIX Shell»...
Welsh, Matt; LDP; 1997. Disponibile nella home page di LDP, oppure direttamente a http://www.linuxdoc.org/LDP/gs/.
Come far funzionare Linux. Spiega un sacco di concetti basilari su Linux. Tratta alcune nozioni basilari di amministrazione di sistema.
Wirzenius, Lars; LDP; 1997. Disponibile nella home page di LDP, oppure direttamente a http://www.linuxdoc.org/LDP/sag.
Un eccellente libro di partenza su come mantenere ed amministrare un sistema Linux.
Frisch, Aeleen; O'Reilly; 1995; ISBN 1-56592-127-5;
$34.95.
Si veda
http://www.ora.com/catalog/esa2/noframes.html.
Trattazione più approfondita dei normali task di amministrazione di sistema. Non specifico su Linux sebbene contenga materiale su Linux.
Hekman, Jessica P. et al.; O'Reilly;
ISBN 1-56592-585-8,; 1999; 628 pp. $29.95.
Si veda
http://www.oreilly.com/catalog/linuxnut2/.
Secondo O'Reilly, «La guida di riferimento per Linux». Dedicata agli utenti di Linux, rende obsoleto il loro «Unix In a Nutshell» che era più orientato a SVr4/Solaris.
Welsh, Matt, & Matthias Kallw Dalheimer & Kaufman, Lar;
O'Reilly;
ISBN 1-56592-469-X; 1999; 650pp; $34.95.
Si veda
http://www.oreilly.com/catalog/runux3/.
Tutto quello che si deve sapere per poter capire, installare e usare il sistema operativo Linux. Un libro eccellente per novizi.
Sobell, Mark G.; Addison-Wesley;
ISBN ISBN 0-201-32569-1; 1998; 1015 pp.
Semplicemente quel che dice il titolo -- lezioni pratiche sui fondamenti di Unix, shell, editor, programmi per la posta, networking, strumenti per il Web ed utilità varie. Tratta alcuni fondamenti di amministrazione di sistema (questa sembra essere un nuovo formato del ``A Practical Guide to Linux'' del 1997 da parte degli stessi autori, senza una copia di Caldera OpenLinux Lite)
Garfinkel, Simpson, and Spafford, Gene; O'Reilly Associates; ISBN
0-56592-148-8; 1004pp; 1996; $39.95.
Si veda
http://www.ora.com/catalog/puis/noframes.html.
Ronald P. Miller: «Qualche sovrapposizione con Essential System Admin., ma in fin dei conti un buon libro sulla sicurezza, specialmente per quanti aspirano a permettere l'accesso alle proprie macchine Linux da parte di più utenti sia in dial-up che attraverso la rete.»
Cheswick, William R. & Bellovin, Steven M.; Addison-Wesley;
1994; ISBN 0-201-63357-4; 320pp.
Wall, Larry & Christiansen, Tom & Schwartz, Randal; O'Reilly; 1997;
ISBN 0-56592-149-6; 644pp.
Si veda
http://www.ora.com/catalog/pperl2/noframes.html.
La shell (come linguaggio di programmazione per script appena un pelino complessi) è morta. Perl ha preso il suo posto. Questa è la seconda edizione del libro definitivo su Perl -- molto meglio organizzato del precedente e tratta Perl 5.
Emmanuel Pierre mantiene un breve elenco di libri sul Perl.
Lutz, Mark; O'Reilly; 1997; ISBN 0-56592-197-6; 880pp.
Si veda
http://www.ora.com/catalog/python/noframes.html.
Il passo successivo al Perl. Python è spendidamente progettato, ha una migliore integrazione con C, ed è meglio scalabile per problemi di grosse dimensioni.
Musciano, Chuck & Kennedy. Bill; O'Reilly; 1998;
ISBN 1-56592-492-4; 576pp.
Si veda
http://www.oreilly.com/catalog/html3/.
La migliore guida/riferimento di HTML che ho mai visto, ed è il solo libro su HTML di cui si avrà bisogno finché non si voglia usare CGI.
Kernighan, Brian, and Pike, Rob;
Prentice-Hall; 1984; ISBN 0-13-937681-X; 1984.
Un vero classico -- se possibile la miglior esposizione in un unico libro della filosofia di Unix.
Goossens, Michael & Mittlebach, Frank, & Samarin, Alexander;
Addison-Wesley; 1994; ISBN 0-201-54199-8; 530pp.
Si veda
http://www.awl-he.com/titles/13661.html.
Dalla Prefazione: «Se sei uno di quegli utenti a cui piacerebbe sapere come LaTeX può essere esteso per creare i documenti più belli possibile senza diventare un guru di (La)TeX, allora questo libro fa proprio per te». Bruce Thompson aggiunge: «Un libro veramente molto bello che fornisce un sacco di informazioni sulle nuove estensioni del LaTeX e moltissimi esempi che mostrano precisamente come il layout del proprio documento può essere manipolato.»
Lamport, Leslie; Addison-Wesley; 1994; ISBN 0-201-52983-1; 256pp.
Si veda
http://www.awl-he.com/titles/13632.html.
Bruce Thompson: «Il riferimento definitivo su LaTeX 2.09 ad opera del suo autore. Una nuova edizione che tratta il LaTeX2e (la versione attualmente inclusa nelle distribuzioni di TeX/LaTeX) è in preparazione. LaTeX 2.09 è pienamente supportato da LaTeX2e. Un must per quanti vogliono usare LaTeX. Fornisce una introduzione graduale alla preparazione dei documenti e ai diversi strumenti che LaTeX mette a disposizione per produrre documenti di qualità professionale. Moltissimi esempi.»
Addison-Wesley; 1986, ISBN 0-201-13448; 496pp. Si veda http://www.awl.com/cp/TeXbook.html
Bruce Thompson: «La guida utente definitiva ed il manuale di riferimento completo per TeX. Probabilmente non serve per il normale uso di LaTeX, ma resta comunque un libro molto affascinante.» Voglio sottilineare che questo libro non è per deboli di cuore.
Knuth, Donald A.; Addison-Wesley; 1986; 0-201-13444-6, 1986; 384pp.
Si veda
http://www.awl.com/cp/METAFONTbook.html
Bruce Thompson: «La guida utente definitiva ed il manuale di riferimento completo per METAFONT, il programma di supporto a TeX per la creazione dei font. Un eccellente lavoro se si ha intenzione di sviluppare dei propri font per l'uso in TeX e LaTeX. METAFONT è incluso nelle normali distribuzioni di TeX/LaTeX.» Questo libro non è veramente per i deboli di cuore.
Quelli che seguono sono testi classici su come sviluppare programmi efficienti:
Kernighan, Brian W. & Pike. Rob; 1999; Addison-Wesley; ISBN 0-201-61586-X. Si veda http://cm.bell-labs.com/cm/cs/tpop/
Un eccellente trattato sulla scrittura di programmi di alta qualità. sicuramente destinato a diventare un classico in questo campo.
Bentley, Jon; 2000; Addison-Wesley; ISBN ISBN 0-201-65788-0. Si veda http://www.programmingpearls.com/
Questa è una selezione di saggi dalla colonna di Bentley nella rivista Communications of the ACM. Discute una grande varietà di questioni sul miglioramento dei programmi, e comprende un grosso numero di esempi sull'efficienza.
Bentley, Jon Louis; 1982; Prentice-Hall, Inc.; ISBN 0-13-970251-2 o 0-13-970244-X.
Questo libro presenta la metodologia e un insieme di regole di Bentley per aumentare l'efficienza di un programma, e comprende un grande numero di esempi.
Kernighan, Brian W.; Ritchie, Dennis M; Prentice-Hall; 1988;
ISBN 0-13-110362-8, 272pp.
La seconda versione migliorata, che tratta l'ANSI C, dell'originale classico libro scritto dagli inventori del C, «K&R». Ancora il migliore!
Heller, Steve; Academic Press; 1996; ISBN 0-12-339097; 508pp.
Il miglior libro introduttivo sul C++ che io abbia mai visto. Ora disponibile anche sul Web.
Lewine, Donald; O'Reilly; 1992; ISBN 0-937175-73-0; 607pp.
Si veda
http://www.ora.com/catalog/posix/noframes.html.
Un eccellente riferimento per i programmatori sugli standard POSIX.1. Preferisco questo piuttosto di quello scelto da JH.
Zlotnick, Fred; Benjamin, Cummings; 1991; ISBN 0-8053-9605-5; 379pp.;
$35.95 (USA).
JH: «Quando protestai per la mancanza della Sezione 2 delle pagine man di Linux, qualcuno mi disse di prendermi un libro su POSIX, perché è questo è quello che fa Linux. Mi piace questo libro perché non sono un programmatore professionista e l'autore fornisce copiose spiegazioni ed esempi.»
Stevens, Richard; 1992; ISBN 0-201-56317; Addison-Wesley
Un libro sulla programmazzione generica in Unix, buono quanto il classico libro di Stevens sulla programazione di rete.
Michael K. Johnson, Erik W. Troan; 1998; ISBN 0201308215; Addison-Wesley.
Il miglio riferimento sulle API C di Linux.
Volume 1, Networking APIs: Sockets and XTI W. Richard Stevens, PTR Prentice-Hall, 1998 ISBN 0-13-490012-X
UNIX Network Programming 2nd Edition, Volume 2, Interprocess Communications W. Richard Stevens PTR Prentice-Hall, 1998
Tutto quel che si deve sapere sull'argomento. Generalmente considerati come le guida definitiva.
Kirch, Olaf; O'Reilly; 1995; ISBN 1-56592-087-2; 335pp.
Si veda
http://www.ora.com/catalog/linag/noframes.html.
Una guida pratica sul TCP/IP di Linux e sui servizi correlati. Accessibile sul Web attraverso la pagina del Linux Documentation Project, o direttamente a http://sunsite.unc.edu/LDP/LDP/nag/nag.html.
Hunt, Craig; O'Reilly Associates, ISBN 0-937175-82-X; 1992; 472pp.
Si veda
http://www.ora.com/catalog/tcp2/noframes.html.
Meno specifico su Linux rispetto al libro di Kirch. Sviluppa una trattazione più approffondita del cuore del TCP/IP, trattando anche instradamento e BGP.
Albitz, Paul, and Liu, Cricket; O'Reilly; 1998; ISBN 1-56592-512-2;
502pp; $32.95.
Si veda
http://www.ora.com/catalog/dns2/noframes.html.
Approfondita trattazione del DNS, utile a quanti usano complicate installazioni con diverse sottoreti. Tratta la libreria di programmazione BIND.
Costales, Bryan & Allman, Eric; O'Reilly;
ISBN 1-56592-222-0; 1997; 1050 pp; $32.95
Si veda
http://www.ora.com/catalog/sendmail2/noframes.html.
Una esaustiva (ed estenuante) guida all'agente di trasferimento delle mail standard di Linux e Unix.
Bach, Maurice J.; Prentice-Hall; ISBN 0-13-201799-7; 470pp.; $60 (USA).
Il libro da cui è partito Linus. Si veda http://www.prenhall.com/books/ptr_0132017997.html
Tanenbaum, Andrew S.; Prentice-Hall; 1987.
Ad Alan Cox (una delle persone del cuore del kernel) piace questo libro. Tanenbaum ha progettato Minix, che è il sistema da cui Linus ha avviato Linux. Si veda http://www.prenhall.com/books/esm_0136386776.html.
Rémy Card, Èric Dumas, Franck Mével; John Wiley and Sons; 1998; ISBN 0-471-98141-9. $100 (AUS).
(Traduzione del libro in lingua francese «Programmation Linux 2.0»; stessi autori; 1997; Éditions Eyrolles; Paris, France.)
Un descrizione molto interessante e informativa del funzionamento del kernel che riesce a riempire i buchi tra l'intefaccia POSIX e «The Design of the Unix Operating System» e i codici sorgente di Linux. Un prerequisito è una buona comprensione del progetto e del funzionamento di un SO UNix, ma questo libro è comunque un eccellente aiuto per andare oltre la semplice comprensione e cominciare il vero lavoro.
L'autore principale è uno degli sviluppatori chiave del filesystem ext2, e questo libro mostra una forte conoscenza della materia, con spiegazioni chiare e struttura. È sorprendentemente leggibile per qualcosa che tratta argomenti a così basso livello. Il libro sembra aver leggermente sofferto della traduzione in inglese -- ci sono alcuni errori di battitura e grammaticali, ma è abbastanza leggibile (i nomi dei file d'esempio sono maliziosamente lasciati in francese).
Non è trattata l'implementazione dei protocolli di rete.
Il libro è incentrato su Linux 2.0.35 con qualche preannuncio del 2.1 e 2.2.
Johnson, Michael K.
Accessibile sul Web nella pagina Linux Documentation Project, o direttamente a http://www.redhat.com/mirrors/LDP/LDP/khg/HyperNews/get/khg.html
Beck, Michael & Bohme, Harold & Mirko, Dziadzka & Kunitz, Ulrich &
Magnus, Robert & Verworner, Dick; Addison Wesley; 1998;
ISBN:0-201-33143-8; 480.
Si veda
http://www.awl-he.com/titles/11653.html.
Una guida alla programmazione del kernel di Linux; tratta 2.0.
McKusick, Marshall Kirk, Bostic, Keith, Karels, Michael J., and
Quarterman, John S.; Addison-Wesley; 1996; ISBN 0-201-54979-4;
608pp.
Si veda
http://www.awl-he.com/titles/13693.html
Il successore del classico libro sull'implementazione del kernel 4.3 di BSD, che ha influenzato il design di Linux (specialmente per i socket e il networking). Questo libro copre i fondamenti 4.4BSD di BSD/OS, FreeBSD e NetBSD.
Dr. Dobb's Journal; Jan 1991-July 1992.
Intel Corp.; ISBN 1-55512-022-9; 1986;
Parte I. Programmazione delle Applicazioni: tipi di dati, modello di memoria, insieme di istruzioni. Parte II. Programmazione di Sistema: architettura, gestione e protezione della memoria, multitasking, I/O, exception e interrupt, inizializzazione, uso del coprocessore e del multiprocessing. Parte III. Compatibilità (con le vecchie macchine x86). Parte IV. Insieme di Istruzioni.
Intel Corp.; ISBN 1-55512-023-7; 1987.
Spiega le caratteristiche del 386 per gli autori di sistemi operativi. Include un capitolo sull'implementazione di Unix. Buona parte dell'architettura del 80386 sembra essere stata sviluppata tenendo ben in mente il Multics; le caratteristiche che non sono usate da DOS o da Unix.
Crawford, John H & Gelsinger, Patrick P.; Sybex; ISBN 0-89588-381-3; 774pp.; $26.95 (USA).
Questo è il libro che Jolitzes ha usato quando ha fatto il port di BSD sull'architettura 386.
Intel Corp.; 1993; ISBN 1-55512-195-0;
Praticamente la versione per Pentium del 80386 Programmer's manual prima citato.
Nota: questi libri sono vecchi di quattro o cinque anni e probabilmente obsoleti. Sinceramente non ho mai messo le mani sull'hardware...
Intel Corp.; 1986; ISBN 1-55512-024-5;
Connessioni dei piedini, temporizzazioni, forme d'onda, diagrammi a blocchi, tensioni e tutto questo genere di cose.
Messmer, Hans-Peter; Addison-Wesley; 1993; ISBN 0-201-62424-9; 1000 pp.
JH: «Tratta le cose più recenti come EIDE e PCI.»
This document is copyright 1999 by Eric S. Raymond. You may use, disseminate, and reproduce it freely, provided you:
These restrictions are intended to protect potential readers from stale or mangled versions. If you think you have a good case for an exception, ask me.
In origine questo documento era un mini HOWTO mantenuto da Jim Haynes. Io ho cambiato un po' di cose, provando a renderlo un documento a sé stante e meno basato sulle varie bibliografie postate in USENET. Le piccole recensioni senza nome sono mie anziché sue.