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 http://sunsite.unc.edu/LDP/HOWTO/Reading-List-HOWTO.html.

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 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.

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 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.

A Quarter Century of Unix

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.

The Mythical Man Month (Anniversary Edition)

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!»

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 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.

Linux System Administrator's Guide

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.

Essential System Administration (Second Edition)

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.

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 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.

Running Linux (Third Edition)

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.

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 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.»

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 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.

Programming Python

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.

HTML: The Definitive Guide (3nd Edition)

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.

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 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.»

LaTeX: A Document Preparation System (Second Edition)

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.»

The TeXbook, Volume A of Computers and Typesetting; Knuth, Donald A.

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.

The METAFONT book, Volume C of Computers and Typesetting

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.

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 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.

Programming Pearls (2nd Edition)

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.

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 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.

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 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.

TCP/IP Network Adminstration

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.

DNS and BIND (Second Edition)

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.

Sendmail (Second Edition)

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.

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 http://www.prenhall.com/books/ptr_0132017997.html

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 http://www.prenhall.com/books/esm_0136386776.html.

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 http://www.redhat.com/mirrors/LDP/LDP/khg/HyperNews/get/khg.html

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 http://www.awl-he.com/titles/11653.html.

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 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.

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 Programming 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:

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.