You are on page 1of 46

Programski jezici

i
prevodioci

Uvod

Milica Vučković

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Uvod

 Značaj izučavanja koncepata PJP


 Aplikacioni domeni
 Sintaksa i semantika PJ
 Kriterijumi za ocenu jezika
 Značajni uticaji na razvoj jezika
 Vrste jezika
 Imlementacione metode
 Programerska okruženja
Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Značaj izučavanja koncepata PJP
 Poboljšanja osnove za izbor podesnih jezika
 Lakše i brže učenje novih jezika
 Uvećavanje mogućnosti za izražavanje ideja
 Bolje razumevanje važnosti implementacije
 Definisanje i implementacija sopstvenih
programskih jezika
 Primena teorije o kompajlerima u
aplikativnom softveru (gde god se zahteva
obrada netrivijalnog ulaznog teksta

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Aplikacioni domeni PJ

 Kompjuteri se primenjuju u mnoštvo


različitih oblasti

 Razvijen veliki broj vrlo različitih prog.


jezika za različite aplikacione domene
(sa karakterističnim potrebama)
 1995. preko 2300 prog. jezika

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Aplikacioni domeni PJ
 Naučne aplikacije
 Poslovne aplikacije
 Veštačka inteligencija
 Sistemsko programiranje
 Jezici za posebne namene

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Specifikacija PJ

 Sintaksa
definiše pravila za pisanje korektnih
programa u programskom jeziku

 Semantika
definiše pravila koja programima
napisanim na datom programskom
jeziku daju značenje , tj. definiše
efekat izvršenja programa
Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Specifikacija PJ: Sintaksa

 Za opis atomskih sintaksnih jedinica


(tokena) koristi se leksička specifikacija
(regularni izrazi)
 Tokeni u PJ obuvataju: rezervisane reči,
operatore-simbole, identifikatore,
numeričke konstante
 Leksička struktura

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Specifikacija PJ: Sintaksa

 Zaformalni opis sintakse PJ koriste se


konteksno-slobodne gramatike

 BNF (Backus-Naur form)


Formalna notacija za opis sintakse jezika;
BNF koristi apstrakcije za sintaksne strukture

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Specifikacija PJ: Sintaksa

 gramatičko pravilo za if-instrukciju u C:


<if-instrukcija> -> if (<izraz>) <instrukcija>
[ else <instrukcija>]

– <if-instrukcija>: apstrakcija koja se


definiše
– Tekst desno od strelice: definicija koja se
sastoji iz tokena i refenci na druge
apstrakcije
Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Specifikacija PJ: Sintaksa

 Gramatika opisuje hijerarhijsku


sintaksnu strukturu jezika.
 Takve hijerarhijske strukture nazivaju se
parsnim stablima.

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Sintaksa PJ: primer parsnog stabla
1 2 3
Expression := Expression Op primary-Exp
Expression

Expression
1
Expression
3
primary-Exp. primary-Exp primary-Exp.

V-name V-name
2
Ident Op Int-Lit Op Ident

d + 10 * d
Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Specifikacija PJ: Semantika
 Semantiku ili značenje jezika je teško
precizno i formalno opisati, jer se može
opisati na više različitih načina
 Neformalni pristup
 Pristupi za fomalni opis semantike
– Operaciona semantika
– Translaciona semantika
– Aksiomatska definicija jezika
– Denotaciona semantika

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Kriterijumi za ocenu jezika

 Čitljivost
 Lakoća pisanja
 Sigurnost
 Cena

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Čitljivost
Koliko je lako čitati i razumeti programe
napisane u programskom jeziku?
Faktori koji utiču na čitljivost:
 Jednostavnost – jasne jezičke konstrukcije, svaka
sa jedinstvenim značenjem
 Uniformnost (ortogonalnost) – svaka
kombinacija karakteristika je smislena i nezavisna od
konteksta
 Fleksibilne kontrolne konstrukcije
 Tipovi i strukture podataka
 Jasna sintaksa
Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Lakoća pisanja
Koliko je lako pisanje programa u
programskom jeziku (za izabrani domen)?
Faktori koji utiču na lakoću pisanja:
 Jednostavnost
 Ortogonalnost
 Podrška apstrakcija
 Programsko okruženje

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Pouzdanost

Faktori koji utiču na pouzdanost:


 Provera tipa (Type Checking)
 Obrada grešaka (Exception handling)
 Ograničavanje alijasa (Aliasing)
 Čitljivost i lakoća pisanja

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Cena
Ukupna cena je funkcija više
karakteristika PJ:
 Obuka programera
 Kreiranje (pisanje) programa
 Kompilacija
 Izvršavanje
 Pouzdanost
 Održavanje

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Značajni uticaji na razvoj jezika

 Kompjuterska arhitektura

 Metode programiranja

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
von Neumann-ova komjuterska arhitektura

Memory (stores both instructions&data)

Results of
Instructions&Data
operations

Arithmetic and Control Input&Ouput


logic unit unit devices

CPU (Central Processing Unit)

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
von Neumann-ova komjuterska arhitektura

 Impertivni jezici baziraju se na von


Neumann-ovom modelu
Glavne karakteristike imperativnih jezika:
 Promenljive –
model memorijskih lokacija
 Instrukcija dodeljivanja –
promena memorijskih vrednosti
 Program je niz instukcija – sekvencijalno
izvršavanje instrukcija

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
von Neumann-ova komjuterska arhitektura

• Primer
Pascal
a := b + c
Asembler
LOAD r1, b
LOAD r2, c
ADD r1, r2
STORE a, r1

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Metode programiranja
 Kraj 60-tih i početak 70-tih god. prošlog
veka: Strukturno programiranje

 Kraj 70-tih: Apstrakcija podatka (Apstraktni


tip podatka)

 Sredina 80-tih: Objektno-orjentisano


programiranje

 1995 do danas: Distribuirane aplikacije, Web


Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Vrste jezika
Četiri glavne vrste jezika:
 Imperativna
 Objektno-orjentisana
 Funkcionalna
 Logička

Razlike između pojedinih vrsta programskih


jezika baziraju se na modelu, tj. paradigmi
koju podržavaju
Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Vrste jezika: Imperativni

 Imperativni programski jezici apstrahuju


Von Neumann-ovu arhitekturu
 Program: sekvenca instrukcija
 Ključna opercija: dodeljivanje
 Podržava: bazne apstrakcije, strukturne
apstrakcije, proceduralne apstrakcije
 FORTRAN, COBOL, Pascal, C

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Vrste jezika: Funkcionalni

• Funkcionalni jezici baziraju se na


matematičkim modelima (apstraktnoj
notaciji funkcija ), ali su implementirani
u von Neumann-ovoj arhitekturi
• Program: sadrži funkcije koje uzimaju
argumente i vraćaju vrednosti
• Ključna opercija: primena funkcija
(rekurzivno ili kompozitno)

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Vrste jezika: Funkcionalni

• sintaksa: P1(P2(P3 (X)))


• Funkcionalni (aplikativni) PJ
– LISP, Scheme, Haskell
• Primer LISP programa
defun factorial (n)
(cond ((equal n 1) 1) (T (* n (factorial (- n 1))))

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Vrste jezika: Logički

 Program: formalni opis rešenja preko


skupa logičkih tvrđenja

 Logičko
tvrđenje izražava osobinu o
nekom objektu; na osnovu tvrđenja
program dedukuje druga tvrđenja

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Vrste jezika: Logički
• Sintaksa programa:
Odgovor :- specifikacija pravila
a : - b, c, d
a je tačno, ako je (b i c i d) tačno
• Ključna operacija: unifikacija (izjednačavanje)
• Logički (deklarativni) PJ
Prolog (PROgramming in LOGic),
Datalog

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Vrste jezika: Logički
• Primer Prolog programa
muskarac(aleksandar).
muskarac(goran).
zena(ana).
zena(vesna).
roditelji(goran,vesna,aleksandar).
roditelji(ana,vesna,aleksandar).

sestra(X,Y):- zena(X),
roditelji(X,M,Z),
roditelji(Y,M,Z).

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Vrste jezika: Objektno-orjentisani

 Objektno-orjentisana paradigma
 osnovni koncept - objekat
 ekstenzija imperativne paradigme

 Program-komunikacija između grupe


objekata (svaki ima sopstvenu memoriju
za podatke i sopstvene metode)
 Objekti se grupišu u klase
 Objekat je izvršna instanca klase

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Vrste jezika: Objektno-orjentisani

 Ključne karakteristike: apstraktni tipovi


podataka, nasleđivanje, polimorfizam
 Ključna operacija: prenošenje poruka
 O-O jezici: Simula, Smalltolk, Java, C#

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
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)

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Implementacione metode
 Kompajleri

 Interpreteri

 Hibridni implementacioni sistemi


 Kompromis između kompajlera i
interpretera

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Implementacione metode: Kompajleri
 Kompajleri: programi koji prevode programe
napisane u izvornom kodu u izvršni kod
 FORTRAN, C, COBOL, ADA

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Implementacione metode: Struktura
kompajlera
Source program

Lexical
analyzer
Lexical units

Syntax
analyzer
Parse trees

Intermediate
Symbol Optimization
code
table
generator

Intermediate
code

Code
generator
Machine
language

Computer Input data

Results

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Implementacione metode: Kompajler

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Implementacione metode:
Interpreteri
 Interpreteri:programi napisani u
izvornom kodu interpretiraju se pomoću
drugog programa – interpretera
(softverska simulacija mašine)
 LISP, APL, SNOBOL,
 Web script jezici: JavaScript, PHP

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Imlementacione metode: Interpreteri

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Imlementacione metode: Interpreteri
Web-Client
Database
Web-Server Server
HTML-Form
(+JavaScript) Submit Call PHP DBMS
Data interpreter LAN

PHP SQL
Web-Browser WWW Script commands
Response Response Database
Reply Output

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Implementacione metode: hibridni
implementacioni sistemi
 Hibridni: prevode programe napisane u
izvornom kodu u međukod (intermediate
code) koji omogućava laku interpretaciju

 Java byte code – međukod;


interpretacija na JVM (Java Virtual
Machine)

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Implementacione metode: hibridni
implementacioni sistem

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Implementacione metode: kompilacija i
izvršavanje
Compilation

Source Language MSIL


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

Execution
Native JIT
Code Compiler

Just-in-time kompajler - prevodi MSIL (Microsoft


Intermediate language) u mašnski jezik
Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Implementacione metode: .NET izvršni
model
Source VB C# C++
code
Compiler Compiler Compiler

Managed Assembly Assembly Assembly


code IL Code IL Code IL Code

Common Language Runtime

JIT Compiler

Native Code

Operating System Services


Programski jezici i prevodioci
Fakultet organizacionih nauka, 2005.
Programerska okruženja

 Programersko okruženje je kolekcija


alata koja se koristi u razvoju softvera
– kolekcija može da sadrži samo tekst-editor,
linker i kompajler
– ili to može da bude kolekcija integrisanih
alata, tako da se svakom se pristupa preko
uniformnog korisničkog interfejsa

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
Programerska okruženja
Primeri
 UNIX – starije prog. okruženje; grafički korisnički
interfejs bio je glavni nedostatak.
 JBuilder – prog. okruženje koje uključuje
kolekciju integrisnih alata za razvoj Java aplikacija;
pristup alatima preko grafičkog korisničkog interfejsa
 Microsoft Visual Studio .NET – najnovije
softversko razvojno okruženje
Koristi se za razvoj softvera u jednom od sledećih pet
.NET jezika: C#, Visual BASIC.NET, Jscript, J#,
managed C++

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.
.NET Framework – novo razvojno i izvršno
okruženje

C#.NET VB.NET C++.NET JScript.NET ...

Common Type System - CTS 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)

Programski jezici i prevodioci


Fakultet organizacionih nauka, 2005.

You might also like