curs 1 adrian iftene [email protected]/scoala/2011/li/cursuri/li01.pdf · exemple: c, c++,...
TRANSCRIPT
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
17
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 cross-cutting concerns
AOP includes programming techniques and tools that support the modularization of concerns at the level of the source code
18
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
Exemple: AspectJ, CaesarJ, CLOS, Compose, JAsCo, ObjectTeams
19
20
aspect
pointcut
advice
21
Problem: we want to know when something changes the student (name or grade)
Solution: we add a pointcut for all “set” methods
22
Problem: we want to trace our program execution
Solution: we add a pointcut for all methods
set
println
toString
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_după_categorie.htm
Clasificarea limbajelor de programare: http://www.worldit.info/articole/clasificarea-limbajelor-de-programare/
23