Limbajul C
Acest limbaj de programare, cu cel mai mic nume posibil, a fost creat in 1971 de catre Dennis Ritchie si Brian Kernigham pentru dezvoltarea 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 exploateze 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 cu programele in format 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 implanteze 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 structurat de nivel inalt;
- poseda concepte de nivel scazut, ceea ce permite exploatarea portabila a caracteristicilor intime 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 definibile de catre utilizator;
- gestionarea elaborata a datelor de tip dinamic;
- definirea de noi functii;
- adresari indirecte ale datelor, variabilelor( pointer-i);
- recursivitate;
- set complet de functii matematice etc;
- functii pentru realizarea de grafica elementara 2D;
- functii de apel servicii DOS;
- posibilitatea definirii de overlay-uri pentru un program;
- si nu in ultimul rand: concizie deosebita a limbajului( set de operatori si instructiuni foarte concise).
Pentru versiunile standard ale implementarilor limbajului C exista medii de programare de tip turbo ce apartin dupa cum ne-am obisnuit, firmelor: Microsoft- produsul Quick C- si firmei Borland- produsele Turbo C.