Apariţia limbajului C a fost precedată şi anunţată de diverse încercări de a
construi un limbaj care să corespundă cerinţelor apărute o dată cu dezvoltarea calculatoarelor: portabilitate, uşurinţă în folosire, libertate de exprimare, text sursă compact etc. Motorul cercetărilor a fost dezvoltarea unui nou sistem de operare: UNIX. Evoluţia limbajului şi a sistemului de operare a avut loc în paralel, fiecare impulsionând dezvoltarea celuilalt. Se consideră că C a fost creat special pentru sistemele de operare din familia UNIX. De fapt C este un rezultat al experienţei acumulate în aceste cercetări, chiar dacă este considerat un limbaj de autor.
În 1969 a fost lansat limbajul BCPL (Basic Combined Programming
Language), conceput la Universitatea Cambridge. Era un limbaj dependent de structura maşinii pe care era folosit şi nu avea conceptul de tip de dată – datele se reprezentau binar, pe cuvinte de memorie. În multe cercuri anul 1969 este considerat anul apariţiei limbajului C. În 1970 a apărut o formă mai avansată, limbajul B, utilizat sub sistemul de operare al calculatoarelor DEC PDP. Numele limbajului este o prescurtare a acronimului BCPL. În 1978 Dennis Ritchie şi Brian Kernighan şi-au finalizat cercetările publicând The C Programming Language (Limbajul de programare C), care este limbajul cunoscut astăzi. Limbajul a fost denumit astfel pentru că C este litera care urmează după B. Lucrarea lui Kernighan şi Ritchie este considerată momentul oficial al apariţiei limbajului C.
După apariţia limbajului C au existat încercări de îmbunătăţire, dar fără ca
vreuna să producă un impact asemănător. Dennis Ritchie a propus diverse variante, mulate pe noile versiuni de UNIX (între acestea K&R C, creat pentru sistemul UNIX de pe maşinile DEC PDP). În perioada următoare, pornind de la specificaţiile limbajului, s-au creat numeroase compilatoare C, fiecare aducând propriile diferenţe faţă de limbajul iniţial, ajungându-se la variante foarte mult diferite unele faţă de altele. În acest fel s-a pus în pericol ideea iniţială de portabilitate. Ca urmare, în 1988 Comitetul pentru limbajul C al Institutului Naţional de Standardizare al SUA (ANSI) a impus Ştiinţa învăţării unui limbaj de programare. Teorie
un standard cunoscut drept ANSI C. Acesta este implementat în toate versiunile de
compilatoare ulterioare. O dată cu acest standard legătura implicită cu sistemul UNIX a dispărut, limbajul fiind disponibil pe orice platformă.
În paralel cu activitatea comitetului ANSI C, au existat şi alte dezvoltări.
Bjarne Stroustrup de la AT&T a propus extensia C++ (C îmbunătăţit, extinzând semnificaţia operatorului de incrementare ++ din C). Impactul extensiei este aproape la fel de mare ca al limbajului iniţial, astfel încât ea a devenit cea mai populară formă a limbajului, fiind prezentă în toate implementările curente. Pornind de la C++ s-au încercat şi alte extensii. Joel E. Richardson, Michael J. Carrey şi Daniel T. Schuh de la Universitatea Wisconsin Madison au propus limbajul E. Acesta este proiectat pentru crearea de programe de sistem, în general, şi de sisteme de gestiune a bazelor de date, în particular. Una din facilităţi este crearea şi utilizarea obiectelor persistente. Bell Laboratories a propus în paralel limbajul O, echivalent limbajului E. Pentru a veni în întâmpinarea soluţiilor de calcul distribuit, a fost creat limbajul Avalon/C++.
Aventura dezvoltării limbajelor de programare continuă.