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