Introducere in Stiinta Calculatoarelor 2013 | Page 118

a. Programare procedurală – priveşte datele şi prelucrările ca entităţi distincte (declarate separat) şi foloseşte conceptele de modul pentru prelucrare şi orizont de vizibilitate pentru variabile. Un modul este format din unul sau mai multe subprograme iar o variabilă (dată declarată de anumit tip) este vizibilă (accesibilă) în cadrul unui modul dar nu şi din afara sa; modulele pot fi preluate din biblioteci de subprograme predefinite (prefabricate de producătorul compilatorului). Programarea procedurală este realizată prin limbajele C, Pascal, Delphi, FORTRAN, COBOL. b. Programare imperativă – în care se furnizează calculatorului o listă de instrucţiuni şi un context de memorie (considerat drept starea programului la un moment dat) care este modificat printr-o comandă în alt context (altă stare, cu alte valori de variabile în memorie). Funcţionarea procesorului este de fapt imperativă, el urmărind pas cu pas lista de instrucţiuni din program. Limbajele de programare uzuale sunt imperative (FORTRAN, C, Perl), cele obiectuale (C++, Java) adăugând doar noi facilităţi de lucru. c. Programarea declarativă – diferă de cea imperativă prin faptul că în program se descrie pentru calculator un set de condiţii, lăsând apoi calculatorului sarcina să le satisfacă. În programarea declarativă, se descriu relaţii între variabile în termeni de „reguli de inferenţă” (reguli de obţinere a unor noi valori din cele existente). Calculatorul (înţelegând aici un program complex de tipul unui motor de inferenţă sau unui mediu de baze de date ce rulează pe calculator) aplică un algoritm fixat şi interpretează relaţiile spre a produce un rezultat. Limbaje uzuale din categoria declarativă sunt Prolog şi SQL. d. Programarea funcţională – consideră prelucrarea drept evaluarea funcţiilor matematice. Expresiile, în această paradigmă, sunt formate din funcţii ce combină valori iar execuţia nu implică o secvenţă de comenzi fiindcă programul defineşte CE şi nu CUM se prelucrează datele. De fapt limbajele de programare nu pot fi pur funcţionale pentru că rulează pe o maşină în paradigmă imperativă; se poate aminti Lisp ca limbaj funcţional, în care prelucrările sunt structurate similar structurării datelor (de obicei în liste). 118