Limbaje 2.ppt

34
Limbaje de programare inginereşti Tema 2 Limbaje de programare

Transcript of Limbaje 2.ppt

  • Limbaje de programare ingineretiTema 2Limbaje de programare

  • DEFINIIEUnlimbaj de programareeste un set bine definit de expresii i reguli (sau tehnici) valide de formulare a instruciunilor pentru unsistem de calcul. Un limbaj de programare are definite un set de reguli sintactice i semantice. El d posibilitatea programatorului s specifice n mod exact i amnunit aciunile pe care trebuie s le execute calculatorul, n ce ordine i cu ce date. Specificarea const practic n ntocmirea/scrierea programelor necesare ("programare").

  • Aspecte caracteristice:

    Sintaxa- Ansamblul regulilor prin care pornind de la simboluri de baz se construiesc structuri compuseGramatica: mulimea regulilor sintactice

    Semantica- Sensul construciilor sintacticeSet de reguli ce determin semnificaia propoziiilor limbajului

    Pragmatica- Capacitatea de a utiliza construciile sintactice i semantice

  • Scurt istorie1942, ENIAC programarea se fcea cu ajutorul comutatoarelor

  • Scurt istorie1951, Grace Hopper a scris primul compilator 1957, FORTRAN (FORmula TRANslating system )1959, Cobol pentru activiti economice1958, LISP pentru lucrul cu liste1958, Algol, Algol 68 calcul recursiv, funcii. Dificil de folosit.1968, Pascal, 1972 C

  • Scurt istorie

    Anii 50coduri de ordonare (limbaje de asamblare priimitive)1957FORTRANPrimul limbaj de programare de nivel nalt1958ALGOLPrimul limbaj imperativ modern1960LISP, COBOLProgramare interactiv; programare n afaceri1962APL, SIMULANaterea OOP (SIMULA)1964BASIC, PL/I1970PrologPrimul limbaj de programare logic1972CLimbaj de programare a sistemelor1975Pascal, SchemeLimbaje didactice1983Smalltalk-80, AdaOOP reinventat1986C++, EiffelOOP reinventat (din nou)1988CLOS, Oberon, Mathematica1990Haskell1990sPerl, Python, Ruby, JavaScript1995JavaOOP reinventat pentru internet2000C#

  • Clasificarea general a limbajelor

    Limbaje naturale: lb. Romn, lb. Englez

    Limbaje artificiale:- Jargoane profesionale- Limbaje de comunicare ntre dispozitive: protocoale (TCP/IP, XML)- Limbaje de programare: comunicare ntre om i calculator

  • Tipuri i clasificriDup modul de specificare a instruciunilor:- limbajeprocedurale; ex.C,Java,Perl- limbajeneprocedurale: ex.LISP,Haskell,Clips,Prolog

  • Tipuri i clasificriCea mai folosit clasificare este cea care grupeaz limbajele n cinci generaii, urmrind periodizarea evoluiei arhitecturii calculatoarelor: Prima generaie cuprinde limbajele main, care definesc instruciunile sub forma recunoscut de calculator. Programele cuprind instruciuni formate din cod i adresa operanzilor. Programele rezultate sunt mari i greu de corectat.Generaia a doua cuprinde limbajele orientate spre main. n aceast generaie intr limbajele autocod i limbajele de asamblare. Limbajele autocod conin instruciuni echivalente instruciunilor din limbajul mainii. Limbajele de asamblare mai ofer i macro-instruciuni, echivalente cu secvene de instruciuni ale mainii. Avantajul lor este rapiditatea, motiv pentru care sunt preferate n elaborarea software-ului de sistem.

  • Tipuri i clasificriGeneraia a treia cuprinde limbaje orientate pe problem, caracterizate printr-o descriere mai uoar i prin portabilitate crescut. n aceast generaie sa afl o mare varietate de limbaje:- limbaje de orientare tiinific: FORTRAN, ALGOL, APL;- limbaje de gestiune: COBOL, GAP, RPG;- universale: Pascal, PL/I, C, ADA;- limbaje specializate: APT (pentru programele de comand numeric), LDP (pentru descrierea paginii imprimantelor laser), dBASE, FoxPro.

  • Tipuri i clasificriGeneraia a patra cuprinde limbaje orientate spre utilizatorii finali. Acetia, neavnd o pregtire special, pot s-i rezolve singuri problemele, dialognd cu calculatorul. Limbajele din aceast categorie descriu calculatorului cum s fac pentru a rezolva o problem, fiind n general neprocedurale. Aceste limbaje se clasific n: limbaje de interogare; generatoare de rapoarte; generatoare de aplicaii; generatoare de grafice; instrumente de sprijinire a deciziilor; limbajele inteligenei artificiale.

  • Tipuri i clasificriLimbajele de interogare por fi:- limbaje de interogare simpl, care permit consultarea fiierelor i a bazelor de date pe un singur tip de nregistrare logic utiliznd un criteriu simplu;limbaje de interogare complex, care permit consultarea mai multor tipuri de nregistrri logice, prin asocierea unor diferite structuri. Exemple din aceast categorie sunt: SQL, QBE, Hiper Talk. Cel mai cunoscut este SQL, inclus n prezent n orice sistem de gestiune al bazelor de date.

    Generatoarele de rapoarte ndeplinesc trei funcii eseniale: selecia informaiilor solicitate, ordonarea datelor dup anumite criterii i editarea rapoartelor folosind un numr minim de instruciuni. Toate sistemele de gestiune a bazelor de date includ generatoare de rapoarte.

  • Tipuri i clasificriGeneratoarele de aplicaii se adreseaz cunosctorilor tehnicilor de programare. Ele permit ca pe baza unor descrieri a datelor i a modului de organizare, prelucrare i afiare a acestora s se accelereze generarea programelor. Exemple: CSP, FOCUS, Mantis, NOMAD2.

    Generatoarele de grafice sunt instrumente care permit reprezentarea grafic a rezultatelor prelucrrii datelor. Ele sunt independente (SAS, Tell-al Graph) sau incorporate n SGBD-uri (FoxGraph) sau aplicaii tabelare (Quattro, Lotus, Excel).

    Instrumentele de sprijinire a deciziilor se adreseaz experilor din diferite domenii, permind simularea matematic a fenomenelor. n aceast clas intr programele de calcul tabelar (Quattro, Lotus, Excel), pachetele statistice (SPSS, SAS).

  • Tipuri i clasificriLimbajele inteligenei artificiale sunt folosite n prelucrarea listelor (LISP), programarea logic (PROLOG) i programarea orientat pe obiecte (Smalltalk).

    Generaia a cincea cuprinde limbajele care vor fi ndreptate spre exploatarea bazelor de cunotine sau crearea sistemelor expert. MANDALA combin prelucrarea cunotinelor cu funciile unui sistem de gestiune a bazei de cunotine.

  • Tipuri i clasificriClasificarea din perspectiva abstractizrii

    Limbaje de nivel inferior- Cod main, asamblare- Specifice pe calculator, portabilitate sczut

    Limbaje de nivel superior- Generaiile 3, 4, 5 de limbaje de programare- Productivitate ridicat a muncii de programare

  • Clasificare prin prisma paradigmelor

    Paradigm:- Modelul sau arhetipul unui proces sau sistem- Colecii de caracteristici de evaluare i criterii de abstractizare

    Paradigma programrii procedurale i structurateParadigma programrii modulareParadigma programrii obiectualeParadigma programrii funcionale i logiceProgramarea concurent i distribuitAlte paradigme

    Tipuri i clasificri

  • Tipuri i clasificriProgramarea procedural i structurat (imperativ)Utilizatorul descrie pas cu pas algoritmul de rezolvareUnitatea de baz: procedura sau funcia

    Principiul programrii structurate:Orice procedur poate fi reprezentat prin cele 3 structurifundamentale din algoritmic:Structura liniar,Structura ramificat iStructura repetitiv

    Algol60, Pascal, C, PL/1, Ada

  • Tipuri i clasificriProgramarea modular

    Programul se descompune n moduleModulele sunt independente, atomicePrincipul de baz: ncapsulareaModulul are 2 componente: interfaa i implementarea

    Modula i Ada

  • Tipuri i clasificriProgramarea obiectual (OOP)Obiect: entitate care conine informaie i comportamentOrice entitate din lumea real poate fi considerat obiectProgramul: ansamblu de obiecte n interaciunePrincipii de baz: ncapsulare Obiectele au structur i stare Comunicare prin mesaje Reutilizarea codului: Se permit compoziie i generalizare/specializare Polimorfism Un nume poate fi utilizat cu nelesuri diferite

    Smalltalk, C++, Java

  • Tipuri i clasificriProgramarea funcional

    Programul este un ansamblu de funciiApeluri recursiveFunciile sunt folosite la descrierea datelor i coduluiNu au instruciuni de atribuireFundament matematic: expresiile lambda

    Lisp, ML

  • Tipuri i clasificriProgramarea logic

    Program: fapte i reguliLimbaje declarativeSe indic modul cum trebuie s arate soluia problemeiFundament matematic: sistemele logice formale Logica predicatelor de ordinul 1 Logici modale, temporale sau monotoniceConstituie baza motoarelor de inferen n sisteme expert

    Prolog

  • Tipuri i clasificriDup modul de specificare a instruciunilor:

    limbajeprocedurale; descriu pas cu pas algoritmul de rezolvare a problemei. Limbajele de nivel nalt sunt de obicei procedurale. Ex.C,Java,Perl, BASIC, COBOL, PL/I, FORTRAN, Pascal

    limbajeneprocedurale; sunt de nivel foarte nalt i definesc scopul, fr a da detalii asupra modului n care acesta se atinge. Ex.LISP,Haskell,Clips,Prolog, Smalltalk

    Limbajele neprocedurale sunt concepute pentru a gndi un program la nivel de instruciune, pe cnd cele procedurale, oblig programatorul s conceap programe la nivel de bloc.

  • 1 Limbaje vectoriale2 Limbaje orientate pe aspect3 Limbaje de asamblare4 Autori de limbaje5 Limbaje shell6 Limbaje compilate7 Limbaje concatenative8 Limbaje concurente9 Limbaje cu acolade10 Limbaje de modelare11 limbaje orientate spre date12 limbaje structurate ca date13 Limbaje declarative14 Limbaje de extensie15 Limbaje de generaia a patra16 Limbaje funcionale17 Limbaje interpretate18 Limbaje iterative19 Limbaje specializate20 Limbaje logice21 Limbaje main22 Limbaje de Macrouri23 Limbaje multi-paradigm24 Limbaje de analiz numeric25 Limbaje bazate pe alte limbi dect limba englez26 Limbaje orientate obiect27 Limbaje orientate pe prototip28 Off-side rule languages29 Limbaje procedurale30 Limbaje reflexive31 Limbaje bazate pe reguli32 Limbaje de scripting33 Limbaje pentru sisteme n timp real34 Analizoare lexicale35 Limbaje vizuale36 Limbaje Wirth37 Limbaje bazate pe XMLClasificare Wikipedia

  • Caracterizarea principalelor limbaje de programare Fortran(sauFORTRAN) este unlimbaj de programarenscut n anul 1950 i care este nc folosit dup jumtate de secol de existen. Numele su i are originea din "FormulaTranslator". Versiunile mai vechi ale acestui limbaj erau cunoscute drept FORTRAN, dar dup Fortran 90 numele nu a mai fost scris n ntregime cu majuscule. Dei la nceput a fost un limbajprocedural, cele mai recente versiuni au inclus suport pentru programarea obiectual.

  • Caracterizarea principalelor limbaje de programare COBOL (Common Business Oriented Language). Dup FORTRAN, din generaia a 3-a, cel mai rspndit este limbajul COBOL. Este un limbaj de programare evoluat destinat problemelor de gestiune. Se utilizeaz pentru exploatarea unui volum mare de date cu structuri diverse (arbori, tablouri, fiiere etc.). Limbajul este mai dificil de nsuit dect alte limbaje, dispunnd de multe instruciuni cu numeroase opiuni fiecare.

  • Caracterizarea principalelor limbaje de programare BASIC(acronim al expresiei englezeBeginners All-purpose Symbolic Instruction Code) este unlimbaj de programarede nivel nalt a calculatoarelor, foarte asemntoare culimba englez, ceea ce l face uor de memorat i ideal pentru nceptori; astfel, generaia de utilizatori predecesoare ereiPC-urilor a luat primul contact cu programarea prin intermediul calculatoarelorHC, care aveau la baz acest o versiune de BASIC. O variant de BASIC foarte popular este iVisual Basic, creat de ctre companiaMicrosoft. Aceasta se adreseaz mai mult avansailor. Visual Basic permite crearea de aplicaii relativ complexe prin manipulareacomponentelorvizuale (grafice) ale programului.

  • Caracterizarea principalelor limbaje de programare Pascal este unul dintre limbajele de programare de referin n tiina calculatoarelor, fiind cel care a definit programarea calculatoarelor. Unul din marile sale avantaje este asemnarea cu limbajul natural limba englez, ceea ce l face limbajul ideal pentru cei care sunt la primul contact cu programarea. Pascal a fost denumit astfel n onoarea matematicianului Blaise Pascal, creditat pentru construirea primelor maini de calcul numeric. Cele mai populare implementri a acestui limbaj au fost Turbo Pascal i Borland Pascal, ambele ale firmei Borland cu versiuni pentru Macintosh i DOS, care i-au adugat limbajului obiecte i au fost continuate cu versiuni destinate programrii vizuale pentru Microsoft Windows (limbajul Delphi) i pentru Linux (Kylix).n prezent exist i alte implementri mai mult sau mai puin populare, dar gratuite, printre care se remarc Free Pascal i GNU Pascal.Spre deosebire de BASIC, care a stat n trecut la baza nvrii programrii, Pascal este un limbaj structurat. De aceea, el formeaz un anumit tip de gndire, similar limbajelor moderne, precum C++, dar nu deine complexitatea i abstractizarea acestuia din urm, fiind mai uor de neles datorit sintaxei simple.

  • Caracterizarea principalelor limbaje de programare ADA (Automatic Data Acquisition i totodat numele contesei Augusta Ada Byron de Lovelace, considerat primul programator din lume) este un limbaj destinat aplicaiilor concurente, tiinifice i n timp real. A fost creat pentru a nlocui cele aproximativ 350 de limbaje folosite la nceputul anilor 80 n Departamentul aprrii al SUA. Este un limbaj complex i dificil de nvat, dar asigur claritate, robustee, modularitate, tratarea excepiilor. Folosit iniial n domeniul militar, la ora actual, datorit facilitilor oferite, este larg utilizat i n aplicaiile economice. Pe ansamblu, limbajul ADA poate fi considerat nu doar un limbaj, ci un mod de a gndi, constituind o piatr de hotar n evoluia programrii n timp real.

  • Caracterizarea principalelor limbaje de programare C (numit aa deoarece dezvolt limbajul B elaborat de Bell Laboratories) este un limbaj orientat spre asigurarea controlului fluxurilor de instruciuni (teste, bucle, subprograme), conducnd la elaborarea de programe compacte, bine structurate, fiind aplicat de constructorii de soft-uri de baz (C-ul a fost folosit iniial la scrierea sistemului de operare UNIX; foarte multe din procesoarele de texte, SGBD-urile i spreadheet-urile comercializate la ora actual sunt realizate/scrise n versiuni ale acestui limbaj). C-ul preia de la limbajele de tip PASCAL gradul ridicat de portabilitate, iar de la limbajele de asamblare rapiditatea n execuie i gestionarea eficient a memoriei. Astzi, cele mai utilizate versiuni sunt: C++, Quick C, Visual C.

  • Caracterizarea principalelor limbaje de programare C++ este un limbaj de programare general. Este un limbaj multi-paradigm cu verificarea static a tipului variabilelor ce suport programare procedural, abstractizare a datelor, programare orientat pe obiect.n anii 90, C++ a devenit unul din cele mai populare limbaje de programare comerciale. Nimeni nu deine C++ ns, acesta fiind gratuit.Bell Labs a dezvoltat C++ (iniial denumit C cu Clase) n anii 1980 ca o serie de mbuntiri ale limbajului C. Acestea au nceput cu adugarea de clase apoi de funcii virtuale, suprancrcarea operatorilor, motenire multipl, template-uri i excepii. Limbajul de programare C++ a fost standardizat n 1998 ca i ISO 14882:1998, versiunea curenta fiind din 2003, ISO 14882:2003.

  • Caracterizarea principalelor limbaje de programare Java este un limbaj de programare orientat-obiect, puternic tipat, conceput de Sun Microsystems la nceputul anilor 90.Un program Java compilat, corect scris, poate fi rulat fr modificri pe orice computer (PC, PDA etc) pe care e instalat o main virtual Java (JVM=Java Virtual Machine). Acest nivel de portabilitate (inexistent pentru limbaje mai vechi cum ar fi C) este posibil deoarece sursele Java sunt compilate ntr-un format standard numit cod de octei (byte-code) care este intermediar ntre codul main (dependent de tipul computerului) i codul surs.Maina virtual Java este mediul n care se execut programele Java. n prezent, exist mai muli furnizori de JVM, printre care Sun, IBM, Bea, Oracle, FSF.

  • Caracterizarea principalelor limbaje de programare MATLAB ("matrixlaboratory")este un limbaj de programare i un mediu de calcul numeric. MATLAB permite manevrarea uoar a matricilor, realizarea graficelor de funcii i date, implementarea algoritmilor, crearea de interfee utilizator i interfaarea cu programe din alte limbaje.

    n 2004 MathWorks a anunat c MATLAB este utilizat de peste un milion de oameni din industrie i din lumea academic.

  • Caracterizarea principalelor limbaje de programare LabVIEW (prescurtare de la Laboratory Virtual Instrumentation Engineering Workbench) este o platform i un mediu de dezvoltare pentru un limbaj de programare vizual. Lansat iniial de Apple Macintosh n 1986, LabVIEW este folosit n mod obinuit pentru achiziia de date, controlul instrumentelor i automatizare industrial, pe o mare varietate de sisteme de operare. Limbajul de porgramare folosit de LabVIEW, numit G, este un limbaj bazat pe fluxul de date.

  • Caracterizarea principalelor limbaje de programare LISP este un limbaj de programare funcional cu un lung istoric. Conceput iniial ca un model de calcul (asemntor celui construit de Turing), a devenit limbajul cel mai folosit la crearea aplicaiilor de inteligen artificial n anii de glorie ai acestui domeniu (1970-1980).Denumirea provine de la "LISt Processing".Specificat iniial n 1958, Lisp este cel de-al doilea ca vechime limbaj de programare de nivel nalt; doar Fortran este mai vechi. Precum Fortran, Lisp s-a schimbat mult fa de forma iniial,existnd de-a lungul vremii o serie de dialecte. Astzi, cele mai rspndite dialecte Lisp sunt Common Lisp i Scheme.