ComputerContinuăm seria dedicată ştiinţei computerelor cu un episod despre programare. Vom vorbi în continuare despre logica programelor, despre fazele proiectării software, despre ce înseamnă compilarea codului şi care sunt paradigmele programării.

 

 



Cum funcţionează un sistem de operare

Logica programelor

Programele de computer sunt realizate în urma unui proces denumit inginerie software (eng. software engineering), care presupune stabilirea unor specificaţii (discutarea cu clienţii pentru a stabili ce să facă programul) şi a unui mod de realizare a acestora (stadiul de proiectare: cum îşi va atinge obiectivele programul, ce limbaj va fi folosit, cine va lucra efectiv la scrierea codului). Abia apoi se trece la scrierea programului.

În stadiul de proiectare, programatorul determină logica programului prin stabilirea unei serii de instrucţiuni destinate rezolvării problemelor puse de sarcina de programare, instrucţiuni denumite algoritm şi care nu reprezintă liniile de cod care constituie programul propriu-zis. După stabilirea algoritmului se trece la scrierea efectivă a programului.

Limbajele de programare moderne sunt definite de fluxul de execuţie (eng.control flow), care se referă la ordinea în care instrucţiunile unui program sunt executate şi de "structurile de control", care sunt elemente de control ale executării programului (ca, de exemplu, o condiţie ce stabileşte ce parte din cod se execută la un moment dat). Pentru cei care nu au văzut niciodată codul scris de un programator este de menţionat că acesta, deşi dă naştere unor aplicaţii foarte complicate uneori, este format din instrucţiuni care, luate independent, reprezintă operaţii aritmetice simple.

 

Executarea succesivă a  instrucţiunilor programului este cea mai simplă şi presupune executarea codului de sus în jos, până apar "structuri de control", comenzi care alterează această ordine. O astfel de modificare apare atunci când intervin condiţii care sunt ori nu îndeplinite; aceste condiţii sunt introduse de programatori prin cuvinte ca "if" şi care indică faptul că "dacă o anumită condiţie este îndeplinită, atunci programul face ceva anume, altfel face altceva". Iată un algoritm (deci nu cod...) pentru a pregăti plecarea la un meci de fotbal în oraş:
- mă îmbrac;
- DACĂ afară plouă, îmi iau umbrelă, ALTFEL nu;
- cobor scările;
- DACĂ merge şi soţia, mergem cu maşina personală, ALTFEL, cu metroul;

Pentru a scuti scrierea excesivă de cod (scrierea aceluiaşi bloc de instrucţiuni de nenumărate ori), se foloseşte în programare executarea repetitivă a unei instrucţiuni, denumită "looping" în jargonul ştiinţei computerelor. Looping-ul poate fi condiţional (se repetă până când o anumită condiţie este îndeplinită) ori prestabilit (se cunoaşte numărul de repetiţii) şi se realizează, de regulă, prin comanda "for".


Fazele dezvoltării de software


Ingineria software presupune 5 faze: specificaţia, proiectarea, implementarea, testarea şi mentenanţa softului.

Despre specificaţie şi proiectare am vorbit pe scurt mai sus. Implementarea reprezintă faza de scriere propriu-zisă a codului, care, după cum puteţi constata, este doar o parte din ceea ce înseamnă dezvoltarea unui soft. Testarea reprezintă faza în care se determină dacă programul răspunde cerinţelor din specificaţie şi dacă are erori. Există o perioadă de testare alfa (cea executată de programatori) şi o perioadă de testare beta (cea executată de utilizatori ori de "testeri" profesionişti).

Mentenanţa presupune mai multe elemente: pregătirea utilizatorilor pentru folosirea softului, în anumite cazuri instalarea şi configurarea softului, intervenţia pentru rezolvarea unor erori ori pentru adăugarea unor noi funcţiuni.


Compilarea (din cod sursă în cod maşină)


Limbajul pe care-l înţelege procesorul, denumit cod-maşină, este unul care i-ar solicita enorm pe programatori, în sensul că timpul necesar scrierii în limbajul procesorului ar fi mai lung decât cel necesar scrii aceloraşi instrucţiuni într-un limbaj de nivel înalt, cum se numesc limbajele de programare moderne ca C++, Java ori Python.

În loc să ţină cont de fiecare procesor în parte, programatorii scriu codul într-un limbaj de nivel înalt şi folosesc un soft numit compilator pentru a transforma codul scris în limbaj-maşină. Codul scris de programator într-un limbaj de nivel înalt se numeşte cod-sursă, pentru că acest cod este sursa programului în cod-maşină care va fi, în fapt, executat.


Paradigmele programării


Programarea procedurală este modul vechi de a programa, care presupune definirea fluxului de execuţie prin folosirea unor proceduri necesare divizării codului în unităţi funcţionale. Dar acest model de programare este cumva depăşit, programele moderne fiind definite de un grad mare de interactivitate, care reprezintă o provocare serioasă pentru programarea procedurală.

Programarea orientată pe obiecte este caracterizată de gruparea instrucţiunilor împreună cu datele asupra cărora operează. Alte caracteristici ale acestui tip de programare sunt: interfaţa este independentă de implementare (dacă un nou algoritm este identificat pentru rezolvarea unei probleme, acesta este pur şi simplu implementat în codul-sursă, fără a provoca disfuncţii în restul programului), codul poate fi refolosit pentru alte programe, iar informaţiile sunt ţinute departe de utilizator, care are acces doar la ce are nevoie, sub forma interfeţei om-maşină.



Bibliografie:
Computer Science Made Simple de V. Anton Spraul