Istoria limbajului C

An C standard
1972 Nașterea unei limbi
1978 K&R C
1989 ANSI C (C89)
1990 ISO C (la fel ca C89)
1999 C99
2011 C11
2017 C17 (C11 corectat)
2018 C18 (la fel ca C17)

Limbajul de programare C a fost dezvoltat între 1969 și 1973 la Bell Labs . Potrivit lui Ritchie , cea mai activă perioadă de creativitate a avut loc în 1972 . Limba a fost numită „C” (C este a treia literă a alfabetului englez ) deoarece multe dintre caracteristicile sale provin din vechea limbă „ B ” (B este a doua literă a alfabetului englez). Există mai multe versiuni diferite ale originii numelui limbii Bi. Ken Thompson indică limbajul de programare BCPL , dar există și limbajul Boncreat tot de el. Ritchie sugerează că numele limbii poate fi derivat din numele soției lui Thompson, Bonnie [1] .

Până în 1973, limbajul C a devenit suficient de puternic încât cea mai mare parte a nucleului UNIX , scris inițial în asamblatorul PDP-11 /20, a fost rescris în C. A fost unul dintre cele mai vechi nuclee de sistem de operare scrise într-o altă limbă decât asamblarea; mai devreme erau doar Multics (scris în PL/1 ) și TRIPOS (scris în BCPL).

Motive pentru dezvoltare

Există mai multe legende cu privire la dezvoltarea lui C și relația sa cu sistemul de operare UNIX , inclusiv următoarele:

Potrivit unei legende, dezvoltarea lui C a fost rezultatul faptului că viitorii săi autori au iubit un joc pe calculator precum popularul joc Asteroids (Asteroids)[ sursa? ] . Îl jucau de mult timp pe serverul principal al companiei , care nu era suficient de puternic și trebuia să servească aproximativ o sută de utilizatori. Thompson și Ritchie au simțit că le lipsește controlul asupra navei spațiale pentru a evita lovirea unora dintre pietre. Așa că au decis să port jocul pe un PDP-7 gratuit în birou. Cu toate acestea, acest computer nu avea un sistem de operare , ceea ce ia forțat să scrie unul. În cele din urmă, au decis să port acest sistem de operare la biroul PDP-11 , ceea ce a fost foarte dificil, deoarece codul său a fost scris în întregime în asamblator . S-a făcut o sugestie de a folosi un fel de limbaj portabil la nivel înalt, astfel încât sistemul de operare să poată fi transferat cu ușurință de la un computer la altul. Limbajul B, pe care au vrut inițial să îl folosească pentru aceasta, a fost lipsit de funcționalitatea care ar putea folosi noile caracteristici ale PDP-11. Prin urmare, s-au hotărât pe dezvoltarea limbajului C.

Există o altă legendă. Primul computer pentru care UNIX a fost scris inițial a fost destinat să fie un sistem automat de completare a documentelor. Prima versiune de UNIX a fost scrisă în limbaj de asamblare. Ulterior, pentru a rescrie acest sistem de operare, a fost dezvoltat limbajul C.[ sursa? ] .

K&R C

În 1978, Brian Kernighan și Dennis Ritchie au publicat prima ediție a Limbajul de programare C. Această carte, cunoscută de programatori ca „K&R”, a servit mulți ani ca specificație informală a limbajului. Versiunea limbajului C descrisă în acesta este adesea denumită „K&R C”. A doua ediție a acestei cărți tratează standardul ANSI C mai recent , descris mai jos.

K&R a introdus următoarele caracteristici de limbaj:

K&R C este adesea considerat cea mai importantă parte a limbajului pe care trebuie să o suporte un compilator C. Timp de mulți ani, chiar și după lansarea ANSI C, a fost considerat nivelul minim pe care programatorii ar trebui să-l respecte dacă doresc să atingă portabilitatea maximă din programele lor, deoarece nu toți compilatoarele acceptau atunci ANSI C, iar codul K&R C bun era, de asemenea, adevărat pentru ANSI C.

De la publicarea K&R C, mai multe caracteristici au fost adăugate limbajului, susținute de compilatoare de la AT&T și alți producători:

Standarde lingvistice

ISO C

La sfârșitul anilor 1970, C a început să înlocuiască BASIC ca limbaj principal pentru programarea microcalculatoarelor . A fost adaptat pentru utilizare pe computerul IBM în anii 1980 , ceea ce a dus la o creștere dramatică a popularității sale. În același timp, Björn Stroustrup și alții de la Bell Labs au început să lucreze la adăugarea de capabilități de programare orientată pe obiecte la C. Limbajul pe care l-au creat în cele din urmă, C++ , a avut un impact major asupra dezvoltării software, dar nu a egalat niciodată prea mult popularitatea [2] C, în special pe sistemele de tip UNIX.

În 1983, Institutul Național American de Standarde (ANSI) a format un comitet pentru a dezvolta o specificație standard pentru C. La sfârșitul acestui proces lung și dificil, în 1989 a fost aprobat în cele din urmă ca „Limbajul de programare C” ANSI X3.159-1989 . Această versiune a limbajului se numește ANSI C sau C89. În 1990, standardul ANSI C a fost adoptat cu modificări minore de către Organizația Internațională pentru Standardizare (ISO) ca ISO/IEC 9899:1990 .

Unul dintre obiectivele acestui standard a fost dezvoltarea unui superset de K&R C, încorporând multe dintre caracteristicile limbajului care au fost create ulterior. Cu toate acestea, comitetul de standarde a inclus și câteva funcții noi, cum ar fi prototipuri de funcție (împrumutate din C++) și un preprocesor mai sofisticat .

ANSI C este acum suportat de aproape toate compilatoarele existente. Aproape tot codul C scris în ultima vreme este conform cu ANSI C. Orice program scris numai în standard C este garantat să ruleze corect pe orice platformă care are o implementare C corespunzătoare. Cu toate acestea, majoritatea programelor sunt scrise în așa fel încât se vor compila și rula doar pe o anumită platformă deoarece:

  1. folosesc biblioteci non-standard , de exemplu pentru afișajele grafice;
  2. folosesc instrumente specifice platformei;
  3. sunt proiectate pentru o anumită valoare a dimensiunii unor tipuri de date sau pentru un anumit mod de stocare a acestor date în memorie pentru o anumită platformă.

C99

După ce a fost standardizată în ANSI, specificația limbajului C a rămas relativ neschimbată mult timp, în timp ce C++ a continuat să evolueze (în 1995, standardul C a fost introdus prin Primul Amendament Normativ, dar aproape nimeni nu l-a recunoscut). Cu toate acestea, standardul a fost revizuit la sfârșitul anilor 1990 , ducând la publicarea ISO 9899:1999 în 1999 . Acest standard este denumit în mod obișnuit „C99”. În martie 2000, a fost adoptat și adaptat de ANSI.

Câteva caracteristici noi ale C99:

C11

8 decembrie 2011 a publicat un nou standard pentru limbajul C (ISO/IEC 9899:2011) [3] . Principalele modificări:

C18

O versiune preliminară a standardului a fost prezentată ca C17 (ISO/IEC 9899:2017) în 2017 [4] . În iunie 2018, standardul a fost publicat ca C18 (ISO/IEC 9899:2018) [5] [6] . Noul standard elimină defectele observate în versiunea anterioară fără a adăuga noi caracteristici. Numele C17 și C18 sunt de obicei denumite sinonime [6] .

Note

  1. Ritchie D. M. Dezvoltarea limbajului C. Secțiunile „Introducere” și „Istorie: decorul”.
  2. Indexul comunității de programare pentru aprilie 2012 . Preluat la 2 februarie 2019. Arhivat din original la 2 iulie 2013.
  3. ISO/IEC 9899:2011 - Tehnologia informației - Limbaje de programare - C . Preluat la 2 februarie 2019. Arhivat din original la 27 decembrie 2011.
  4. ISO/IEC. ISO/IEC9899:2017 . Limbaje de programare - C (link indisponibil) (2017) . Preluat la 2 februarie 2019. Arhivat din original la 24 octombrie 2018. 
  5. ISO/IEC 9899:2018 - Tehnologia informației - Limbaje de programare - C . www.iso.org . Preluat la 2 februarie 2019. Arhivat din original la 10 august 2018.
  6. ↑ 1 2 Utilizarea GNU Compiler Collection (GCC): C  Opțiuni de dialect . gcc.gnu.org. Preluat la 3 decembrie 2018. Arhivat din original la 26 martie 2014.

Literatură