%% pref.tex
%%
%% Copyright (C) 2000-2002 Simone Piccardi.  Permission is granted to
%% copy, distribute and/or modify this document under the terms of the GNU Free
%% Documentation License, Version 1.1 or any later version published by the
%% Free Software Foundation; with the Invariant Sections being "Prefazione",
%% with no Front-Cover Texts, and with no Back-Cover Texts.  A copy of the
%% license is included in the section entitled "GNU Free Documentation
%% License".
%%
\chapter{Prefazione}
\label{cha:preface}

Nelle motivazioni in cui si introduce la GNU Free Documentation License (FDL)
(reperibili su \href{http://www.gnu.org/philosophy/free-doc.html}
{http://www.gnu.org/philosophy/free-doc.html}) si dà una grande rilevanza
all'importanza di disporre di buoni manuali, in quanto la fruibilità e la
possibilità di usare appieno il software libero vengono notevolmente ridotte
senza la presenza di un valido manuale che sia altrettanto liberamente
disponibile.

E, come per il software libero, anche in questo caso è di fondamentale
importanza la libertà di accedere ai sorgenti (e non solo al risultato finale,
sia questo una stampa o un file formattato) e la libertà di modificarli per
apportarvi migliorie, aggiornamenti, etc.

Per questo la Free Software Foundation ha approntato una licenza apposita per
la documentazione, che tiene conto delle differenze che restano fra un testo e
un programma.

Esiste però un altro campo, diverso dalla documentazione e dai manuali, in cui
avere a disposizione testi liberi, aperti e modificabili è essenziale ed
estremamente utile: quello della didattica e dell'educazione.  E benché anche
questo campo sia citato dalla FDL non è altrettanto comune trovarlo messo in
pratica.

In particolare sarebbe di grande interesse poter disporre di testi didattici
in grado di crescere, essere adattati alle diverse esigenze, modificati e
ampliati, o anche ridotti per usi specifici, nello stesso modo in cui si fa
per il software libero.

Questo progetto mira alla stesura di un libro il più completo e chiaro
possibile sulla programmazione in un sistema basato su un kernel Linux.
Essendo i concetti in gran parte gli stessi, il testo dovrebbe restare valido
anche per la programmazione in ambito Unix generico, ma resta una attenzione
specifica alle caratteristiche peculiari del kernel Linux e delle versioni
delle librerie del C in uso con esso, ed in particolare per le glibc del
progetto GNU (che ormai sono usate nella stragrande maggioranza dei casi).

Nonostante l'uso nel titolo del solo ``Linux'', (che si è fatto sia per
brevità sia perché il libro ha a che fare principalmente con le interfacce del
kernel e dei principali standard supportati delle librerie del C), voglio
sottolineare che trovo assolutamente scorretto chiamare in questo modo un
sistema completo. Il kernel infatti, senza tutte le librerie e le applicazioni
di base fornite dal progretto GNU, sarebbe sostanzialmente inutile: per questo
il nome del sistema nella sua interezza non può che essere GNU/Linux.

L'obiettivo finale di questo progetto è quello di riuscire a ottenere un testo
utilizzabile per apprendere i concetti fondamentali della programmazione di
sistema della stessa qualità dei libri del compianto R. W.  Stevens (è un
progetto molto ambizioso ...).


Infatti benché le pagine di manuale del sistema (quelle che si accedono con il
comando \cmd{man}) e il manuale delle librerie del C GNU siano una fonte
inesauribile di informazioni (da cui si è costantemente attinto nella stesura
di tutto il testo) la loro struttura li rende totalmente inadatti ad una
trattazione che vada oltre la descrizione delle caratteristiche particolari
dello specifico argomento in esame (ed in particolare lo \textit{GNU C Library
  Reference Manual} non brilla per chiarezza espositiva).

Per questo motivo si è cercato di fare tesoro di quanto appreso dai testi di
R. Stevens (in particolare \cite{APUE} e \cite{UNP1}) per rendere la
trattazione dei vari argomenti in una sequenza logica il più esplicativa
possibile, corredata, quando possibile, da programmi di esempio.

Il progetto prevede il rilascio del testo sotto licenza FDL, ed una modalità
di realizzazione aperta che permetta di accogliere i contributi di chiunque
sia interessato. Tutti i programmi di esempio sono invece rilasciati sotto GNU
GPL.

Dato che sia il kernel che tutte le librerie fondamentali di GNU/Linux sono
scritte in C, questo sarà il linguaggio di riferimento del testo. In
particolare il compilatore usato per provare tutti i programmi e gli esempi
descritti nel testo è lo GNU GCC. Il testo presuppone una conoscenza media del
linguaggio, e di quanto necessario per scrivere, compilare ed eseguire un
programma.

Infine, dato che lo scopo del progetto è la produzione di un libro, si è
scelto di usare \LaTeX\ come "ambiente di sviluppo" del medesimo, sia per
l'impareggiabile qualità tipografica ottenibile, che per la congruenza dello
strumento, tanto sul piano pratico, quanto su quello filosofico.

Il testo sarà, almeno inizialmente, in italiano.



%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "gapil"
%%% End: 
