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; */
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.
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.