Vous êtes sur la page 1sur 9

Broj programskih

programskih jezika
jezika
PROGRAMSKI
• Veliki broj različ
različitih programskih jezika je
JEZICI razvijen i implentiran
preko 8000 programskih jezika ( podatak iz
Uvod 2006 )
u programske jezike
Fortran,
Fortran, Cobol,
Cobol, Simula,
Simula, Pascal,
Pascal,
Algol,
Algol Modula Delphi PHP,
, Modula--2, Delphi,
, PHP, Visual
Dr Milica Vuč
Vučković
ković Basic, Lisp,
Lisp, Prolog,
Prolog, Smalltalk,
Smalltalk, Java,
JavaScript,
JavaScript, C, C++, C# , ... ...
Fakultet organizacionih nauka, Fakultet organizacionih nauka,
Beograd, 2007. Beograd, 2007.

Znač
Značajni uticaji na razvoj programskih
Apstraktni nivoi programskih jezika
jezika
class
classTrougao
Trougao{{
• Apstraktni nivoi jezika viši programski jezik
......
float
floatp()
p()
• Aplikacione oblasti return
returnb*h/2;
b*h/2;
}}
• Komjuterske arhitekture
LOAD
LOADr1,b
r1,b
• Jezič
Jezičke paradigme LOAD
LOADr2,h
r2,h
niž
niži programski jezik MUL
MULr1,r2
r1,r2
• Implementacioni modeli (asemblerski jezik) DIV
DIV r1,#2
r1,#2
RET
RET

izvrš 0001001001000101001001001
0001001001000101001001001
zvršni maš
mašinski kod
110110010101101001...
110110010101101001...
110110010101101001...

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

Apstrakcije u programskim jezicima Aplikacioni domeni PJ


Razvijen veliki broj vrlo različitih prog. jezika za različite
• Bazne apstrakcije aplikacione domene:
• Strukturne apstrakcije
• Poslovne aplikacije ( COBOL, SUBP )
• Proceduralne apstrakcije
• Apstrakcije podataka • Numerič
Numeričke aplikacije (FORTRAN)
• Veš
Veštač
tačka inteligencija (logič
(logički i funkcionalni
jezici)

• Sistemsko programiranje ( UNIX napisan u C)


• Jezici za posebne namene
Fakultet organizacionih nauka, Fakultet organizacionih nauka,
Beograd, 2007. Beograd, 2007.

1
von Neumann-
Neumann-ova komjuterska arhitektura von Neumann-
Neumann-ova komjuterska arhitektura

Impertivni jezici baziraju se na von Neumann-


Neumann-ovom modelu Glavne karakteristike imperativnih jezika:
Primer: • Promenljive:
Promenljive: model memorijskih lokacija
Pascal
a := b + c
Asembler • Instrukcija dodeljivanja:
dodeljivanja: promena memorijskih
LOAD r1, b vrednosti
LOAD r2, c
ADD r1, r2
STORE a, r1 • Program je niz instukcija:
instukcija: sekvencijalno
izvrš
zvršavanje instrukcija
Fakultet organizacionih nauka, Fakultet organizacionih nauka,
Beograd, 2007. Beograd, 2007.

Metode programiranja Metode programiranja


• Od 1950 do sredine 60-
60-tih god. proš
prošlog veka:
nepostojanje metoda programiranja • Sredina 80-
80-tih:
Objektno-
Objektno-orjentisano programiranje
• Kraj 60-
60-tih i poč
početak 70-
70-tih god. proš
prošlog veka:
Strukturno programiranje • 1995 do danas:
Proceduralne apstrakcije Distribuirane aplikacije, Web
Web

• Kraj 70-
70-tih:
Apstrakcija podatka (Apstraktni tip podatka)
podatka)

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

Vrste jezika (Jezič


(Jezičke paradigme) Vrste jezika (Jezič
(Jezičke paradigme)

Četiri glavne vrste jezika:


jezika:
Razlike između pojedinih vrsta • Imperativni
programskih jezika baziraju se na
• Objektno-
Objektno-orjentisani
modelu, tj. paradigmi koju podržavaju
• Funkcionalni
• Logič
Logički

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

2
Imperativni jezici Funkcionalni jezici

• Imperativni programski jezici apstrahuju • Funkcionalni jezici baziraju se na


Von Neumann-
Neumann-ovu arhitekturu matematičkim modelima (apstraktnoj
• Program: sekvenca instrukcija notaciji funkcija ), ali su implementirani
• Ključ u von Neumann-ovoj arhitekturi
Ključna opercija:
opercija: dodeljivanje
• Podrž • Program: sadrži funkcije koje uzimaju
Podržava: bazne apstrakcije, strukturne
apstrakcije, argumente i vraćaju vrednosti
apstrakcije, proceduralne apstrakcije
• FORTRAN, COBOL, Pascal, C • Ključna opercija: primena funkcija
(rekurzivno ili kompozitno)

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

Funkcionalni jezici Logič


Logički jezici

• sintaksa:
sintaksa: P1(P2(P3 (X)))
X))) • Program:
Program: skup tvrđenja i pravila
• Funkcionalni jezici: • formalni opis reš
rešenja preko skupa
LISP, Scheme,
Scheme, Haskell logič
logičkih tvrđenja
Logič
Logičko tvrđenje izraž
izražava osobinu o nekom
• Primer LISP
LISP programa objektu; na osnovu tvrđenja program dedukuje
defun factorial (n) druga tvrđenja
(cond ((equal n 1) 1) • Zasniva se na predikatskom rač
računu
(* n (factorial (-
(- n 1))) ) prvog reda

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

Logič
Logički jezici Logič
Logički jezici
• Sintaksa programa:
programa:
Primer Prolog programa:
Odgovor :- specifikacija pravila muskarac(aleksandar).
a : - b, c, d muskarac(goran).
zena(ana).
a je tač
tačno, ako je (b
(b i c i d) tač
tačno zena(vesna).
• Ključ
Ključna operacija: unifikacija roditelji(goran,vesna,aleksandar).
(izjednač
izjednačavanje)
avanje) roditelji(ana,vesna,aleksandar).

• Logič
Logički jezici: sestra(X,Y):- zena(X),
Prolog (PROgramming
(PROgramming in LOGic),
LOGic), roditelji(X,M,Z),
roditelji(Y,M,Z).
Datalog
Fakultet organizacionih nauka, Fakultet organizacionih nauka,
Beograd, 2007. Beograd, 2007.

3
Objektno-
Objektno-orjentisani jezici Objektno-
Objektno-orjentisani jezici

• Objektno-orjentisana paradigma • Ključ


Ključne karakteristike:
karakteristike: apstraktni tipovi
 osnovni koncept: objekat podataka, nasleđ
nasleđivanje, polimorfizam
 ekstenzija imperativne paradigme • Ključ
Ključna operacija: prenoš
prenošenje poruka
• Program: komunikacija između grupe • O-O jezici:
objekata (svaki ima sopstvenu memoriju Simula,
Simula, Smalltolk,
Smalltolk, C++, Java, C#
za podatke i sopstvene metode)
Objekti se grupišu u klase
Objekat je izvršna instanca klase

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

Ostale vrste jezika Specifikacija programskih jezika

• “Script”
Script” jezici
• Najraniji: komandni jezici (shell)
• Web script jezici: JavaScript,
JavaScript, PHP
• Sintaksa
• “Markup”
Markup” jezici
• HTML (HyperText
(HyperText Markup Language)
Language) • Semantika
• XML ( Extensible Markup Language )
• Upitni jezici
• Jezici za specifikaciju i modelovanje
• UML (Unified Modeling Language)
Language
Fakultet organizacionih nauka, Fakultet organizacionih nauka,
Beograd, 2007. Beograd, 2007.

Specifikacija programskih jezika Specifikacija PJ: Sintaksa

• Sintaksa
definiš
definiše pravila za pisanje korektnih • Leksička specifikacija
programa u programskom jeziku
• Sintaksna specifikacija
• Semantika
definiš
definiše pravila koja programima
napisanim na datom programskom
jeziku daju značznačenje,
enje, tj. definiš
definiše
efekat izvrš
izvršenja programa
Fakultet organizacionih nauka, Fakultet organizacionih nauka,
Beograd, 2007. Beograd, 2007.

4
Primer prevođenja teksta programa u niz
Leksič
Leksička specifikacija tokena
• Za opis atomskih sintaksnih jedinica
(tokena)
tokena) koristi se leksič
leksička specifikacija if Ključ
Ključna reč
reč
(regularni izrazi)
izrazi)
if (x > 20)
20) ( Otvorena zagrada
x Identifikator
• Tokeni u PJ su: break;
 Identifikatori > Operator
 Ključ
Ključne reč
reči 20 Num. konstanta
 Operatori ) Zatvorena zagrada
 Numerič
Numeričke konstante
 Specijalni znaci (zagrade, separatori, ..) break Ključ
Ključna reč
reč
. . . ; Separator
Fakultet organizacionih nauka, Fakultet organizacionih nauka,
Beograd, 2007. Beograd, 2007.

Leksič
Leksički analizator Sintaksa specifikacija PJ

• Leksički analizator (skener) prepoznaje • Za formalni opis sintakse PJ koriste se


tokene u ulaznom tekstu kontek
konteksno-
sno-slobodne gramatike (Contex
Free Grammars)
Grammars)
• Faza Leksička analiza u procesu
translacije programa • BNF (Backus
(Backus--Naur form)
form)
 CFG obič
obično se zapisuju u BNF notaciji.
notaciji.
• LEX – softverski alat za generisanje  Formalna notacija za opis sintakse jezika.
skenera  BNF prvi put koriš
korišćenja za opis sintakse
programskogh jezika ALGOL 60.
Fakultet organizacionih nauka, Fakultet organizacionih nauka,
Beograd, 2007. Beograd, 2007.

BNF notacija BNF notacija


• BNF je meta jezik za programske jezike
• Sintaksa se specificira korišćenjem:
Produkciono pravilo u BNF notaciji:
 Skupa terminala (tokena)
 Skupa neterminala
N ::= α
 Skupa produkcionih pravila N - neterminal
 Starni simbol α - sekvenca terminala i neterminala
 BNF koristi apstrakcije za sintaksne strukture koje
se često nazivaju neterminali

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

5
BNF notacija Parsna stabla
if-
if-instrukcija
instrukcija u C mož
može se opisati pomoć
pomoću
sledeć
sledećeg pravila • Atraktivna karakteristika gramatika
gramatika je
da opisuju
opisuju hijerarhijsku sintaksnu
<if- instrukcija> -> if ( <logicki-
<if-instrukcija izraz> ) <instrukcija>
logicki-izraz> instrukcija> strukturu jezika.
jezika.
[ else <instrukcija> ]
• Takve hijerarhijske strukture nazivaju se
 <if-instrukcija>: apstrakcija koja se definiš
<if-instrukcija definiše parsnim stablima.
stablima.
strelice: definicija apstrakcije, tj. pravilo
 Tekst desno od strelice:
koja se sastoji iz tokena i neterminala (refenci na druge
apstrakcije)
apstrakcije)

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

Primer parsnog stabla za: d := d + 10 Sintaksni analizatori (parseri


(parseri))
1 2 3
Expression := Expression Op primary-Exp • Parser je program koji, na osnovu
gramatike, proverava da li je data
Expression
sekvenca tokena ispravna ili ne i
1 3 generiše stablo izvođenja
Expression
primary-Exp • Faza Sintaksne analize u procesu
2
translacije
Ident Op Int-Lit • Softverski alati za generisanje parsera -
YACC
d + 10

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

Specifikacija PJ: Semantika Implementacione metode


• Semantiku ili znač
značenje jezika je teš
teško • Kompajleri
precizno i formalno opisati, jer se mož
može
opisati na viš
više različ
različitih nač
načina
• Interpreteri
• Neformalni pristup
• Pristupi za fomalni opis semantike
 Operaciona semantika • Hibridni implementacioni sistemi
 Translaciona semantika Kompromis između kompajlera i interpretera
 Aksiomatska definicija jezika
 Denotaciona semantika

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

6
Implementacione metode: Struktura
Implementacione metode:
metode: Kompajleri
kompajlera
ompajlera
• Kompajleri:
Kompajleri: programi koji prevode programe
napisane u izvornom kodu u izvrš
izvršni kod

 FORTRAN, C, COBOL, ADA

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

Implementacione metode:
metode: Interpreteri Imlementacione metode: Interpreteri
• Interpreter:
Interpreter: program napisan u
izvornom kodu interpretira se pomoć
pomoću
drugog programa – interpretera
(softverska simulacija maš
mašine)

 LISP, APL, SNOBOL,


 Web script jezici: JavaScript,
JavaScript, PHP

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

Imlementacione metode: Interpreteri Implementacione metode: hibridni


implementacioni sistemi
Web-Client
Database
Web-Server Server • Hibridni:
Hibridni: prevode programe napisane
HTML-Form
(+JavaScript) Submit Call PHP DBMS
u izvornom kodu u međukod
interpreter LAN
Data (intermediate code)
code) koji omoguć
omogućava
PHP SQL
Web-Browser WWW Script commands laku interpretaciju
Response Response Database
Reply Output
• Java byte code – međukod;
međukod;
interpretacija na JVM (Java Virtual
Machine)
Machine)

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

7
Implementacione metode: hibridni Implementacione metode:
metode: Just-
Just-in-
in-time
implementacioni sistem sistemi
Compilation

Source
Source Language
Language MSIL
MSIL
Code
Code Compiler
Compiler Metadata
Metadata
Neki od .NET jezika (C#,
VB.NET, J#, …)

Execution
Native
Native JIT
JIT
Code
Code Compiler
Compiler

Just-in-time kompajler - prevodi MSIL (Microsoft


Intermediate language)
language) u maš
mašnski
nski jezik
Fakultet organizacionih nauka, Fakultet organizacionih nauka,
Beograd, 2007. Beograd, 2007.

Implementacione metode:
metode: .NET izvrš
izvršni
model
Programerska okruž
okruženja
Source
code
VB C# C++  Programersko okruž
okruženje je kolekcija
Compiler Compiler Compiler alata koja se koristi u razvoju softvera
Managed Assembly Assembly Assembly – kolekcija mož
može da sadrž
sadrži samo tekst-
tekst-editor,
IL Code IL Code IL Code
code linker i kompajler
– ili to mož
može da bude kolekcija integrisanih
Common Language Runtime
alata, tako da se svakom pristupa preko
JIT Compiler uniformnog korisnič
korisničkog interfejsa

Native Code

Operating System Services


Fakultet organizacionih nauka, Fakultet organizacionih nauka,
Beograd, 2007. Beograd, 2007.

Programerska okruž
okruženja .NET Framework – novo razvojno i izvrš
izvršno
okruž
okruženje
Primeri
• UNIX – starije prog.
prog. okruž
okruženje;
enje; grafič
rafički korisnič
korisnički C#.NET VB.NET C++.NET JScript.NET ...

interfejs bio je glavni nedostatak. Common Type System - CTS Common Language Specification - CLS

• JBuilder – prog.
prog. okruž
okruženje koje uključ
uključuje Tehnologija za razvoj aplikacija
(Web Service, Web Forms, Windows Forms, Console Applications)
kolekciju integrisnih alata za razvoj Java aplikacija;
Class Libraries – Data and XML classes
pristup alatima preko grafič
grafičkog korisnič
korisničkog interfejsa (ADO.NET, SQL, XSLT, XPath, XML, ...)

• Microsoft Visual Studio .NET – najnovije Base Class Libraries – BCL


(IO, string, net, Security, Threading, text, Reflection, Collection, ...)
softversko razvojno okruž
okruženje Common Language Runtime – CLR
Koristi se za razvoj softvera u jednom od sledeć
sledećih pet (compiling, debbuging, type checking, JIT compilers, execution, exception)

.NET jezika: C#, Visual BASIC.NET, Jscript,


Jscript, J#,
managed C++

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

8
Kriterijumi za ocenu PJ Čitljivost i razumevanje programa
• Čitljivost Faktori koji utič
utiču na čitljivost:
• Lakoć
Lakoća učučenja i pisanja
• Jednostavnost
• Pouzdanost
jasne jezič
jezičke konstrukcije, svaka sa jedinstvenim
• Cena znač
značenjem
• Kontrolne strukture
• Tipovi i strukture podataka

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

Lako uč
učenje i pisanje programa u PJ Pouzdanost programa

Faktori koji utič


utiču na lakoć učenja i pisanja:
lakoću uč Faktori koji utič
utiču na pouzdanost:

• Jednostavnost • Provera tipa (Type


(Type Checking)
Checking)
• Podrš
Podrška apstrakcija – ključ
ključni aspekt • Obrada greš
grešaka (Exception
(Exception handling)
handling)
• Programersko okruž
okruženje • Ogranič
Ograničavanje alijasa (Aliasing)
• Čitljivost; lakoć
lakoća uč
učenja i pisanja

Fakultet organizacionih nauka, Fakultet organizacionih nauka,


Beograd, 2007. Beograd, 2007.

Cena Znač
Značaj izuč
izučavanja koncepata PJ

Ukupna cena projektovanja i implementacije • Lakše i brže učenje novih jezika


programa u pj je funkcija viš
više faktora: • Bolji izbor odgovarajućeg jezika za određeni
problem
• Cena obuke programera • Novi načini razmišljanja u rešavanju
• Cena/vreme pisanja programa problema
• Kompilacija • Bolje razumevanje važnosti implementacije
• Izvrš
Izvršavanje • Definisanje i implementacija sopstvenih
programskih jezika
• Pouzdanost
• Primena teorije o kompajlerima u
• Održ
Održavanje aplikativnom softveru (gde god se zahteva
obrada netrivijalnog ulaznog teksta )
Fakultet organizacionih nauka, Fakultet organizacionih nauka,
Beograd, 2007. Beograd, 2007.

Vous aimerez peut-être aussi