# Il linguaggio C

Il linguaggio C (in inglese The C Programming Language), intitolato Linguaggio C nelle prime edizioni italiane e chiamato informalmente anche K&R, dalle iniziali dei cognomi degli autori, è un celebre libro di informatica sulla programmazione in linguaggio C, scritto da Brian Kernighan e Dennis Ritchie, il secondo dei quali è colui che ha ideato e sviluppato in origine quel linguaggio (oltre ad aver collaborato alla creazione del sistema operativo Unix, in uno sviluppo software che è strettamente legato alla nascita del linguaggio C). Il libro è stato un punto di riferimento per lo sviluppo e la divulgazione del C ed è ancora ampiamente letto e usato. Esso gode di una notevole considerazione ed è ritenuto una guida di riferimento autorevole, o addirittura indispensabile, per il linguaggio C in quanto scritto dagli autori originali del linguaggio, che negli anni è diventato uno standard de facto.

## Storia

La prima edizione del libro, pubblicata nel 1978, fu la prima guida disponibile per il linguaggio di programmazione C. Il testo era stato redatto contemporaneamente allo sviluppo del linguaggio stesso presso i Bell Laboratories della AT&T. A volte, ci si riferisce alla versione del C descritta in questo libro come K&R C, spesso per distinguerla con le ultime, standardizzate, a cui ci si riferisce anche come ANSI C.
La seconda edizione del libro fu pubblicata nel 1988: essa aggiornava la guida al linguaggio seguendo le indicazioni della standardizzazione ANSI intervenuta nel frattempo, con l'inclusione, in particolare, di materiale di riferimento alle librerie standard del C. Tale seconda edizione è stata tradotta in oltre 20 lingue.
L'ANSI C, inizialmente standardizzato nel 1988, ha subito diverse revisioni, la più recente delle quali è la ISO/IEC 9899:1999 (anche conosciuta come "C99"), adottata come standard ANSI nel marzo del 2000. Ad ogni modo, non è stata pubblicata alcuna revisione del manuale per coprire i più recenti standard.

## Influenza

Il manuale di Kernighan e Ritchie è stato spesso citato come modello per i testi tecnici, per via dell'esposizione chiara e concisa del contenuto. Nel piccolo delle sue 272 pagine (dato riferito alla seconda edizione), la trattazione degli aspetti del linguaggio rimane dettagliata e con pochi fronzoli. Gli esempi, di solito, consistono in programmi completi, simili a quelli in cui è possibile imbattersi nell'utilizzo quotidiano del linguaggio, con un accento speciale sulla programmazione di sistema. I dettagli tecnici del C sono corredati dalle osservazioni degli autori sulle buone pratiche di programmazione, illustrate con esempi concreti e realistici. Nella prefazione alla seconda edizione del libro si legge:
«Abbiamo tentato di mantenere la brevità della prima edizione. Il C non è un linguaggio di grandi dimensioni, dunque sarebbe stato fuori luogo concepire un'opera ingombrante. È stata perfezionata la trattazione di caratteristiche preminenti, quali i puntatori, che sono di vitale importanza per la programmazione in C. Oltre a migliorare gli esempi originali, ne abbiamo aggiunti altri in diversi capitoli. Per esempio, la trattazione delle dichiarazioni complesse è stata ampliata con l'aggiunta di programmi che convertono le dichiarazioni in descrizioni verbali e viceversa. Come nella prima edizione, tutti gli esempi sono stati verificati direttamente dal testo: i brani di codice sono in forma leggibile dalla macchina.»
Quando ancora non era stata creata la specifica ANSI C, la prima edizione del testo fu uno standard de facto per chi scriveva compilatori C,. A seguito della standardizzazione, gli autori rivolsero la seconda edizione ai programmatori, piuttosto che ai primi; per usare le parole degli autori (ancora nella prefazione alla seconda edizione):
«L'appendice A, il manuale di riferimento, non è lo standard, ma rappresenta il tentativo di esporre i fondamenti dello standard in uno spazio minore. Il manuale è inteso come strumento di agevole comprensione per i programmatori, ma non come definizione del linguaggio per progettisti di compilatori; tale ruolo compete propriamente allo standard stesso. L'appendice B è un riepilogo delle funzionalità della libreria standard. L'appendice C riassume in sintesi le novità rispetto alla versione originale.»
L'influenza de Il linguaggio C sui programmatori, una generazione che si è "fatta le ossa" sul C nelle università e nell'industria, ha portato molti ad accettare lo stile di programmazione e le convenzioni usate dagli autori come il comportamento preferibile a cui attenersi, se non la regola. Per esempio, lo stile di scrittura e di indentazione del codice dei programmi, come presentati in entrambe le edizioni, viene spesso definito "stile K&R" o One True Brace Style (nel Jargon file), e divenne lo stile di programmazione usato per convenzione nel codice sorgente dei kernel di Unix e Linux.