Varie correzioni, completata revisione capitolo sull'I/O su file
[gapil.git] / pref.tex
1 %% pref.tex
2 %%
3 %% Copyright (C) 2000-2019 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 "Un preambolo",
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
12 \chapter{Prefazione}
13 \label{cha:preface}
14
15 Questo progetto mira alla stesura di un testo il più completo e chiaro
16 possibile sulla programmazione di sistema su un kernel Linux.  Essendo i
17 concetti in gran parte gli stessi, il testo dovrebbe restare valido anche per
18 la programmazione in ambito di sistemi Unix generici, ma resta una attenzione
19 specifica alle caratteristiche peculiari del kernel Linux e delle versioni
20 delle librerie del C in uso con esso; in particolare si darà ampio spazio alla
21 versione realizzata dal progetto GNU, le cosiddette \textit{GNU C Library} o
22 \textsl{glibc}, che ormai sono usate nella stragrande maggioranza dei casi,
23 senza tralasciare, là dove note, le differenze con altre implementazioni come
24 le \textsl{libc5} o le \textsl{uclib}.
25
26 L'obiettivo finale di questo progetto è quello di riuscire a ottenere un testo
27 utilizzabile per apprendere i concetti fondamentali della programmazione di
28 sistema della stessa qualità dei libri del compianto R. W. Stevens (è un
29 progetto molto ambizioso ...).
30
31 Infatti benché le pagine di manuale del sistema (quelle che si accedono con il
32 comando \cmd{man}) e il manuale delle librerie del C GNU siano una fonte
33 inesauribile di informazioni (da cui si è costantemente attinto nella stesura
34 di tutto il testo) la loro struttura li rende totalmente inadatti ad una
35 trattazione che vada oltre la descrizione delle caratteristiche particolari
36 dello specifico argomento in esame (ed in particolare lo \textit{GNU C Library
37   Reference Manual} non brilla per chiarezza espositiva).
38
39 Per questo motivo si è cercato di fare tesoro di quanto appreso dai testi di
40 R. W. Stevens (in particolare \cite{APUE} e \cite{UNP1}) per rendere la
41 trattazione dei vari argomenti in una sequenza logica il più esplicativa
42 possibile, corredando il tutto, quando possibile, con programmi di esempio.
43
44 Dato che sia il kernel che tutte le librerie fondamentali di GNU/Linux sono
45 scritte in C, questo sarà il linguaggio di riferimento del testo. In
46 particolare il compilatore usato per provare tutti i programmi e gli esempi
47 descritti nel testo è lo GNU GCC. Il testo presuppone una conoscenza media del
48 linguaggio, e di quanto necessario per scrivere, compilare ed eseguire un
49 programma.
50
51 Infine, dato che lo scopo del progetto è la produzione di un libro, si è
52 scelto di usare \LaTeX\ come "ambiente di sviluppo" del medesimo, sia per
53 l'impareggiabile qualità tipografica ottenibile, che per la congruenza dello
54 strumento con il fine, tanto sul piano pratico, quanto su quello filosofico.
55
56 Il testo sarà, almeno inizialmente, in italiano. Per il momento lo si è
57 suddiviso in due parti, la prima sulla programmazione di sistema, in cui si
58 trattano le varie funzionalità disponibili per i programmi che devono essere
59 eseguiti su una singola macchina, la seconda sulla programmazione di rete, in
60 cui si trattano le funzionalità per eseguire programmi che mettono in
61 comunicazione macchine diverse.
62
63
64
65 %%% Local Variables: 
66 %%% mode: latex
67 %%% TeX-master: "gapil"
68 %%% End: 
69
70 % LocalWords:  kernel Library glibc Stevens Reference Manual GCC