Ce este programarea(DRAFT)

În această lecție vei afla:

  1. Ce înseamnă să programezi
  2. De la Algoritm la Program
  3. Ce este un limbaj de programare
  4. De ce începem cu C / C++

Obiectiv 1: Ce înseamnă să programezi?

Comportamentul și gândirea umană sunt caracterizate de secvențe logice. Din primele zile ale vieții învățăm cum să acționăm în diverse împrejurări pentru a obține rezultatele dorite. Putem intui care vor fi acțiunile altor oameni în situații cunoscute. În mod similar și compotramentul nostru în diferite situații poate fi prognozat.

Odată învățate, secvențele de acțiuni devin automate – le realizăm la nivel subconștient, fără a ne mai concentra asupra detaliilor. De exemplu: mișcarea unității mouse, atingerea într-un anumit mod a ecranului telefonului inteligent, întoarcerea paginii de carte în timpul lecturii, scrierea literelor, mersul pe bicicletă, conducerea automobilului și multe alte acțiuni.

Dacă am controla conștient fiecare semnal trimis de neuroni, fiecare mișare a mușchilor implicați în deplasarea lină a degetelor, rezultatele ar fi dezastruoase – orice acțiune, orcât de simplă, ar dura extrem de mult, iar noi am deveni cele mai ineficiente dintre ființele existente.  Pentru a fi eficienți cele mai multe acțiuni le realizăm rapid, în mod automat. Dar, până a deveni automate, secvențele corecte de acțiuni trebuie învățate.

Activitățile cotidiene de cele mai multe ori sunt formate și ele din secvențe de acțiuni, realizate conștient sau subconștient pentru a obține un rezultat dorit, drept exemplu poate servi procesul reprezentat în continuare:

Rezolvarea de probleme, cercetările științifice de asemenea urmează o serie de etape care pot conduce la rezultat doar diind îndeplinite într-o anumită consecutivitate, conform unor reguli stabilite. Melodia muzicală este formată din secvențe sonore (note) care urmează o ordine strictă. Modificarea ordinii de reproducere a notelor va deteriora melodia.

Secvențe predefinite de acțiuni sunt efectuate la producerea pe bandă rulantă a diferitor produse, de exemplu a automobilelor. Ordinea acțiunilor este cu atât mai importantă, cu cât mai complex este produsul creat. Întreaga civilizație tehnologică se bazează pe o anumită ordine a lucrurilor și acțiunilor.

Ordonarea acțiunilor și activităților, atât conștientă cât și subconștientă, este cea mai importantă parte a vieții noastre. Această ordonare este realizată prin un proces care se numește programare.

În sens larg programarea este procesul de planificare, organizare a acțiunilor sau evenimentelor.

În cele ce vor urma vom discuta despre un tip special de programare – programarea dispozitivelor digitale.

Dispozitivele digitale realizează sarcinile mai eficient, rapid și precis decât dacă le-am efectua noi. Dar, la fel ca și oamenii, dispozitivele mai întâi trebuie să ”învețe” ce acțiuni trebuie să fie îndeplinite, cum se îndeplinește fiecare dintre ele și ordinea în care acțiunile vor fi executate.

Progamarea pentru dispozitivele digitale este procesul de planificare și ordonare a instrucțiunilor care urmează să fie executate de un asemenea dispozitiv (calculator, tabletă, telefon, robot, etc.)

Pentru a programa orice acțiune a unui dispozitiv digital este necesar un program.

Programul pentru un dispozitiv digital este o secvență de instrucțiuni care descriu pașii ce trebuie să fie îndepliniți de dispozitiv într-un limbaj specific acestuia.

Pentru a obține un program funcțional sunt necesare mai multe etape: scrierea programului este doar una dintre ele!

Obiectiv 2: De la Algoritm la Program

Programele permit rezolvarea rapidă și eficietă a celor mai diferite probleme. Dar, pentru a crea un program, mai întâi este necesar să fie construită o schemă de rezolvare, care va descrie toate acțiunile ce trebuie să fie executate pentru a obține rezultatul. Această schemă este algoritmul. Despre algoritm se pot afla mai multe în modulul ”Inințiere în Algoritmi”.

Indicațiile din algoritm sunt clare pentru o ființă umană, dar nu și pentru un calculator sau alt dispozitiv digital. Pentru ca dispozitivele digitale să îndeplinească corect o sarcină, algoritmul ei de realizare trebuie descris într-un limbaj special, înțeles de dispozitiv – limbaj al dispozitivului. Acest limbaj mai este numit și cod mașină (în endleză: mashine code sau mashine language)  

Astfel, programul este o ”transcriere” a algoritmului într-un limbaj care poate fi interpretat corect de către un dispozitiv digital. De regulă, limbajele utilizate de dispozitivele digitale sunt limbaje binare (care descriu instrucțiunile folosind doar secvențe de 0 și 1). Scrierea unui program în limbaj binar nu este deloc simplă, așa că pentru a face procesul de programare mai eficient și mai prietenos au fost inventate limbajele de programare.

Obiectiv 3: Limbaje de programare

Limbajul de programare este o ”punte” între limbajul uman și limbajul binar, utilizat de dispozitivele digitale.

Există mai multe etape în istoria limbajelor de programare. Primele calculatoare erau programate direct prin utilizarea combinațiilor de semnale binare, adică chiar în limbajul calculatorului. Pentru a executa un program, sute de comutatoare erau setate în pozițiile necesare manual.

Primul limbaj de programare, diferit de limbajul calculatorului a fost limbajul de asamblare. Fiecare instrucțiune a acestui limbaj era, de fapt, descrierea unei instrucțiuni executate de calculator, doar că nu mai erau folosite secvențe binare. Acestea au fost înlocuite cu combinații de litere și cifre.

Pentru a fi executat, programul scris în limbajul de asamblare trebuia prealabil transformat în limbajul calculatorului. Această operație era efectuată cu ajutorul unui asamblor – program utilitar elaborat manual, adaptat la calculatorul particular. 

Limbajele de asamblare erau dependente de construcția calculatoarelor, astfel fiecare model de calculator avea propriul limbaj de asamblare. Chiar dacă ele nu ofereau instrumente performante de programare, limbajele de asamblare au fost primele care au demonstrat posibilitatea de a transforma programele scrise cu simboluri alfanumerice în secvențe binare, înțelese de calculatoare. Limbajele de asamblare au fost au fost numite limbaje de programare de nivel jos.

Cu trecerea timpului calculatoarele deveneau tot mai performante, sarcinile executate – mai universale, datele prelucrate – mai variate. Ideia de ”traducere” a instrucțiunilor din o formă în alta a fost dezvoltată, astfel încât au apărut limbaje foarte apropiate de limbajul uman (în particulare – de limba engleză), care permit scrierea eficientă a programelor pentru realizarea unor sarcini generale sau specializate. Acestea au fost limbajele de programare de nivel înalt, a căror reprezentanți remarcabili sunt: Fortran, Cobol, PL, Pascal, C, C++ și multe altele.  Pentru ca seturile de instrucțiuni ale acestor limbaje sunt mult mai complexe decât cele a limbajelor de asamblare, utilizarea de transformare a programelor în limbaj calculator a fost înlocuită cu un program mai complex, numit compilator

Rolul compilatorului pentru limbajele de nivel înalt este similar asamblorului – transformarea instrucțiunilor scrise în limbajul de programare în instrucțiuni cod calculator. Deosebirea este că o instrucțiune a limbajului de programare de nivel înalt se poate transforma în mai multe instrucțiuni în limbaj calculator, spre deosebire de limbajele de asamblare, unde relația este 1:1.

Un compilator este un program care transformă codul sursă scris într-un limbaj de programare de nivel înalt în limbaj calculator.

Procesul de conversie a programului din limbajul de nivel înalt în limbajul calculatorului este cunoscut sub numele de compilare.

Limbajele de programare de nivel înalt s-au dezvoltat, formând la moment trei generații distincte.

Prima generație a limbajelor de nivel înalt este formată de limbajele fundamentale: C, C++, Java, în baza cărora au fost dezvoltate și se dezvoltă în continuare sisteme și aplicații fundamentale. Tot aceste limbaje servesc pentru elaborarea compilatoarelor limbajelor de programare de nivel înalt de generația a doua și a treia. Limbajele fundamentale permit controlul acțiunilor dispozitivelor digitale la nivel de operații elementare, gestionarea memoriei la nivel de biți, crearea propriilor instrumente de programare și multe altele.

Cea de a doua generație a limbajelor de programare de nivel înalt este caracterizată de apariția limbajelor de scripting, programare web și prelucrare a volumelor mari de date, cum sunt JavaScript, Python, Ruby, SQL, MathLab, platforma Processing și altele. Acestea dispun de colecții de instrumente externe, care pot fi ușor integrate în programele în curs de elaborare, simplificând astfel programarea aplicațiilor noi.

A treia generație a limbajelor de programare de nivel înalt folosește medii și obiecte vizuale. Instrucțiunile sunt reprezentate prin obiecte grafice, interconectabile.  Limbajele specifice acestei generații sunt Scratch, Kodu, Unity Unreal Engine 4 și altele.  Această categorie de limbaje este utilizată preponderent pentru programarea grafică sau în scopuri educaționale

Obiectiv 4: Care limbaj îl vom învăța?

C este unul dintre primele limbaje de nivel înalt. Prima versiune a limbajului apare în 1972, fiind creată de Dennis Ritchie în laboratoarele Bell ale companiei AT&T (American Telephone and Telegraph), SUA. Ulterior limbajul este dezvoltat împreună cu Brian Kernigan (imaginea de mai jos). Cea de a doua versiune a limbajului apare în 1978. Începând cu anul 1989 limbajul C este periodic supus standartizării, ultima fiind datată cu iunie, 2018. Aceasta garantează corespunderea instrumentelor limbajului de programare celor mai recente cerințe ale industriei informatice.

În același timp C este și un limbaj de instruire.  Regulile stricte ale limbajului, multitudinea de funcții, operații și resurse interactive pentru învățare au contribuit la transformarea lui în cel mai popular limbaj utilizat pentru instruire în învățământul general și superior. Limbajele de programare de nivel înalt apărute ulterior au preluat logica organizării instrucțiunilor de la limbajul C. Este foarte simplu să înveți un limbaj de programare nou dacă cunoști principiile de programare în C / C++.

C++ este o extensie a limbajului C clasic, orientată pentru utilizare industrială. A apărut în 1985, fiind dezvoltat de cercetătorul danez Bjarne Stroustrup (poza în pagina următoare). C++ dispune de mai multe facilități pentru crearea produselor program complexe, dar recunoaște și toate sursele scrise în limbajul C clasic. Mai mult decât atât, el permite să fie utilizate în comun instrucțiuni C și C++

Datorită acestui fapt unele instrucțiuni complexe ale limbajului C pot fi ușor înlocuite cu instrucțiuni C++, mai simple și mai flexibile. Mai multe despre aceasta se va povesti în lecțiile următoare. C este limbajul în care au fost programate sistemele de operare Windows, Linux și MacOS (iOS). Tot C este folosit pentru a crea compilatoarele limbajelor noi de programare, sisteme informatice complexe dar și aplicații pentru dispozitivele digitale mobile. În C sunt elaborate platformele pe care sunt dezvoltate ulterior jocuri strategice, RPG și alte aplicații interactive.

Se poate afirma cu certitudine – dacă cunoști C vei putea învăța oricare din limbajele și platformele de programare moderne.

Echipa proiectului vă urează succese și speră că în viitorul apropiat veți deveni cei care vor dezvolta noi tehnologii, vor crea sisteme informaționale și platforme digitale în cele mai diverse domenii!