Professional Documents
Culture Documents
PJ Toxic
PJ Toxic
JEZICI
Uvod
u
programske jezike
Dr Milica Vukovi
Fakultet organizacionih nauka,
Beograd, 2007.
class
classTrougao
Trougao{{
......
float
floatp()
p()
return
return b*h/2;
b*h/2;
}}
LOAD
LOADr1,b
r1,b
LOAD
LOADr2,h
r2,h
MUL
MULr1,r2
r1,r2
DIV
DIV r1,#2
r1,#2
RET
RET
0001001001000101001001001
0001001001000101001001001
110110010101101001
...
110110010101101001...
Strukturne apstrakcije
- Struktuirani tipovi podataka (apstrahovanje kolekcija
meusobno povezanih podataka niz, zapis, lista)
- Kontrolne strukture (sekvenca, selekcija, iteracija)
Apstrakcije podataka
sakrivanje interne reprezentacije korisnikih tipova podataka
pomou skupa operacija (javni interfejs) preko kojih se stanja
objekata tipa jedino mogu menjati
koncept se u savremenim viim PJ implementira preko klase
Aplikacioni domeni PJ
Razvijen
veliki
broj
vrlo
razliitih
programskih jezika za razliite aplikacione
domene.
domene
Aplikacioni domeni PJ
Poslovni domen
COBOL - projektovan za poslovnu obradu podataka
SUBP (sistemi za upravljanje bazama podataka)
Ininjerski domen
FORTRAN - projektovan za precizna numerika
raunanja
Vetaka inteligencija
logiki i funkcionalni jezici
Fakultet organizacionih nauka,
Beograd, 2007.
Aplikacioni domeni PJ
Sistemsko programiranje
operativni sistem UNIX napisan u C
Internet i Web
veoma aktuelan domen; ovo distribuirano i
heterogeno okruenje uticalo je na razvoj
novih jezika koji su posebno pogodni za
njega
primer: XML (eXtensible Markup Language)
Fakultet organizacionih nauka,
Beograd, 2007.
a := b + c
Asembler
LOAD r1, b
LOAD r2, c
ADD r1, r2
STORE a, r1
Promenljive:
lokacija
model
Instrukcija
dodeljivanja:
memorijskih vrednosti
Program
je
niz
instukcija:
sekvencijalno izvravanje instrukcija
Fakultet organizacionih nauka,
Beograd, 2007.
memorijskih
promena
proste aplikacije
- Strukturno programiranje
prva metoda programiranja, sistematian pristup
razvoju razumljivih i korektnih programa
razvijen pj Pascal koji je u potpunosti podravao
koncepte strukturnog programiranja
- Proceduralne apstrakcije
Fakultet organizacionih nauka,
Beograd, 2007.
Metode programiranja
Kraj 70-tih:
Apstrakcija podatka (Apstraktni tip podatka)
Sredina 80-tih:
Objektno-orjentisano programiranje
1995 do danas:
Web, Distribuirane aplikacije
Fakultet organizacionih nauka,
Beograd, 2007.
Imperativni
Objektno-orjentisani
Funkcionalni
Logiki
Imperativni jezici
Imperativni programski jezici apstrahuju
Von Neumann-ovu arhitekturu
Program: sekvenca instrukcija
Kljuna opercija: dodeljivanje
Imperativni jezici
Podrava: bazne apstrakcije, strukturne
apstrakcije, proceduralne apstrakcije
FORTRAN, COBOL, Pascal, C
Funkcionalni jezici
Funkcionalni jezici baziraju se na
matematikim modelima (apstraktnoj
notaciji funkcija ), ali su implementirani
u von Neumann-ovoj arhitekturi
Funkcionalni jezici
Rad sa memorijom imlicitan (nema eksplicitne
deklaracije promenljivih)
Jezik je netipiziran (nema eksplicitnih tipova,
provera tipova vri se tek u vreme izvravanja
programa
Nema eksplicitne naredbe dodeljivanja
Osnovni koncept je funkcija
Fakultet organizacionih nauka,
Beograd, 2007.
Funkcionalni jezici
Program: funkcija
Sintaksa: P1(P2(P3 (X)))
Funkcija se predstavlja listom karaktera, brojeva,
drugih funkcija; lista se zapisuje u paru malih
zagrada.
Kljuna
operacija:
primena
(rekurzivno ili kompozitno)
Fakultet organizacionih nauka,
Beograd, 2007.
funkcije
Funkcionalni jezici
Primer LISP programa
Logiki jezici
Program: skup injenica i pravila
- Cinjenica tvrenje o nekoj osobini objekta ili vezi
izmeu dva ili vie objekta
- Primer:
otac(Petar, Milan)
cinjenica ima znanje Petar je Milanov otac
Fakultet organizacionih nauka,
Beograd, 2007.
Logiki jezici
- Pravilo omoguava izvoenje o postajanju
osobine ili veze, koje se zasniva na
preduslovima
- Primer:
roditelj(X, Y) :- otac(X,Y)
Osoba X je roditelj osobe Y AKO je X otac
osobe Y
Fakultet organizacionih nauka,
Beograd, 2007.
Logiki jezici
Primer Prolog programa:
otac (petar,milan).
majka(vesna,milan).
roditelj(M,D):-majka(M,D).
roditelj(O,D):-otac(O,D).
Izvravanje programa zahteva se zadavanjem pitanja
(predikata):
?- otac(petar,milan)
yes
?- otac(petar,X)
milan
Fakultet organizacionih nauka,
Beograd, 2007.
Logiki jezici
Kljuna operacija: unifikacija (izjednaavanje)
Unifikacijom
se
izjednaavaju
vrednosti
promenljivih odnosno konstanti na istoj poziciji
istog predikata.
?- otac(petar,X)
milan
Postoji predikat otac(petar, milan), pa se X
unifikuje sa milan
Fakultet organizacionih nauka,
Beograd, 2007.
Logiki jezici
Logiki jezici:
Prolog (PROgramming in LOGic),
Datalog
Objektno-orjentisani jezici
Objektno-orjentisana paradigma
9 osnovni koncept: objekat
Objektno-orjentisani jezici
Program: komunikacija porukama izmeu grupe
objekata
Kljuna operacija: prenoenje poruka
Kljune
karakteristike:
apstraktni
podataka, nasleivanje, polimorfizam
O-O jezici:
Simula, Smalltolk, C++, Java, C#
Fakultet organizacionih nauka,
Beograd, 2007.
tipovi
Markup jezici
HTML (HyperText Markup Language)
XML ( eXtensible Markup Language )
Upitni jezici
Jezici za specifikaciju i modelovanje
UML (Unified Modeling Language)
Language
Fakultet organizacionih nauka,
Beograd, 2007.
Sintaksa
Semantika
se
opisuje
Semantika
znaenje jezika
Fakultet organizacionih nauka,
Beograd, 2007.
pomou
Leksika specifikacija
Za opis atomskih sintaksnih jedinica
(tokena) koristi se leksika specifikacija
(tzv. regularni izrazi)
Tokeni u PJ su:
9 Identifikatori
9 Kljune rei
9 Operatori
9 Numerike konstante
9 Specijalni znaci (zagrade, separatori, ..)
. . .
Fakultet organizacionih nauka,
Beograd, 2007.
if (x > 20)
break;
if
Kljuna re
(
x
>
20
)
break
;
Otvorena zagrada
Identifikator
Operator
Num. konstanta
Zatvorena zagrada
Kljuna re
Separator
Leksiki analizator
Leksiki analizator (skener) prepoznaje
tokene u ulaznom tekstu
Leksika analiza je faza u procesu
translacije programa
LEX softverski alat za generisanje
skenera
Fakultet organizacionih nauka,
Beograd, 2007.
Sintaksa specifikacija PJ
Za formalni opis sintakse PJ koriste se
konteksno-slobodne gramatike (Contex
Free Grammars)
BNF (Backus-Naur form)
9 CFG obino se zapisuju u BNF notaciji.
9 Formalna notacija za opis sintakse jezika.
9 BNF prvi put korienja za opis sintakse
programskogh jezika ALGOL 60.
Fakultet organizacionih nauka,
Beograd, 2007.
BNF notacija
BNF je meta jezik za programske jezike
Sintaksa se specificira korienjem:
9 Skupa terminala (tokena)
9 Skupa neterminala
9 Skupa produkcionih pravila
9 Startni simbol
BNF koristi apstrakcije za sintaksne strukture koje
se esto nazivaju neterminali
Fakultet organizacionih nauka,
Beograd, 2007.
BNF notacija
Produkciono pravilo u BNF notaciji:
N ::=
N - neterminal
BNF notacija
if-instrukcija u
sledeeg pravila
Parsna stabla
Atraktivna karakteristika gramatika je da opisuju
hijerarhijsku sintaksnu strukturu jezika.
Takve hijerarhijske strukture nazivaju se parsnim
stablima
Parsno stablo reprezentuje sintaksnu strukturu
programa
Fakultet organizacionih nauka,
Beograd, 2007.
<expr>
<expr>
expr
num
<op>
<expr>
expr
<expr>
expr
<expr>
expr <op>
num
<expr>
expr
num
Operaciona semantika
Translaciona semantika
Aksiomatska definicija jezika
Denotaciona semantika
Implementacione metode
Kompajleri
Interpreteri
Hibridni implementacioni sistemi
Implementacione metode:
Kompajleri
Kompajleri: programi koji prevode programe
napisane u izvornom kodu u izvrni kod
- brzo izvravanje
- sporija obrada greaka koje se javljaju
izvravanja programa
- FORTRAN, C, COBOL, ADA
Fakultet organizacionih nauka,
Beograd, 2007.
u toku
Implementacione metode:
Interpreteri
Interpreter: program napisan u izvornom
kodu interpretira se pomou drugog
programa
interpretera
(softverska
simulacija maine)
- sporo izvravanje
-
Implementacione metode:
Interpreteri
Implementacione metode:
Interpreteri
Web-Client
Database
Server
Web-Server
HTML-Form
(+JavaScript)
Web-Browser
Reply
Call PHP
interpreter
Submit
Data
WWW
Response
PHP
Script
Response
LAN
DBMS
SQL
commands
Database
Output
meukod;
interpretacija na JVM (Java Virtual
Machine)
Language
Language
Compiler
Compiler
MSIL
MSIL
Metadata
Metadata
Execution
Native
Native
Code
Code
JIT
JIT
Compiler
Compiler
Just-in-time
kompajler - prevodi
Intermediate language) u manski jezik
Fakultet organizacionih nauka,
Beograd, 2007.
MSIL
(Microsoft
Managed
code
VB
C#
C++
Compiler
Compiler
Compiler
Assembly
IL Code
Assembly
IL Code
Assembly
IL Code
Programerska okruenja
Programersko okruenje je kolekcija alata
koja se koristi u razvoju softvera
kolekcija moe da sadri samo tekst-editor,
linker i kompajler
ili to moe da bude kolekcija integrisanih
alata, tako da se svakom pristupa preko
uniformnog korisnikog interfejsa
Fakultet organizacionih nauka,
Beograd, 2007.
Programerska okruenja
Primeri:
VB.NET
C++.NET
JScript.NET
...
Kriterijumi za ocenu PJ
itljivost
Kontrolne strukture
Tipovi i strukture podataka
Fakultet organizacionih nauka,
Beograd, 2007.
Jednostavnost
Podrka apstrakcija koje omoguavaju
viestruko korienje ve napisanog koda
Programersko okruenje
Fakultet organizacionih nauka,
Beograd, 2007.
Pouzdanost programa
Faktori koji utiu na pouzdanost:
Provera tipa (Type Checking)
Obrada greaka (Exception handling)
Ograniavanje alijasa (Aliasing)
itljivost; lakoa uenja i pisanja
Fakultet organizacionih nauka,
Beograd, 2007.
Cena
Ukupna cena projektovanja i implementacije
programa u pj je funkcija vie faktora:
razmiljanja
reavanju