You are on page 1of 65

PROGRAMSKI

JEZICI
Uvod
u
programske jezike
Dr Milica Vukovi
Fakultet organizacionih nauka,
Beograd, 2007.

Broj programskih jezika


Veliki broj razliitih programskih jezika je
razvijen
i implentiran (preko 8000
programskih jezika - podatak iz 2006 )
Fortran, Cobol, Simula, Pascal, Algol, Modula2, PHP, Visual Basic, Lisp, Prolog, Smalltalk,
Java, JavaScript, C, C++, C# , ... ...

Fakultet organizacionih nauka,


Beograd, 2007.

Znaajni uticaji na razvoj


programskih jezika

Apstraktni nivoi jezika


Aplikacioni domeni
Komjuterske arhitekture
Jezike paradigme
Implementacioni modeli

Fakultet organizacionih nauka,


Beograd, 2007.

Apstraktni nivoi programskih jezika


vii programski jezik

nii programski jezik


(asemblerski jezik)

izvrni mainski kod

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...

Fakultet organizacionih nauka,


Beograd, 2007.

Apstrakcije u viim programskim


jezicima
Bazne apstrakcije
Strukturne apstrakcije
Proceduralne apstrakcije
Apstrakcije podataka

Fakultet organizacionih nauka,


Beograd, 2007.

Apstrakcije u programskim jezicima


Bazne apstrakcije
apstrahovanje memorijskih elija, interne reperezentacije
primirtivnih tipova podataka i implementacije operacija nad
vrednostima tipova

Strukturne apstrakcije
- Struktuirani tipovi podataka (apstrahovanje kolekcija
meusobno povezanih podataka niz, zapis, lista)
- Kontrolne strukture (sekvenca, selekcija, iteracija)

Fakultet organizacionih nauka,


Beograd, 2007.

Apstrakcije u programskim jezicima


Proceduralne apstrakcije
Sakrivanje sloenog koda sa prostim interfejsom
proceduralne apstrakcije u viim PJ podrane su potprogramima
i proceudrama

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

Fakultet organizacionih nauka,


Beograd, 2007.

Aplikacioni domeni PJ
Razvijen
veliki
broj
vrlo
razliitih
programskih jezika za razliite aplikacione
domene.
domene

Aplikacioni domeni imaju karakteristine


potrebe

Fakultet organizacionih nauka,


Beograd, 2007.

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.

von Neumann-ova komjuterska


arhitektura
Impertivni jezici baziraju se na von Neumann-ovom modelu
Primer:Pascal

a := b + c
Asembler

LOAD r1, b
LOAD r2, c
ADD r1, r2
STORE a, r1

Fakultet organizacionih nauka,


Beograd, 2007.

von Neumann-ova komjuterska


arhitektura
Glavne karakteristike imperativnih jezika:

Promenljive:
lokacija

model

Instrukcija
dodeljivanja:
memorijskih vrednosti

Program
je
niz
instukcija:
sekvencijalno izvravanje instrukcija
Fakultet organizacionih nauka,
Beograd, 2007.

memorijskih
promena

Metode programiranja i njihov uticaj na


razvoj viih PJ
Od 1950 do sredine 60-tih god. prolog
veka: nepostojanje metoda programiranja
-

proste aplikacije

glavna briga efikasnost koda


stariji programski jezici FORTRAN, COBOL)

Fakultet organizacionih nauka,


Beograd, 2007.

Metode programiranja i njihov uticaj na


razvoj viih PJ
Kraj 60-tih i poetak 70-tih god. prolog
veka: glavna briga produktivnost u programiranju
(bzo i lako pisanje razumljivih programa)

- 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.

Vrste jezika (Jezike paradigme)

Razlike izmeu pojedinih vrsta


programskih jezika baziraju se na
modelu,
tj.
paradigmi
koju
podravaju

Fakultet organizacionih nauka,


Beograd, 2007.

Vrste jezika (Jezike paradigme)


etiri glavne vrste jezika:

Imperativni

Objektno-orjentisani
Funkcionalni
Logiki

Fakultet organizacionih nauka,


Beograd, 2007.

Imperativni jezici
Imperativni programski jezici apstrahuju
Von Neumann-ovu arhitekturu
Program: sekvenca instrukcija
Kljuna opercija: dodeljivanje

Fakultet organizacionih nauka,


Beograd, 2007.

Imperativni jezici
Podrava: bazne apstrakcije, strukturne
apstrakcije, proceduralne apstrakcije
FORTRAN, COBOL, Pascal, C

Fakultet organizacionih nauka,


Beograd, 2007.

Funkcionalni jezici
Funkcionalni jezici baziraju se na
matematikim modelima (apstraktnoj
notaciji funkcija ), ali su implementirani
u von Neumann-ovoj arhitekturi

Fakultet organizacionih nauka,


Beograd, 2007.

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

defun factorial (n)


(cond ((equal n 1) 1)
(* n (factorial (- n 1))) )
Funkcionalni jezici:
LISP, Scheme, Haskell
Fakultet organizacionih nauka,
Beograd, 2007.

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

Fakultet organizacionih nauka,


Beograd, 2007.

Objektno-orjentisani jezici
Objektno-orjentisana paradigma
9 osnovni koncept: objekat

9 Objekti se grupiu u klase


9 Objekat je izvrna instanca klase

9 ekstenzija imperativne paradigme

Fakultet organizacionih nauka,


Beograd, 2007.

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

Ostale vrste jezika


Script jezici
Najraniji: komandni jezici (shell)
Web script jezici: JavaScript, PHP

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.

Specifikacija programskih jezika

Sintaksa
Semantika

Fakultet organizacionih nauka,


Beograd, 2007.

Specifikacija programskih jezika


Sintaksa
definie pravila za pisanje korektnih
programa u programskom jeziku
sintaksa jezika
gramatike

se

opisuje

Semantika
znaenje jezika
Fakultet organizacionih nauka,
Beograd, 2007.

pomou

Specifikacija PJ: Sintaksa


Leksika specifikacija
Sintaksna specifikacija

Fakultet organizacionih nauka,


Beograd, 2007.

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.

Primer prevoenja teksta programa u niz


tokena

if (x > 20)
break;

if

Kljuna re

(
x
>
20
)
break
;

Otvorena zagrada
Identifikator
Operator
Num. konstanta
Zatvorena zagrada
Kljuna re
Separator

Fakultet organizacionih nauka,


Beograd, 2007.

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

- sekvenca terminala i neterminala


Fakultet organizacionih nauka,
Beograd, 2007.

BNF notacija
if-instrukcija u
sledeeg pravila

C moe se opisati pomou

<if-instrukcija> -> if ( <logicki-izraz> ) <instrukcija>


[ else <instrukcija> ]
<if-instrukcija>: apstrakcija koja se definie
9 Tekst desno od strelice: definicija pravila koje se sastoji
iz tokena i neterminala (refenci na druge apstrakcije)
9

Fakultet organizacionih nauka,


Beograd, 2007.

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.

Primer parsnog stabla za


num * ( num + num )
U prasnom stablu
svaki interni vor je neterminal,

<expr>
<expr>
expr

num

<op>

<expr>
expr

njegova deca su desni deo


pravila za taj neterminal

<expr>
expr
<expr>
expr <op>

num

<expr>
expr

num

Fakultet organizacionih nauka,


Beograd, 2007.

Sintaksni analizatori (parseri)


Parser je program koji, na osnovu gramatike,
proverava da li je data sekvenca tokena
ispravna ili ne, i generie parsno stablo
Sintaksna analiza je faza u procesu translacije
u kojoj se provera da li je program napisan skaldu sa
gramatikom jezika

Softverski alati za generisanje parsera - YACC


Fakultet organizacionih nauka,
Beograd, 2007.

Specifikacija PJ: Semantika


Semantiku ili znaenje
jezika je teko
precizno i formalno opisati, jer se moe
opisati na vie razliitih naina
Neformalni pristup
Pristupi za fomalni opis semantike
9
9
9
9

Operaciona semantika
Translaciona semantika
Aksiomatska definicija jezika
Denotaciona semantika

Fakultet organizacionih nauka,


Beograd, 2007.

Implementacione metode
Kompajleri
Interpreteri
Hibridni implementacioni sistemi

Fakultet organizacionih nauka,


Beograd, 2007.

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: Struktura


kompajlera

Fakultet organizacionih nauka,


Beograd, 2007.

Implementacione metode:
Interpreteri
Interpreter: program napisan u izvornom
kodu interpretira se pomou drugog
programa

interpretera
(softverska
simulacija maine)
- sporo izvravanje
-

brz razvoj programa i laka obrada greaka


koje se javljaju u toku izvravanja programa
LISP, APL, SNOBOL,
Web script jezici: JavaScript, PHP
Fakultet organizacionih nauka,
Beograd, 2007.

Implementacione metode:
Interpreteri

Fakultet organizacionih nauka,


Beograd, 2007.

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

Fakultet organizacionih nauka,


Beograd, 2007.

LAN

DBMS
SQL
commands
Database
Output

Implementacione metode: hibridni


implementacioni sistemi
Hibridni: prevode programe napisane u
izvornom kodu u meukod (intermediate
code) koji omoguava laku interpretaciju
Java
byte
code

meukod;
interpretacija na JVM (Java Virtual
Machine)

Fakultet organizacionih nauka,


Beograd, 2007.

Implementacione metode: hibridni


implementacioni sistem

Fakultet organizacionih nauka,


Beograd, 2007.

Implementacione metode: Just-in-time


sistemi
Compilation
Source
Source
Code
Code

Language
Language
Compiler
Compiler

MSIL
MSIL
Metadata
Metadata

Neki od .NET jezika (C#,


VB.NET, J#, )

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

Implementacione metode: .NET izvrni


model
Source code

Managed
code

VB

C#

C++

Compiler

Compiler

Compiler

Assembly
IL Code

Assembly
IL Code

Assembly
IL Code

Common Language Runtime


JIT Compiler
Native Code

Operating System Services


Fakultet organizacionih nauka,
Beograd, 2007.

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:

UNIX starije prog. okruenje; grafiki korisniki


interfejs bio je glavni nedostatak.

JBuilder prog. okruenje koje ukljuuje kolekciju


integrisnih alata za razvoj Java aplikacija; pristup
alatima preko grafikog korisnikog interfejsa

Microsoft Visual Studio .NET najnovije


softversko razvojno okruenje
Koristi se za razvoj softvera u jednom od sledeih pet
.NET jezika: C#, Visual BASIC.NET, Jscript, J#,
managed C++
Fakultet organizacionih nauka,
Beograd, 2007.

.NET Framework novo razvojno i izvrno


okruenje
C#.NET

VB.NET

C++.NET

Common Type System - CTS

JScript.NET

...

Common Language Specification - CLS

Tehnologija za razvoj aplikacija


(Web Service, Web Forms, Windows Forms, Console Applications)
Class Libraries Data and XML classes
(ADO.NET, SQL, XSLT, XPath, XML, ...)
Base Class Libraries BCL
(IO, string, net, Security, Threading, text, Reflection, Collection, ...)
Common Language Runtime CLR
(compiling, debbuging, type checking, JIT compilers, execution, exception)

Fakultet organizacionih nauka,


Beograd, 2007.

Kriterijumi za ocenu PJ
itljivost

Lakoa uenja i pisanja


Pouzdanost
Cena

Fakultet organizacionih nauka,


Beograd, 2007.

itljivost i razumevanje programa


Faktori koji utiu na itljivost:
Jednostavnost
jasne jezike konstrukcije, svaka sa jedinstvenim
znaenjem

Kontrolne strukture
Tipovi i strukture podataka
Fakultet organizacionih nauka,
Beograd, 2007.

Lako uenje i pisanje programa u PJ


Faktori koji utiu na lakou uenja i pisanja:

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:

Cena obuke programera


Cena/vreme pisanja programa
Kompilacija
Izvravanje
Pouzdanost
Odravanje
Fakultet organizacionih nauka,
Beograd, 2007.

Znaaj izuavanja koncepata PJ


Lake i bre uenje novih jezika
Bolji izbor odgovarajueg jezika za odreeni
problem
Novi naini
problema

razmiljanja

reavanju

Bolje razumevanje vanosti implementacije


Fakultet organizacionih nauka,
Beograd, 2007.

Znaaj izuavanja koncepata PJ


Definisanje i implementacija sopstvenih
programskih jezika
Primena
teorije o kompajlerima u
aplikativnom softveru (gde god se zahteva
obrada netrivijalnog ulaznog teksta )

Fakultet organizacionih nauka,


Beograd, 2007.

You might also like