Programski jezici Pregled programskih jezika Jezik slui za

  • Slides: 31
Download presentation
Programski jezici

Programski jezici

Pregled programskih jezika Jezik služi za komunikaciju između entiteta Pomoću jezika se predstavljaju i

Pregled programskih jezika Jezik služi za komunikaciju između entiteta Pomoću jezika se predstavljaju i prenose informacije Podela jezika: ◦ Prirodni jezici ◦ Veštački jezici q. Raša Brajović q. Programski jezici q 2

Pregled programskih jezika str 2 Prirodni jezik se koristi za komunikaciju između ljudi u

Pregled programskih jezika str 2 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!) q. Raša Brajović q. Programski jezici q 3

Pregled programskih jezika str 3 Programski jezik služi za opis programa, a preko programa

Pregled programskih jezika str 3 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, … q. Raša Brajović q. Programski jezici q 4

Pregled programskih jezika str 4 Sintaksa — skup pravila za određivanje pravilnih konstrukcija jezika

Pregled programskih jezika str 4 Sintaksa — skup pravila za određivanje pravilnih konstrukcija jezika Semantika — određuje značenje sintaksno-ispravnih konstrukcija jezika q. Raša Brajović q. Programski jezici q 5

Pregled programskih jezika str 5 Nekoliko hiljada programskih jezika do sada Kriterijumi za klasifikaciju

Pregled programskih jezika str 5 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 q. Raša Brajović q. Programski jezici q 6

Klasifikacija prema stepenu zavisnosti od računara Programski jezici (PJ) Mašinski zavisni PJ Mašinski nezavisni

Klasifikacija prema stepenu zavisnosti od računara Programski jezici (PJ) Mašinski zavisni PJ Mašinski nezavisni PJ (Viši PJ) Mašinski jezici Proceduralno orijentisani PJ Simbolički (asemblerski) PJ Problemski orijentisani PJ q. Raša Brajović q. Programski jezici q 7

Klasifikacija prema stepenu zavisnosti od računara • Interni jezik (mašinski) je najelementarniji pogramski jezik,

Klasifikacija prema stepenu zavisnosti od računara • Interni jezik (mašinski) je najelementarniji pogramski jezik, izradjen je nad binarnom azbukom (simboli 0 i 1). Osnovna komponenta je instrukcija. Instrukciju cine adrese operanada I kod operacije. • Ćelija – Fizički objekat u računaru koji registruje binarnu 0 i 1. One su organizovane u nizove obrazujući memoriju računara. Registar – Organizovani niz ćelija koji ima svoju adresu. Moze predstavljati razlicite varijacije 0 i 1 jer je sadrzaj celije promenljiv. . Binarna reč – Varijacija sastavljena od 0 i 1. Ako je dugacka 8 celija naziva se bajt. Primer. Neka su 2 registra označena sa a i b i neka su njihove adrese, redom: 00111101 i 00011111. Ako je kod operacije sabiranja: 11011011, onda je instrukcija za sabiranje sadržaja registara a i b, na. mašinskom jeziku ima oblik: Kod operacije registra a Adresa registra b 11011011 Adresa 0011110100011111 Niz instrukcija ovakvog tipa obrazuje program na masinskom jeziku. 8 Raša Brajović PROGRAMSKI JEZICI

 • Simbolički (asemblerski) jezici koji su nastali iz mašinskog zamenom koda operacija mnemotehnickom

• Simbolički (asemblerski) jezici koji su nastali iz mašinskog zamenom koda operacija mnemotehnickom skracenicom- mnemokodom i adresa operanada simbolickim adresama. Kodovi operacija I adresa operanada su predstavljeni alfabetskim ili numerickim znacima. . Svakoj instrikciji simbolickog jezika odgovara jedna I samo jedna instrukcija masinskog jezika. Asembler – Najjednostavniji jezički procesor za simbolički jezik. Primer: Instrukcija mašinskog jezika: 110110110011110100011111 U simboličkom jeziku bi mogla biti zapisana na sledeći način: ADDA a, b, 110110 11 PROGRAMSKI JEZICI 00111101 Raša Brajović 00011111 9

Makrojezici – Nastali iz simboličkih jezika dodavanjem makronaredbi. Jednoj makronaredbi odgovara instrukcija na simbolickom

Makrojezici – Nastali iz simboličkih jezika dodavanjem makronaredbi. Jednoj makronaredbi odgovara instrukcija na simbolickom jeziku. Na ovaj nacin se makrojezik priblizava govornom covekovom jeziku olaksavajuci programiranje. Program na makrojeziku se formira tako što se makronaredbe međusobno povezuju simboličkim instrukcijama. Makroasambleri- Prevodioci za makrojezik. PROGRAMSKI JEZICI Raša Brajović 10

 • Proceduralno orijentisani – Pripadaju klasi masinski nezavisnih jezika jer se mogu koristiti

• Proceduralno orijentisani – Pripadaju klasi masinski nezavisnih jezika jer se mogu koristiti na raznim tipovima racunara. Oni omogućavaju opis logaritama i podataka na čoveku razumljiviji način. Sustina je da se pojedini algoritamski koraci zamenjuju naredbama programskog jezika. Npr. Ako treba da učitamo veličine a i b napisaćemo: Read (a, b) Matematički izraz u proceduralnom prog. jeziku: (a+b*c) / d Osobine : • • • Jednostavniji su za upotrebu Programi se zapisuju na prirodniji način Lakši su za učenje Omogućavaju prenosivost programa Izražajniji su • Problemski orijentisani – Ne zahtevaju detaljan opis algoritma, korisnici treba samo precizno da opisu zadatak I unesu odgovarajuce podatke. Navedene podatke prihvata generator program koji obezbedjuje izlazne podatke. • PROGRAMSKI Oni su. JEZICI namenjeni rešavanju problema kao što su: algebra, Raša linearna Brajović 11 statistika, mrežno planiranje, teorija grafova. . .

Neki od programsko orijentisanih programa su: MARS, ARIUS, PROZA, GRAPH, LISP, PROLOG. . .

Neki od programsko orijentisanih programa su: MARS, ARIUS, PROZA, GRAPH, LISP, PROLOG. . . LISP i PROLOG su namenjeni rešavanju problema veštačkie inteligencije. Programski orijentisani jezici su programski jezici najviseg nivoa. Oni najmanje zavise od tehnickih karakteristika racunara na kojima ce se programi kasnije izvrsavati. PROGRAMSKI JEZICI Raša Brajović 12

Klasifikacija prema vremenu nastanka Programski jezici I generacija Mašinski i asemblerski PJ II generacija

Klasifikacija prema vremenu nastanka 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, … q. Raša Brajović IV generacija SQL, Visual. Basic, … q. Programski jezici q 1 3

Klasifikacija prema oblasti primene Programski jezici Učenje programiranja Razvoj sistem. softvera Poslovne primene Internet

Klasifikacija prema oblasti primene Programski jezici Učenje programiranja Razvoj sistem. softvera Poslovne primene Internet Tehničke primene Pascal, Basic, Logo, … C, COBOL, Java, FORTRAN, Modula 2, SQL, Java. Script, Algol, Asembler, … RPG , … Perl, … APL, … q. Raša Brajović q. Programski jezici q 1 4

Klasifikacija prema načinu rešavanja problema Programski jezici (PJ) Proceduralni PJ Neproceduralni PJ Imperativni PJ

Klasifikacija prema načinu rešavanja problema Programski jezici (PJ) Proceduralni PJ Neproceduralni PJ Imperativni PJ Strukturirani PJ Deskriptivni PJ Funkcionalni PJ Logički PJ Objektno orijentisani PJ q. Raša Brajović q. Programski jezici q 1 5

Neproceduralni (deskriptivni) programski jezik: Kod ovog jezika nije primaran opis algoritma On omogućava da

Neproceduralni (deskriptivni) programski jezik: Kod ovog jezika nije primaran opis algoritma On omogućava da se problem opiše, saopšti ŠTA se rešava, pa da sam računar potraži rešenje. Funkcionalni su: LISP, ML, Miranda, Haskell, . . . Logički su: PROLOG( u raznim verzijama), npr. KLO, Mandala, . . . Objektno orijentisani jezik: Simula 67, Smalltalk, C++, Eiffel, Java. . . Proceduralni programski jezik: U njemu se bitno koristi procedura opisana nizom naredbi. Ključno je opisati KAKO se problem rešava. Klasu ovih jezika čine: Pascal, C, FORTRAN, Ada, Modula-2, . . . PROGRAMSKI JEZICI Raša Brajović 16

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

Razvojno stablo programskih jezika Vreme nastanka pojedinih programskih jezika, kao i međusobni uticaji Posebno su istaknuti (na narednom slajdu) najznačajniji programski jezici q. Raša Brajović q. Programski jezici q 1 7

54 -56 FORTRAN Fortran II Cobol Algol 60 60 Basic Fortran IV Fortran 66

54 -56 FORTRAN Fortran II Cobol Algol 60 60 Basic Fortran IV Fortran 66 stablo LISP (58 -60) CPL Planer (66) Pl/I Simula 67 70 Telos Fortran 77 Pascal MAC LISP (68) Prolog C Scheme (75) ISWIM (66) Inter. LISP (75) Euclid Modula 2 80 FP (78) Smalltalk Ada C++ Common LISP (85) Miranda (86) 90 Fortran 90 Visual BASIC 00 Haskell (88) Oberon Fortran 2000 Java Visual C++ q. Raša Brajović q. Programski jezici q 1 8

Prevođenje programskih jezika Računari mogu da izvršavaju jedino programe na mašinskom jeziku Mašinski jezik

Prevođenje programskih 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 q. Raša Brajović q. Programski jezici q 1 9

Prevođenje programskih jezika str 2 izvorni program public class Zdravo { public static void

Prevođenje programskih jezika str 2 izvorni program public class Zdravo { public static void main (String[] args) { System. out. println("Zdravo!"); } } izvršni program 1001000001010101 0001111100010010101 000001001010101 111100101010100 01101010100000101 q. Raša Brajović q. Programski jezici q 2 0

Prevođenje programskih jezika str 3 Mašinski jezik je nepogodan za čoveka Prevođenje na mašinski

Prevođenje programskih jezika str 3 Mašinski jezik je nepogodan za čoveka Prevođenje na mašinski jezik obavljaju specijalni programi Prevođenje sa mašinski orijentisanih jezika na mašinski jezik obavljaju asembleri Prevođenje sa viših programskih jezika na mašinski jezik obavljaju prevodioci (kompajleri) i interpretatori q. Raša Brajović q. Programski jezici q 2 1

Prevođenje mašinski orijentisanih jezika Proces prevođenja sa mašinski orijentisanih jezika na mašinski jezik, koji

Prevođenje mašinski orijentisanih 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 q. Raša Brajović q. Programski jezici q 2 2

Asembliranje Izvorni program Asembler Objektni program Povezivač Izvršni program Izveštaj o greškama q. Raša

Asembliranje Izvorni program Asembler Objektni program Povezivač Izvršni program Izveštaj o greškama q. Raša Brajović q. Programski jezici q 2 3

Prevođenje viših programskih jezika Dva načina za prevođenje izvornih programa sa viših programskih jezika

Prevođenje viših programskih jezika Dva načina za prevođenje izvornih programa sa viših programskih jezika na mašinski jezik: ◦ Kompajliranje ◦ Interpretiranje q. Raša Brajović q. Programski jezici q 2 4

Prevođenje viših programskih jezika str 2 Kompajliranje programa ako su prevođenje programa i izvršavanje

Prevođenje viših programskih jezika str 2 Kompajliranje programa ako su prevođenje programa i izvršavanje programa vremenski odvojeni procesi Kompajliranje izvode programi koji se nazivaju prevodioci (kompajleri) q. Raša Brajović q. Programski jezici q 2 5

Prevođenje viših programskih jezika str 3 Kompajliranje programa Izvorni program Kompajler Objektni program Povezivač

Prevođenje viših programskih jezika str 3 Kompajliranje programa Izvorni program Kompajler Objektni program Povezivač Izvršni program Izveštaj o greškama Izveštaj o Izve{taj gre{kama greškama q. Raša Brajović q. Programski jezici q 2 6

Prevođenje viših programskih jezika str 4 Interpretiranje programa ako su prevođenje programa i izvršavanje

Prevođenje viših programskih jezika str 4 Interpretiranje programa ako su prevođenje programa i izvršavanje programa vremenski spojeni procesi u jedan Interpretiranje izvode programi koji se nazivaju interpretatori q. Raša Brajović q. Programski jezici q 2 7

Prevođenje viših programskih jezika str 5 Interpretiranje programa Ulazni podaci Izvorni program Interpretator Rezultati

Prevođenje viših programskih jezika str 5 Interpretiranje programa Ulazni podaci Izvorni program Interpretator Rezultati programa Izveštaj o greškama q. Raša Brajović q. Programski jezici q 2 8

Struktura kompajlera Izvorni program Kompajler Leksički analizator Sintaksni analizator Rukovalac tabelama Semantički analizator Generator

Struktura kompajlera Izvorni program Kompajler Leksički analizator Sintaksni analizator Rukovalac tabelama Semantički analizator Generator međukoda Obrađivač grešaka Optimizator međukoda Generator koda Prevedeni qprogram Raša Brajović q. Programski jezici q 2 9

Struktura interpretatora Izvorni program Ulazni podaci Pripremni blok Izvršni blok Obrada nar. Obrada izlaza

Struktura interpretatora Izvorni program Ulazni podaci Pripremni blok Izvršni blok Obrada nar. Obrada izlaza … Obrada ulaza Upravljački blok Rezultati programa Interpretator Izveštaj o greškama q. Raša Brajović q. Programski jezici q 3 0

Integrisana radna okruženja Za mnoge programske jezike postoje kompajleri i interpretatori Neki programski jezici

Integrisana radna okruženja Za mnoge programske jezike postoje kompajleri i interpretatori Neki programski jezici (Java) su kompajlerskointerpretatorskog tipa Proizvođači softvera obezbeđuju grafičko radno okruženje koje sadrži niz razvojnih softverskih alata (kompajleri, interpretatori, editori, debageri, . . . ) q. Raša Brajović q. Programski jezici q 3 1