2.8        C

Il linguaggio C è stato definito nel testo, ormai classico, di Kernigan e Ritchie: "The C Programming language" e sviluppato da Dennis Ritchie dei laboratori Bell inizialmente per l'elaboratore Digital PDP-11 su sistema operativo UNIX (Ritchie e Thompson, 1972-73, Kernighan e Ritchie 1978).  Nel dicembre 1989 ne è stato dato lo standard ANSI.

Fra le maggiori caratteristiche del linguaggio C ci sono la possibilità di definire tipi di dati, l'efficacia del codice macchina ottenuto e la capacità di sviluppare software di grandi dimensioni.

Il linguaggio adotta molti costrutti criptici, alcuni permettono di risparmiare la digitazione di un carattere, ma il loro utilizzo permette di scrivere del codice compatto, e sono diventati poi patrimonio comune in molti altri linguaggi:
      /* incrementi e decrementi */
   x++; /* x = x + 1; */
   ++x; /* x = x + 1; */
   z = y++; /* z = 2; y = 3 */
   z = ++y; /* z = 4; y = 4 */
   y--; /* y = y + 1; */
   --y; /* y = y + 1; */
   /* operatori aritmetici di assegnazione */
   a += 13; /* a = a + 13; */
   a *= 3.1415; /* a = a * 3.1415; */
   a -= b; /* a = a - b; */
   a /= 10.0; /* a = a / 10; */
   /* assegnazione condizionata */
   c = (a > b ? a : b); /* if (a > b)
                               c = a;
                           else
                               c = b; */
     

Molte estensioni del linguaggio, quali le istruzioni di input/output, il trattamento delle stringhe di caratteri, ed altro, sono fornite in librerie da includere nel sorgente del programma.
La vasta diffusione e popolarità del linguaggio C è dovuta in buona parte alla sua gratuita cessione alle università.
Esempi di codice pervadono il capitolo 1.5 relativo alla costruzione di linguaggi.
C++ è il tradizionale linguaggio con qualche costrutto addizionale orientato alla programmazione ad oggetti.
C# deriva da C, C++ e Basic
C* è un dialetto di C con strutture sintattiche e semantiche per l'elaborazione parallela.
Objective–C Brad J. Cox, 1984-85. Un C ad oggetti, in ambiente APPLE e NeXT.

2.8.1            I predecessori del C

2.8.1.1              BCPL

La prima implementazione è del 1967. Non vi è dichiarazione di tipi, l'input output è tramite librerie. Attualmente L'interprete genera un codice intermedio (Sial) indipendente dalla macchina.

2.8.1.2              B

B è per la massima parte dovuto a Ken Thompson intorno al 1969, e per qualche tempo mantenuto da Dennis Ritchie. È una derivazione da BCPL,  ridotta per poter operare su computer molto piccoli quali DEC PDP 7 e PDP 11, ma anche mainframe Honeywell con sistema operativo GCOS. Disponeva di qualche libreria di funzioni ed inizialmente supportava un solo tipo di dati, la word del computer. Sul PDP11 Ritchie aggiunse alcuni tipi di variabili e verso il 1972 B evolse nel "new B" e successivamente nel C.
B era ancora utilizzato negli anni 90 sui mainframe Honeywell e su alcuni sistemi embedded.