Curs 1 17 Februarie 2011 Adrian Iftene adiftene@info.uaic.ro 1
Limbajele calculatorului Compilate Interpretate Scripting P-cod Orientate pe aspect Orientate spre date 2
Cum lucrează? Orice program trebuie să se execute ca un şir de octeţi care sunt instrucţiuni în limbaj maşină al calculatorului Limbajele de asamblare de nivel jos Limbaj de nivel înalt: codul sursă al unui program trebuie tradus în cod maşină pe care maşină să poată de fapt să-l ruleze 3
După nivelul de apropiere al acestora de limbajul natural După modul de traducere După scopul pentru care au fost proiectate După modul de restricționare 4
Limbaje de nivel scăzut: limbajul de asamblare; Limbaje de nivel mediu: C, C++; Limbaje de nivel înalt: Java, PHP, Prolog, Pascal, Matlab, Python etc; 5
Sunt de 2 tipuri: procedurale și declarative Se pot clasifica și în interpretate sau compilate Limbajele de nivel foarte înalt limbajele de generația a patra, limbajele de interogări baze de date si limbajele vizuale (de exemplu, Visual Basic) În aceasta categorie pot fi incluse si limbajele de nivel comandă (exemple, Shell Unix, DOS Batch Command Language) 6
Limbaje compilate (necesită un compilator) Limbaje interpretate (necesită un interpretor) Limbaje P-cod (necesită și compilator și interpretor) 7
Limbajele compilate sunt traduse în fişiere executabile de cod maşină de un program special numit compilator Odată ce binarul a fost generat acesta poate fi rulat direct Limbajele compilate au o performanţă foarte bună şi au cel mai mult acces la SO Dezavantajul este ca un program să fie compilat trebuie sa fie destul de rigid si restrictiv Exemple: C, C++, FORTRAN, Pascal, COBOL 8
Ada ALGOL SMALL Machine Algol Like Language BASIC C C++ C# CLEO CLush COBOL Lisp Corn D Fortran Haskell Java Nemerle Ocaml Pascal Prolog Scheme Standard ML Visual Basic Visual Foxpro Visual Prolog 9/48
Un limbaj interpretat depinde de un program interpretor care citeşte codul sursă şi îl traduce pe loc în calcule şi chemări de sistem Sursa trebuie să fie re-interpretată (şi interpretorul prezent) de fiecare dată când codul este executat. Limbajele interpretate sunt mai încete decât limbajele compilate, şi deseori au acces limitat la sistemul de operare şi hardware-ul intern Pe de altă parte, ele tind să fie mai uşor de programat şi mai iertătoare la erori de codare decât limbajele compilate 10
Cum funcționează un interpretor? Funcționează în felul următor: preia prima comanda din codul sursa, o traduce în limbajul mașină și o execută, apoi a doua comandă și tot așa. Avantaje: flexibilitatea sporită (variabilele nu trebuie declarate) întreținerea este simplificată (orice modificare se reflectă imediat in program) Dezavantaje: viteza de execuție scăzuta (datorită interpretării pas cu pas) împreună cu programul trebuie distribuit interpretorul 11/48
Exemple: multe utilitare Unix, incluzând shellul şi bc(1) şi sed(1) şi awk(1). La fel şi Tcl Istoric, cel mai importante limbaj interpretor a fost LISP Astăzi Perl este foarte folosit şi creşte în popularitate constant Exemple: APL, AutoIt scripting language, BASIC, CodeSimian, Databus, Forth, Frink, J, Lisp, Lush, Pascal, REXX, VBScript, Some scripting languages 12
AWK AppleScript BeanShell Ch CLIST ColdFusion ActionScript, DMDScript, JavaScript, Jscript EXEC, EXEC 2 F-Script Frink Groovy ICI Io JASS Lua Mondrian Perl PHP Python REXX Ruby Sed Tcl Revolution VBScript 13/48
Limbajele P-cod sunt ca limbajele compilate în sensul că sursa este tradusă la o formă binară compactă care este ceea ce executaţi de fapt, dar acea formă nu este cod maşină În loc este pseudocod (sau p-cod), care este de obicei mult mai simplu dar mai puternic decât un limbaj maşină advărat. Când rulaţi programul, interpretaţi p-codul P-codul poate rula aproape la fel de repede ca binarul compilat Limbajele importante p-cod includ Python şi Java 14
Limbaje de uz general: C, C++, Pascal; Limbaje specializate: Prolog, SQL Limbajele de uz general sunt folosite pentru rezolvarea majorității problemelor de programare Limbajele specializate sunt folosite pentru rezolvarea problemelor dintr-un domeniu restrâns. De exemplu Prolog pentru aplicațiile de inteligență artificială, SQL pentru bazele de date. 15
Limbaje tipizate: C, C++, Pascal, Java; Limbaje netipizate: Perl, PHP; Limbajele tipizate impun anumite restricții asupra operațiilor care se aplică anumitor date Limbajele netipizate sunt cele care nu impun restricții și oferă o flexibilitate sporită 16/48
AOP is a programming paradigm which isolates secondary or supporting functions from the main program s business logic AOP increases modularity by allowing the separation of crosscutting concerns AOP includes programming techniques and tools that support the modularization of concerns at the level of the source code 17
Cross-cutting concerns - aspects of a program which affect other concerns Advice - additional code Pointcut - point where additional code is executed Aspect - the combination of the pointcut and the advice 18
Exemple: AspectJ, CaesarJ, CLOS, Compose, JAsCo, ObjectTeams 19
aspect pointcut advice 20
Problem: we want to know when something changes the student (name or grade) Solution: we add a pointcut for all set methods 21
Problem: we want to trace our program execution Solution: we add a pointcut for all methods set println tostring 22
Cum lucrează limbajele calculatorului: http://www.itim- cj.ro/%7ejalobean/cursuri/fundamental/unix-internet- Fundamentals-HOWTO-12.html Listă de limbaje de programare după categorie: http://ro.wikipedia.org/wiki/listă_de_limbaje_de_programare_du pă_categorie.htm Clasificarea limbajelor de programare: http://www.worldit.info/articole/clasificarea-limbajelor-deprogramare/ 23