Cap 1 INTRODUCERE ÎN LIMBAJUL C
1.1 Scurt istoric
1.2 Forma unui program C
1.3 Compilarea unui program C
1.1 Scurt istoric
Strămoşii limbajului C sunt limbajele de programare CPL, BCPL, B şi Algol 68. CPL a fost dezvoltat la Universităţile Cambridge şi London în anii 1960-1963. BCPL a fost proiectat de Martin Richards în 1967 şi face parte din categoria “low-level languages”, sau “systems programming languages”. În anii ’60, la Bell Laboratories în USA, Ken Thomson a început proiectarea sistemului de operare Unix. Primul limbaj de nivel înalt implementat sub acest sistem de operare a fost limbajul B, un limbaj bazat pe BCPL care a fost proiectat de asemenea de către Ken Thompson în 1970. Asemănarea cu BCPL a fost mai degrabă semantică; sintaxa este total diferită. Proiectarea limbajului B a fost influienţată de limitele maşinii pe care a fost implementat: un PDP-7 cu capacitatea 4K ( cuvinte de 18 biţi).
Limbajele BCPL şi B sunt limbaje de nivel scăzut faţă de limbajul Pascal şi nici unul din ele nu este tipizat: toate datele sunt considerate cuvinte maşină încât, exemple simple de programe duc la complicaţii nebănuite. În una din implementările BCPL-ului, operanzii flotanţi din expresii trebuiau precedaţi de punct; restul operanzilor erau consideraţi întregi.
Problemele create în jurul limbajelor BCPL şi B au dus la dezvoltarea unui nou limbaj, bazat pe B, care la început s-a numit NB dar numele său a fost stabilit C. Numele “C”, considerat la început a proveni de la Cambridge, este oficial din “Combined” dar neoficial se consideră a fi iniţiala pronumelui lui Cristopher Strachey, cel care a condus echipa ce a proiectat CPL-ul. Limbajul a fost proiectat şi implementat de către Dennis Ritchie la Bell Laboratories în 1972. În mare parte ( construcţiile for şi switch, tratarea pointerilor etc.) limbajul a fost influienţat şi de Algol 68. Genealogia limbajului C este prezentată în Figura 1.1.
Ritchie a lucrat pe un calculator DEC PDP-11 sub sistemul de operare Unix. Din acest motiv varianta clasică a limbajului C a fost asociată sistemului de operare Unix - versiunea 5 şi multă vreme a constituit un standard (neoficial de altfel) al limbajului şKeR 78ţ.
Odată cu creştere popularităţii calculatoarelor personale, au apărut numeroase alte implementări ale limbajului C şi astfel a crescut şi popularitatea acestuia. Un fapt cu totul inedit a fost acela că, mare parte din implementările C -ului s-au dovedit de un mare grad de compatibilitate: un program scris pentru una din variante putea fi compilat cu succes folosind o altă variantă. Se înţelege că au existat şi neconcordanţe în multitudinea de “dialecte” ale limbajului. Pentru eliminarea acestora în 1983 a fost creată o comisie care să stabilească un standard al acestui limbaj. Standardul ANSI ( American National Standard Institute) a fost redactat abia în decembrie 1989 şi a fost pus la dispoziţia celor interesaţi la începutul lui 1990. Firma Borland a folosit acest standard în faza de proiect şi a realizat implementările Turbo C care se bucură de un succes remarcabil. De altfel, în prezent , toate compilatoarele C sunt compatibile cu standardul ANSI C; unele din acestea au adăugate o serie de facilităţi sau extensii proprii care nu împiedică compilarea unui program standard.
•FORTRAN I (1957)
•FORTRAN II (1958)
•ALGOL 60 (1960)
•CPL (1963)
•ALGOL 68 (1968)
•BCPL (1967)
•B (1970)
•C (1972)
•C++ (1984)
Figura 1.1.
Limbajul C este privit ca un limbaj de nivel mediu întrucât combină cele mai reuşite elemente ale limbajelor de nivel înalt ( Pas-cal, Fortran, Algol, Modula, Ada) cu gradul de control şi flexibilitatea oferite de către limbajul de asamblare. C permite manevrarea biţilor, a octeţilor şi a adreselor de memorie, adică a elementelor de bază în funcţionarea unui calculator. În ciuda acestui fapt , programele scrise în C au un grad mare de portabilitate: uşurinţa de a adapta programele scrise pentru o anumită categorie de calculatoare sau sisteme de operare la alte calculatoare sau sisteme de operare.
Limbajul C are structuri de control adecvate precum şi facilităţi de structurare a datelor care îl fac să fie folosit într-o diversitate de domenii. Are de asemenea o mulţime bogată de operatori care-i dau un înalt grad de expresivitate. Unul din motivele pentru care limbajul C este în acelaşi timp agreat de mare parte din programatori şi dezagreat de altă mare parte din programatori, este lipsa totală a verificării tipului (type checking). De exemplu, o variabilă de un tip scalar oarecare poate apare în aceeaşi expresie cu o variabilă de un alt tip scalar. Cei care agrează limbajul C îi apreciază flexibilitatea sa, cei care nu-l agrează îl consideră un limbaj lipsit de siguranţă.
Ceea ce este sigur, este că datorită faptului că face parte din sistemul de operare Unix, limbajul a căpătat o mare popularitate în lumea academică şi nu numai. Compilatoarele oferite împreună cu sistemul Unix sunt relativ ieftine (uneori chiar gratuite) şi pot fi folosite pe o diversitate de maşini.
O nouă versiune a limbajului C, numită C++, a apărut în 1984. Originea acestui limbaj şSTR 94ţ trebuie căutată în proiectul care a început în Aprilie 1979 la “Computing Research Center of Bell Laboratories” în Murray Hill, New Jersey, USA, proiect ce trebuia să realizeze distribuirea nucleului UNIX într-o reţea de computere conectate LAN. Pentru realizarea acestui proiect, Bjarne Stroustrup a realizat în Octombrie 1979 un preprocesor, numit Cpre, care a adăugat la limbajul C conceptul de clasă folosit pentru prima dată de limbajul Simula ( dezvoltat în anii 1962-1967 de norvegienii Kristen Nyagaard şi Ole-Johan Dahl). În martie 1980 preprocesorul îmbunătăţit era implementat pe 16 sisteme iar limbajul acceptat de acesta a fost numit “C cu Clase”. Motivele pentru care a fost ales limbajul C (în faţa altor limbaje ale vremii: Modula-2, Ada, Smalltalk, Mesa, Clu) pentru acest proiect sunt expuse chiar de creatorul noului limbaj:
Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.