The Linux Reading List HOWTO di Eric S. Raymond v1.11, 23 marzo 2000 Questo documento elenca i libri che penso siano i più validi per una persona che provi ad imparare Unix (in particolare Linux) partendo dai concetti generali. Traduzione di Giovanni Bortolozzo (borto at pluto.linux.it). 1. Introduzione 1.1. Scopo di questo documento Questo documento elenca quello che io considero essere libri di riferimento essenziali per imparare Unix (specialmente Linux) e a programmare in esso. 1.2. Nuove versioni di questo documento 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 . 1.3. Commenti e correzioni 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. 1.4. Risorse correlate 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 . SAGE, il System Administrator's Guild, mantiene un elenco eccellente di libri importanti a . 1.5. Convenzioni usate in questo documento 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.) 2. Libri su cultura, storia e pragmatica The New Hacker's Dictionary (Third Edition) Raymond, Eric S.; MIT Press; 1996; ISBN 0-262-68092-0; 547pp. Si veda . Ehm... Una guida alla cultura di Internet. Piace ad un sacco di gente. Versione HTML nella Jargon File Resource Page . A Quarter Century of Unix Salus, Peter H.; Addison-Wesley; 1994; ISBN 0-201-54777-5; 256pp. Si veda Linux è parte della tradizione Unix. Questo libro è la storia di Unix -- come è nato, com'è evoluto, come si è diffuso -- raccontata da chi c'era. The Mythical Man Month (Anniversary Edition) Brooks, Frederick P.; Addison-Wesley 1995 (ISBN 0-201-83595-9). Si veda . 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!» Bell System Technical Journal, July-August 1978, Vol. 57, No. 6, part 2 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»... 3. Libri su Unix/Linux in generale 3.1. Installazione ed amministrazione di Linux Linux Installation and Getting Started Welsh, Matt; LDP; 1997. Disponibile nella home page di LDP, oppure direttamente a . Come far funzionare Linux. Spiega un sacco di concetti basilari su Linux. Tratta alcune nozioni basilari di amministrazione di sistema. Linux System Administrator's Guide Wirzenius, Lars; LDP; 1997. Disponibile nella home page di LDP, oppure direttamente a . Un eccellente libro di partenza su come mantenere ed amministrare un sistema Linux. Essential System Administration (Second Edition) Frisch, Aeleen; O'Reilly; 1995; ISBN 1-56592-127-5; $34.95. Si veda . Trattazione più approfondita dei normali task di amministrazione di sistema. Non specifico su Linux sebbene contenga materiale su Linux. 3.2. Usare Unix & Linux Linux in a Nutshell (2nd edition) Hekman, Jessica P. et al.; O'Reilly; ISBN 1-56592-585-8,; 1999; 628 pp. $29.95. Si veda . 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. Running Linux (Third Edition) Welsh, Matt, & Matthias Kallw Dalheimer & Kaufman, Lar; O'Reilly; ISBN 1-56592-469-X; 1999; 650pp; $34.95. Si veda . Tutto quello che si deve sapere per poter capire, installare e usare il sistema operativo Linux. Un libro eccellente per novizi. Hands-on-Linux 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) 3.3. Sicurezza di sistema Practical Unix and Internet Security (2nd Edition) Garfinkel, Simpson, and Spafford, Gene; O'Reilly Associates; ISBN 0-56592-148-8; 1004pp; 1996; $39.95. Si veda . 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.» Firewalls & Internet Security Cheswick, William R. & Bellovin, Steven M.; Addison-Wesley; 1994; ISBN 0-201-63357-4; 320pp. 4. Libri su shell, script e programmazione Web Programming Perl (Second Edition) Wall, Larry & Christiansen, Tom & Schwartz, Randal; O'Reilly; 1997; ISBN 0-56592-149-6; 644pp. Si veda . 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 . Programming Python Lutz, Mark; O'Reilly; 1997; ISBN 0-56592-197-6; 880pp. Si veda . Il passo successivo al Perl. Python è spendidamente progettato, ha una migliore integrazione con C, ed è meglio scalabile per problemi di grosse dimensioni. HTML: The Definitive Guide (3nd Edition) Musciano, Chuck & Kennedy. Bill; O'Reilly; 1998; ISBN 1-56592-492-4; 576pp. Si veda . 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. The Unix Programming Environment 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. 5. Libri sulla formattazione testi 5.1. Tex e LaTeX The LaTeX Companion Goossens, Michael & Mittlebach, Frank, & Samarin, Alexander; Addison-Wesley; 1994; ISBN 0-201-54199-8; 530pp. Si veda . 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.» LaTeX: A Document Preparation System (Second Edition) Lamport, Leslie; Addison-Wesley; 1994; ISBN 0-201-52983-1; 256pp. Si veda . 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.» The TeXbook, Volume A of Computers and Typesetting; Knuth, Donald A. Addison-Wesley; 1986, ISBN 0-201-13448; 496pp. Si veda 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. The METAFONT book, Volume C of Computers and Typesetting Knuth, Donald A.; Addison-Wesley; 1986; 0-201-13444-6, 1986; 384pp. Si veda 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. 6. Buone norme/stili di programmazione Quelli che seguono sono testi classici su come sviluppare programmi efficienti: The Practice of Programming Kernighan, Brian W. & Pike. Rob; 1999; Addison-Wesley; ISBN 0-201-61586-X. Si veda Un eccellente trattato sulla scrittura di programmi di alta qualità. sicuramente destinato a diventare un classico in questo campo. Programming Pearls (2nd Edition) Bentley, Jon; 2000; Addison-Wesley; ISBN ISBN 0-201-65788-0. Si veda 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. Writing Efficient Programs. 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. 7. Libri sulla programmazione C e C++ 7.1. C e C++ The C Programming Language (Second Edition) 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! Who's Afraid of C++? 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 . 7.2. Intefaccia C alle chiamate a sistema POSIX Programmer's Guide: Writing Portable Unix Programs Lewine, Donald; O'Reilly; 1992; ISBN 0-937175-73-0; 607pp. Si veda . Un eccellente riferimento per i programmatori sugli standard POSIX.1. Preferisco questo piuttosto di quello scelto da JH. The Posix.1 Standard: A Programmer's Guide 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.» Advanced Programming in The Unix Environment 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. Linux Application Development Michael K. Johnson, Erik W. Troan; 1998; ISBN 0201308215; Addison-Wesley. Il miglio riferimento sulle API C di Linux. 8. Libri sul networking Unix Network Programming 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. Linux Network Administrator's Guide Kirch, Olaf; O'Reilly; 1995; ISBN 1-56592-087-2; 335pp. Si veda . 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 . TCP/IP Network Adminstration Hunt, Craig; O'Reilly Associates, ISBN 0-937175-82-X; 1992; 472pp. Si veda . Meno specifico su Linux rispetto al libro di Kirch. Sviluppa una trattazione più approffondita del cuore del TCP/IP, trattando anche instradamento e BGP. DNS and BIND (Second Edition) Albitz, Paul, and Liu, Cricket; O'Reilly; 1998; ISBN 1-56592-512-2; 502pp; $32.95. Si veda . Approfondita trattazione del DNS, utile a quanti usano complicate installazioni con diverse sottoreti. Tratta la libreria di programmazione BIND. Sendmail (Second Edition) Costales, Bryan & Allman, Eric; O'Reilly; ISBN 1-56592-222-0; 1997; 1050 pp; $32.95 Si veda . Una esaustiva (ed estenuante) guida all'agente di trasferimento delle mail standard di Linux e Unix. 9. Libri sull'Implementazione del kernel Unix 9.1. Antenati di Linux The Design of the Unix Operating System Bach, Maurice J.; Prentice-Hall; ISBN 0-13-201799-7; 470pp.; $60 (USA). Il libro da cui è partito Linus. Si veda Operating Systems, Design and Implementation; 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 . 9.2. Linux The Linux Kernel book 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. Linux Kernel Hackers' Guide Johnson, Michael K. Accessibile sul Web nella pagina Linux Documentation Project, o direttamente a LINUX Kernel Internals (Second Edition) Beck, Michael & Bohme, Harold & Mirko, Dziadzka & Kunitz, Ulrich & Magnus, Robert & Verworner, Dick; Addison Wesley; 1998; ISBN:0-201-33143-8; 480. Si veda . Una guida alla programmazione del kernel di Linux; tratta 2.0. 9.3. Parenti di Linux The Design and Implementation of the 4.4BSD Unix Operating System McKusick, Marshall Kirk, Bostic, Keith, Karels, Michael J., and Quarterman, John S.; Addison-Wesley; 1996; ISBN 0-201-54979-4; 608pp. Si veda 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. Porting Unix to the 386; Jolitz, William F., and Jolitz, Lynne G. Dr. Dobb's Journal; Jan 1991-July 1992. 10. Libri sull'architettura e programmazione dei processori Intel 80386 Programmer's Reference Manual 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. 80386 System Software Writer's Guide 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. Programming the 80386 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. Pentium Processor User's Manual: Volume 3, Architecture and Pro­ gramming Manual" Intel Corp.; 1993; ISBN 1-55512-195-0; Praticamente la versione per Pentium del 80386 Programmer's manual prima citato. 11. Libri sull'hardware per PC Nota: questi libri sono vecchi di quattro o cinque anni e probabilmente obsoleti. Sinceramente non ho mai messo le mani sull'hardware... 80386 Hardware Reference Manual 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. The Indispensable PC Hardware Book Messmer, Hans-Peter; Addison-Wesley; 1993; ISBN 0-201-62424-9; 1000 pp. JH: «Tratta le cose più recenti come EIDE e PCI.» 12. Questioni legali 12.1. Licenza d'Uso (in inglese) This document is copyright 1999 by Eric S. Raymond. You may use, disseminate, and reproduce it freely, provided you: · Do not omit or alter this copyright notice. · Do not omit or alter or omit the version number and date. · Do not omit or alter the document's pointer to the current WWW version. · Clearly mark any condensed, altered or versions as such. 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. 12.2. Storia 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.