Programski jezici

25
Programski Programski jezici jezici proleće/leto 2008

Transcript of Programski jezici

Page 1: Programski jezici

Programski Programski jezicijezici

proleće/leto 2008

Page 2: Programski jezici

Pregled programskih Pregled programskih jezikajezika

Jezik služi za komunikaciju između entiteta

Pomoću jezika se predstavljaju i prenose informacije

Podela jezika:◦Prirodni jezici◦Veštački jezici

Dejan Živković Programski jezici 2

Page 3: Programski jezici

Pregled Pregled programskih jezikaprogramskih jezika str2str2

Prirodni jezik se koristi za komunikaciju između ljudi u govornoj ili pisanoj formi

Programski jezik je veštački jezik Programski jezik služi za

komunikaciju između čoveka i računara. (Ponekad se koristi i za komunikaciju između ljudi!)

Dejan Živković Programski jezici 3

Page 4: Programski jezici

Pregled Pregled programskih jezikaprogramskih jezika str3str3

Programski jezik služi za opis programa, a preko programa se obavlja komunikacija između čoveka i računara

Programski jezici su jednoznačni (za razliku od prirodnih koji mogu biti dvosmisleni)

Poželjne osobine programskih jezika su: jednostavnost, izražajnost, rasprostranjenost, efikasnost, …

Dejan Živković Programski jezici 4

Page 5: Programski jezici

Pregled Pregled programskih jezikaprogramskih jezika str4str4

Sintaksa — skup pravila za određivanje pravilnih konstrukcija jezika

Semantika — određuje značenje sintaksno-ispravnih konstrukcija jezika

Dejan Živković Programski jezici 5

Page 6: Programski jezici

Pregled Pregled programskih jezikaprogramskih jezika str5str5

Nekoliko hiljada programskih jezika do sada

Kriterijumi za klasifikaciju programskih jezika:

◦ Stepen zavisnosti od računara◦ Vreme nastanka◦ Oblast primene◦ Način rešavanja problema

Dejan Živković Programski jezici 6

Page 7: Programski jezici

Klasifikacija prema Klasifikacija prema stepenu zavisnosti od stepenu zavisnosti od računararačunara

Dejan Živković Programski jezici 7

Programski jezici (PJ)

Mašinski zavisni PJ Mašinski nezavisni PJ (Viši PJ)

Mašinski jeziciProceduralno orijentisani PJ

Problemski orijentisani PJSimbolički (asemblerski) PJ

Page 8: Programski jezici

Klasifikacija prema Klasifikacija prema vremenu nastankavremenu nastanka

Dejan Živković Programski jezici 8

Programski jezici

I generacija

Mašinski i asemblerski PJ

II generacija

FORTRAN, COBOL,LISP,BASIC, PL/1, ...

III generacija

Pascal, C, PROLOG, Smalltalk, C++, Java, …

IV generacija

SQL, VisualBasic, …

Page 9: Programski jezici

Klasifikacija prema Klasifikacija prema oblasti primeneoblasti primene

Dejan Živković Programski jezici 9

Programski jezici

Učenje progra-miranja

Pascal, Basic, Logo, …

Razvoj sistem. softvera

C,Modula 2,

Asembler, …

Poslovne primene

COBOL,SQL,RPG , …

Internet

Java, JavaScript, Perl, …

Tehničke primene

FORTRAN,

Algol,APL, …

Page 10: Programski jezici

Klasifikacija prema Klasifikacija prema načinu rešavanja načinu rešavanja problemaproblema

Dejan Živković Programski jezici 10

Programski jezici (PJ)

Proceduralni PJ Neproceduralni PJ

Imperativni PJ

Strukturirani PJ

Objektno orijentisani PJ

Deskriptivni PJ

Funkcionalni PJ

Logički PJ

Page 11: Programski jezici

Razvojno stablo Razvojno stablo programskih jezikaprogramskih jezika

Vreme nastanka pojedinih programskih jezika, kao i međusobni uticaji

Posebno su istaknuti (na narednom slajdu) najznačajniji programski jezici

Dejan Živković Programski jezici 11

Page 12: Programski jezici

stablostablo

Dejan Živković Programski jezici 12

LISP (58-60)Fortran II

60

70

80

90

Planer (66)

MAC LISP (68)

Scheme (75)InterLISP (75)

Common LISP (85)

Fortran IV

Fortran 66

Fortran 77

Fortran 90

Basic

CobolAlgol 60

PascalC

C++

Java

Smalltalk

Pl/I

Modula 2

Oberon

Ada

Prolog

CPL

Simula 67

Visual C++

Visual BASIC

Telos

Euclid

54-56 FORTRAN

00

FP (78)

Miranda (86)

Haskell (88)

ISWIM (66)

Fortran 2000

Page 13: Programski jezici

Prevođenje Prevođenje programskih jezikaprogramskih jezika

Računari mogu da izvršavaju jedino programe na mašinskom jeziku

Mašinski jezik je izražen preko binarne azbuke, tj. izvršni program je zapisan pomoću simbola 0 i 1

Ako je program napisan na nekom višem jeziku (kao što je Java), mora se izvršiti prevođenje na mašinski jezik

Dejan Živković Programski jezici 13

Page 14: Programski jezici

Prevođenje Prevođenje programskih jezikaprogramskih jezika str2str2

Dejan Živković Programski jezici 14

public class Zdravo { public static void main

(String[] args) { System.out.println("Zdravo!"); }}

1001000001010100101010100011111000100101010101000001001100101010101011111001010101010101010001101010101010100000101

izvorni program izvršni program

Page 15: Programski jezici

Prevođenje programskih Prevođenje programskih jezikajezika str3str3

Mašinski jezik je nepogodan za čovekaPrevođenje na mašinski jezik obavljaju

specijalni programiPrevođenje sa mašinski orijentisanih jezika

na mašinski jezik obavljaju asembleriPrevođenje sa viših programskih jezika na

mašinski jezik obavljaju prevodioci (kompajleri) i interpretatori

Dejan Živković Programski jezici 15

Page 16: Programski jezici

Prevođenje Prevođenje mašinski mašinski orijentisanih jezikaorijentisanih jezika

Proces prevođenja sa mašinski orijentisanih jezika na mašinski jezik, koji obavljaju asembleri, naziva se asembliranje

Asembleri prevode izvorni program na mašinski orijentisanom jeziku u međuoblik koji se naziva objektni program

Povezivači povezuju objektni program i odgovarajuće rutine niskog nivoa u izvršni program

Dejan Živković Programski jezici 16

Page 17: Programski jezici

AsembliranjeAsembliranje

Dejan Živković Programski jezici 17

Izvorni program Objektni programAsembler Izvršni programPovezivač

Izveštaj o greškama

Izveštaj o greškama

Page 18: Programski jezici

Prevođenje viših Prevođenje viših programskih jezikaprogramskih jezika

Dva načina za prevođenje izvornih programa sa viših programskih jezika na mašinski jezik:

◦Kompajliranje◦Interpretiranje

Dejan Živković Programski jezici 18

Page 19: Programski jezici

Prevođenje viših Prevođenje viših programskih jezikaprogramskih jezika str2str2

Kompajliranje programa ako su prevođenje programa i izvršavanje programa vremenski odvojeni procesi

Kompajliranje izvode programi koji se nazivaju prevodioci (kompajleri)

Dejan Živković Programski jezici 19

Page 20: Programski jezici

Prevođenje viših Prevođenje viših programskih jezikaprogramskih jezika str3str3

Dejan Živković Programski jezici 20

Izve{taj o gre{kama

Izvorni program Objektni programKompajler

Izveštaj o greškama

Kompajliranje programa

Izvršni programPovezivač

Izveštaj o greškama

Page 21: Programski jezici

Prevođenje viših Prevođenje viših programskih jezikaprogramskih jezika str4str4

Interpretiranje programa ako su prevođenje programa i izvršavanje programa vremenski spojeni procesi u jedan

Interpretiranje izvode programi koji se nazivaju interpretatori

Dejan Živković Programski jezici 21

Page 22: Programski jezici

Prevođenje viših Prevođenje viših programskih jezikaprogramskih jezika str5str5

Dejan Živković Programski jezici 22

Izvorni program Interpretator

Izveštaj o greškama

Ulazni podaci

Rezultati programa

Interpretiranje programa

Page 23: Programski jezici

Struktura Struktura kompajlerakompajlera

Dejan Živković Programski jezici 23

Leksički analizator

Sintaksni analizator

Semantički analizator

Generator međukoda

Optimizator međukoda

Generator koda

Rukovalac tabelama Obrađivač

grešaka

Izvorni program

Prevedeni program

Kompajler

Page 24: Programski jezici

Struktura Struktura interpretatorainterpretatora

Dejan Živković Programski jezici 24

Izvorni program

Ulazni podaci

Rezultati programa

Pripremni blok

Izvršni blok

Obrada nar. Obrada izlaza … Obrada ulaza

Upravljački blok

Izveštaj o greškama

Interpretator

Page 25: Programski jezici

Integrisana radna Integrisana radna okruženjaokruženja

Za mnoge programske jezike postoje kompajleri i interpretatori

Neki programski jezici (Java) su kompajlersko-interpretatorskog tipa

Proizvođači softvera obezbeđuju grafičko radno okruženje koje sadrži niz razvojnih softverskih alata (kompajleri, interpretatori, editori, debageri, ...)

Dejan Živković Programski jezici 25