Aggiunta figura sui semafori, correzione di un typo da una segnalazione
[gapil.git] / pref.tex
1 \chapter{Prefazione}
2 \label{cha:preface}
3
4 Nelle motivazioni in cui si introduce la GNU Free Documentation License (FDL)
5 (reperibili su \href{http://www.gnu.org/philosophy/free-doc.html}
6 {http://www.gnu.org/philosophy/free-doc.html}) si dà una grande rilevanza
7 all'importanza di disporre di buoni manuali, in quanto la fruibilità e la
8 possibilità di usare appieno il software libero vengono notevolmente ridotte
9 senza la presenza di un valido manuale che sia altrettanto liberamente
10 disponibile.
11
12 E, come per il software libero, anche in questo caso è di fondamentale
13 importanza la libertà di accedere ai sorgenti (e non solo al risultato finale,
14 sia questo una stampa o un file formattato) e la libertà di modificarli per
15 apportarvi migliorie, aggiornamenti, etc.
16
17 Per questo la Free Software Foundation ha approntato una licenza apposita per
18 la documentazione, che tiene conto delle differenze che restano fra un testo e
19 un programma.
20
21 Esiste però un altro campo, diverso dalla documentazione e dai manuali, in cui
22 avere a disposizione testi liberi, aperti e modificabili è essenziale ed
23 estremamente utile: quello della didattica e dell'educazione.  E benché anche
24 questo campo sia citato dalla FDL non è altrettanto comune trovarlo messo in
25 pratica.
26
27 In particolare sarebbe di grande interesse poter disporre di testi didattici
28 in grado di crescere, essere adattati alle diverse esigenze, modificati e
29 ampliati, o anche ridotti per usi specifici, nello stesso modo in cui si fa
30 per il software libero.
31
32 Questo progetto mira alla stesura di un libro il più completo e chiaro
33 possibile sulla programmazione in un sistema basato su un kernel Linux.
34 Essendo i concetti in gran parte gli stessi, il testo dovrebbe restare valido
35 anche per la programmazione in ambito Unix generico, ma resta una attenzione
36 specifica alle caratteristiche peculiari del kernel Linux e delle versioni
37 delle librerie del C in uso con esso, ed in particolare per le glibc del
38 progetto GNU (che ormai sono usate nella stragrande maggioranza dei casi).
39
40 Nonostante l'uso nel titolo del solo ``Linux'', (che si è fatto sia per
41 brevità sia perché il libro ha a che fare principalmente con le interfacce del
42 kernel e dei principali standard supportati delle librerie del C), voglio
43 sottolineare che trovo assolutamente scorretto chiamare in questo modo un
44 sistema completo. Il kernel infatti, senza tutte le librerie e le applicazioni
45 di base fornite dal progretto GNU, sarebbe sostanzialmente inutile: per questo
46 il nome del sistema nella sua interezza non può che essere GNU/Linux.
47
48 L'obiettivo finale di questo progetto è quello di riuscire a ottenere un testo
49 utilizzabile per apprendere i concetti fondamentali della programmazione di
50 sistema della stessa qualità dei libri del compianto R. W.  Stevens (è un
51 progetto molto ambizioso ...).
52
53
54 Infatti benché le pagine di manuale del sistema (quelle che si accedono con il
55 comando \cmd{man}) e il manuale delle librerie del C GNU siano una fonte
56 inesauribile di informazioni (da cui si è costantemente attinto nella stesura
57 di tutto il testo) la loro struttura li rende totalmente inadatti ad una
58 trattazione che vada oltre la descrizione delle caratteristiche particolari
59 dello specifico argomento in esame (ed in particolare lo \textit{GNU C Library
60   Reference Manual} non brilla per chiarezza espositiva).
61
62 Per questo motivo si è cercato di fare tesoro di quanto appreso dai testi di
63 R. Stevens (in particolare \cite{APUE} e \cite{UNP1}) per rendere la
64 trattazione dei vari argomenti in una sequenza logica il più esplicativa
65 possibile, corredata, quando possibile, da programmi di esempio.
66
67 Il progetto prevede il rilascio del testo sotto licenza FDL, ed una modalità
68 di realizzazione aperta che permetta di accogliere i contributi di chiunque
69 sia interessato. Tutti i programmi di esempio sono invece rilasciati sotto GNU
70 GPL.
71
72 Dato che sia il kernel che tutte le librerie fondamentali di GNU/Linux sono
73 scritte in C, questo sarà il linguaggio di riferimento del testo. In
74 particolare il compilatore usato per provare tutti i programmi e gli esempi
75 descritti nel testo è lo GNU GCC. Il testo presuppone una conoscenza media del
76 linguaggio, e di quanto necessario per scrivere, compilare ed eseguire un
77 programma.
78
79 Infine, dato che lo scopo del progetto è la produzione di un libro, si è
80 scelto di usare \LaTeX\ come "ambiente di sviluppo" del medesimo, sia per
81 l'impareggiabile qualità tipografica ottenibile, che per la congruenza dello
82 strumento, tanto sul piano pratico, quanto su quello filosofico.
83
84 Il testo sarà, almeno inizialmente, in italiano.
85
86
87
88 %%% Local Variables: 
89 %%% mode: latex
90 %%% TeX-master: "gapil"
91 %%% End: