Limbajele de programare au avut o evoluţie foarte spectaculoasă. Scopul primordial a fost acela de a dezvolta cât mai repede aplicaţii fără erori, a organiza şi reutiliza codul, a crea produse program cât mai mentenabile şi portabile.
În ordine cronologică se pot enumera:
cod maşină – programare deosebit de dificilă şi ineficientă;
asamblare – o evoluţie naturală a codului maşină, prin renumirea într-un format mai accesibil a acestuia. Marele dezavantaj: codul este total neportabil de pe un sistem pe altul.
C – s-a născut pentru a face mai simplă portarea sistemelor de operare şi a aplicaţiilor de pe un sistem pe altul; limbaj de nivel jos, destinat în general scrierii sistemelor de operare portabile, necesitând crearea pentru fiecare platformă hard a unui compilator simplu de C, după care, pentru implementarea sistemului de operare şi a altor aplicaţii se compilează acesta cu compilatorul respectiv. Născut ca un limbaj primar cu o sintaxă deosebit de simplă, fără verificări de tip, l-a făcut total neinteresant pentru dezvoltatorii de proiectare şi fabricaţie în anii 70;