Extras din curs
Limbajele de programare sunt împartite pe diferite niveluri în functie de gradul de interactiune cu suportul hardware:
- Limbaje masina – corespund unui set de instructiuni restrânse pentru o arhitectura hardware particulara si sunt dependente de masina. Instructiunile au lungimi de 16, 24, 32, 64 bits. Primii biti specifica codul operatiei, iar ceilalti specifica operanzii sau modurile de adresare. De obicei se exprima în binar si realizeaza operatii de baza (transfer de date între memoria centrala si procesor, instructiuni de calcul aritmetic si logic). Este dificil sa se programeze la acest nivel, deoarece trebuie sa se considere lucrul cu registrii, modurile de adresare, maparea memoriei. Datorita acestei modalitati de programare la detalii sunt des întâlnite erorile.
- Limbajele de asamblare – folosesc mnemonici pentru operatii si operanzi, ceea ce face instructiunile masina mai usor de scris si de înteles. Înainte de a rula un program în limbaj masina codul trebuie transformat într-o forma de limbaj masina. Programul translator care realizeaza acest lucru se numeste
„assembler”. Limbajele de asamblare sunt mai usor de programat decât limbajele masina, dar au dezavantajul ca sunt dependente de masina. Assemblere-le vin de obicei odata cu partea hardware si sunt specifice unei configuratii hardware.
- Limbaje de nivel înalt – subliniaza natura unei probleme si foloseste proceduri pentru rezolvarea problemei. Aceste limbaje sunt independente fata de masina, iar programele pot rula pe orice tip de configuratie hardware. Limbajele de nivel înalt se clasifica în procedurale si declarative (neprocedurale). Mai mult, se pot clasifica si în interpretate sau compilate. Sunt posibile oricare combinatii dintre doua din tipurile enumerate mai sus.
- Limbajele de nivel foarte înalt – includ limbajele de generatia a patra, limbajele de interogari baze de date si limbajele vizuale (de exemplu, Visual Basic). În aceasta categorie pot fi incluse si limbajele de nivel comanda (exemple, Shell Unix, DOS Batch Command Language).
Un limbaj procedural (de exemplu, C, Java) foloseste o secventa logica de pasi pentru a obtine rezultate. Cu alte cuvinte, acest tip de limbaje trebuie sa contina informatii despre „cum” (how) se poate obtine rezultatul asteptat.
Limbajele declarative (numite si limbaje de generatia a-4-a sau limbaje de procesare simboluri) demonstreaza „ce” (what) va fi realizat si elibereaza programatorului de specificarea detaliilor pasilor (exemple, LISP si variantele sale, Prolog). Într-un program declarativ se specifica definitiile taskurilor care trebuiesc îndeplinite, dar fara a se urmari detaliile despre cum se îndeplinesc task-urile.
Un interpretor este un program translator, care interpreteaza individual comenzile si corespunzator cu configuratia calculatorului. Translatarea are loc de fiecare data când este rulat un program. Interpretorul lucreaza repetând urmatoarele trei operatii la întâlnirea fiecarei linii din program: citeste linia din codul sursa; analizeaza, verifica si codifica binar linia; executa instructiunea asociata cu linia interpretata. În acest caz, limbajul se spune ca este interpretat (exemple tipice, Basic, LISP, Prolog, TclTk). Este
posibil sa existe ambele variante ale unui limbaj, interpretat si compilat. Interpretoarele implementeaza direct comenzile unui limbaj de nivel înalt într-un calculator, prin interpretarea a ceea ce cere comanda. Daca este o bucla, va fi interpretata de fiecare data si calculatorul va da instructiuni echivalente. Aceasta modalitate de lucru poate fi uneori ineficienta si consumatoare de timp.
Un compilator este un program translator care converteste programul într-un limbaj masina echivalent. Odata tradus, programul poate rula de oricâte ori se doreste. În acest caz se spune ca limbajul este compilat (exemple C++, Java, Pascal). Compilatoarele produc cod masina echivalent care poate fi optimizat sa ruleze eficient. Daca se mai adauga si facilitati de testare si „debugging”, limbajele compilate sunt folosite mai des pentru aplicatii.
Avantajele la limbajele interpretate: disponibilitatea programului sursa pentru modificari, realizarea rapida de programe mici si executia lor. Dezavantajele limbajelor interpretate provin din faptul ca nu exista programe executabile, interpretorul trebuie furnizat cu programul sursa daca se doreste executat, sunt mai lente ca programele compilate. Dezvoltarea unui program compilat dureaza mult mai mult decât unul interpretat.
Sistemele de operare asigura suport prin interpretoare, compilatoare, assemblere, linkeditoare, editoare. Aceste programe sistem pot accesa rutine folosite pentru functiile uzuale (de exemplu citirea sau afisarea unor date), care sunt cuprinse în biblioteci.
Etapele de lucru pentru:
Preview document
Conținut arhivă zip
- Programare Logica si Functionala.doc