Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Back to basics – Despre limbajele de programare

Parcurgand articolele din blog, mi-am dat seama ca nu exista o introducere despre limbajele de programare, tipul acestora, o scurta istorie a lor si a tehnicilor de programare larg utilizate. Consider ca astfel de articole ar fi foarte utile pentru incepatori, care isi pot construi o viziune de ansamblu a evolutiei si a diversitatii limbajelor de programare.

Un limbaj de programare reprezinta un mijloc de comunicare intre programator si calculator. Ca si in cazul unui limbaj natural, (romana, engleza, etc.) sunt importante trei aspecte:

sintaxa – reprezinta totalitatea regulilor pe baza carora se obtin elementele limbajului.

semantica – defineste semnificatia constructiilor sintactic corecte (a elementelor limbajului).

pragmatica – defineste modul de utilizare a elementelor limbajului.

Diferenta consta in faptul ca in cazul cand comunicam cu un calculator, trebuie sa respectam cu exactitate regulile de comunicare.

Un program reprezinta descrierea unui algoritm intr-un limbaj de programare.

Este important sa se inteleaga ca un limbaj de programare defineste natura programului si nu modul in care va fi executat acesta. Exista doua metode generale de executare a unui program: compilarea sau interpretarea.

Un interpretor citeste codul sursa al programului linie cu linie si va executa instructiunile continute in acea linie.

Un compilator citeste intreg programul si il converteste in cod obiect (cod masina, cod binar), care reprezinta o conversie a codurilor programului sursa intr-o forma pe care calculatorul o poate executa direct.

Compilarea are loc doar o data, apoi programul poate fi lansat ori de cate ori doreste programatorul, in timp ce la folosirea unui interpretor, acesta trebuie sa fie prezent ori de cate ori se doreste rularea programului.

Evolutia limbajelor de programare

Exista cinci “generatii” de limbaje de programare. Pe parcursul fiecarei generatii, sintaxa limbajului a devenit mai usor de inteles si citit (human-readable).

1GL – First generation languages – sunt limbajele de programare care sunt specifice calculatorului. Acesta nu cunoaste decat un singur mod de comunicare – limbajul procesorului cu care este dotat, denumit cod-masina. Acest prim tip de programare este dificil, iar programatorul trebuie sa detina cunostinte detaliate depspre procesorul respectiv.

2GL – Second generation languages – sunt cunoscute ca limbaje de asamblare, iar codul scris in aceste limbaje este convertit in cod masina (1GL). Acestea sunt considerate limbaje low-level si sunt specifice procesoarelor, micro-controller-elor si altor dispozitive. Sunt folosite in crearea driver-erelor, editare grafica/video si jocuri. Un program scris in limbaj de asamblare consta intr-o serie de instructiuni pentru procesor, directive, comentarii si date.

3GL – Third generation languages – in aceasta generatie instructiunile sub forma simbolurilor si numerelor din generatiile anterioare sunt inlocuite cu comenzi si cuvinte, oferind o sintaxa mai usor de inteles. Conceptele prezente in aceste limabaje preaiu mult din responsabilitatile programatorului. Limbajele din aceasta generatie sunt cunoscute ca limbaje “high-level”: Java, C, C++, C#.

4GL – Fourth generation languages – sunt apropiate de limbajul uman, fiind imbunatatite fata de generatia anterioara. Aceste limbaje sunt folosite in mod special pentru accesarea bazelor de date si includ SQL, ColdFusion. Au fost construite cu scopul de a reduce costurile dezvoltarii software, de a reduce eforturile programatorului.

5GL – Fifth generation languages – au fost concepute cu scopul de a rezolva probleme fara interventia programatorului. Sunt folosite in domeniul inteligentei artificiale. Exemplu: Prolog, Mercury.

In evolutia limbajelor de programare s-au impus in timp si ca arie de utilizare:

FORTRAN (1955) – FORmula TRANslation – Limbaj destinat aplicatiilor tehnico-stiintifice cu caracter numeric. A fost primul limbaj de programare high-level, introducand conceptul de variabile si iteratii.

COBOL (1960) – COmmon Businesss Oriented  Language – destinat aplicatiilor economice.

PASCAL (1971, Niklaus Wirth) – un limbaj conceput sa ii ajute pe studentii care incearca sa isi insuseasca principiile programarii.

C  (1972, Dennis Ritchie) – un limbaj cu destinatie universala. Prima data a fost implementat pe un sistem care folosea UNIX. Este considerat un limbaj de nivel mediu (middle-level language) intrucat combina elemente ale limbajelor de nivel inalt cu cele oferite de limbajul de asamblare.

C++ (1980, Bjarne Stroustrup) – o extensie a limbajului C, destinata programarii orientate pe obiect.

Java (1995, James Gostling) – limbaj orientat pe obiect, cu sintaxa si principii asemanatoare C++. Ceea ce il caracterizeaza in mod deosebit este portabilitatea, aplicatiile construite cu ajutorul Java fiind independente de masina pe care ruleaza.

 C# (2001, Microsoft, Anders Hejlsberg) – un limbaj de programare simplu, modern, orientat pe obiect, promovat de Microsoft o data cu aparitia .Net Framework.

Evolutia limbajelor de programare continua. Se adauga mecanisme pentru sporirea securatatii, pentru integrarea cu bazele de date, suport pentru UNICODE, etc.

Alegerea unui limbaj de programare afecteaza productivitatea si calitatea codului in mai multe moduri. Programatorii sunt mai productivi cu 30% daca folosesc un limbaj de programare familiar, pe care l-au utilizat cel putin 3 ani de zile, fata de cei care folosesc prima data limbajul respectiv. Programatorii care folosesc un limbaj de programare high-level sunt mai eficienti decat cei care lucreaza cu limbaje low-level. La fel si programatorii care lucreaza in limbaje de programare interpretate.

O imagine de ansamblu a limbajelor de programare se afla pe wikipedia. Urmatorul articol va fi dedicat tehnicilor de programare.

Category: Uncategorized

Your email address will not be published. Required fields are marked *

*