|
Acest limbaj de programare cu cel mai scurt nume posibil, a fost
creat in 1972 de catre Dennis Ritchie si Brian Kernigham pentru
dezvoltaea sistemului de operare UNIX. Istoria sa merita
mentionata deoarece este relevanta pentru caracterizarea limbajului.
Asadar, se punea problema conceperii unui sistem de operare
universal, care sa poata functiona, teoretic, pe orice tip de
masina - sistemul UNIX. Pentru aceasta era nevoie de un limbaj
care sa exploateza toate posibilitatile unei masini, dar care nu
putea fi limbajul de asamblare, deoarece el este specific masinii
- o noua implementare presupunea rescrierea integrala a sistemului.
Din aceasta dilema s - a putut iesi construind un limbaj de nivel
inalt (initial limbajul B, ulterior C ) care introducea si concepte
de nivel scazut, hardware ( registru, adresa, locatie de memorie
absoluta etc.).
Mai bine de 90 % din sursele primului sistem de operare UNIX
( implementat pe o masina PDP - 7 ) au fost scrise utilizand
limbajul C, iar pentru restul modulelor, s - a apelat la limbajul
de asamblare. Sistemul astfel obtinut a fost distribuit impreuna cu
codul sursa si cu descrierea noului limbaj folosit, cu intentia
vadita de a - l transforma intr - un sistem de operare universal.
Succesul nu a sosit imediat, dar era asigurat de noua metoda de
lucru. Programatorii au fost incitati sa dezvolte acest sistem,
extinzandu - l cu noi module si sa il implementeze pe alte masini
prin rescrierea acelei minime parti ( sub 10 % ) in limbaj de
asamblare... "C" devenea un limbaj de referinta.
Dupa acest scurt preambul, iata care sunt principalele
caracteristici ale limbajului:
> Limbaj structural de nivel inalt;
> Poseda concepte de nivel scazut, ceea ce permite exploatarea
portabila a caracteristicilor intime ale unei masini.
Spre exemplu, o variabila foarte des utilizata poate fi
declarata "register" (registru ) si atunci ea va fi memorata intr
- un registru al microprocesorului, nu intr - o locatie din
memoria interna, marind ( uneori considerabil ) viteza de executie.
> Rutine de conversie a datelor foarte evoluate ( conversii
implicite, intrari, iesiri, conversii in memorie );
> Tipuri de date ce pot fi definite de catre utilizator;
> Gestionarea elaborata a datelor de tip dinamic;
> Definirea unor noi functii;
> Adresari indirecte ale datelor, variabilelor ( pointeri );
> Recursivitate
> Set complet de functii matematice etc.;
> Functii pentru realizarea de grafica elementara 2D;
> Functii de apel la servicii DOS;
> Posibilitatea folosirii metodei overlay pentru un program;
> Si nu in ul |