1 / 31

Programski jezici I

Programski jezici I. Uvod. Miloš Stojanović. Definicija programskih jezika. PJ nastaju sa razvojem računara, iz potrebe da se pojednostavi pisanje programa za njih Zato kažemo da su PJ sredstvo komunikacije između ljudi i računara

clare-ware
Download Presentation

Programski jezici I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programski jezici I Uvod Miloš Stojanović

  2. Definicija programskih jezika • PJ nastaju sa razvojem računara, iz potrebe da se pojednostavi pisanje programa za njih • Zato kažemo da su PJ sredstvo komunikacije između ljudi i računara • Def: Veštački jezik za izradu programa, sastavljen od simbola koje računar može da prevede u direktne radnje.

  3. Mašinski jezici • Prvi programi pisani su na mašinskom jeziku (binarni kod) • Naredbe i podaci se predstavljaju binarno, nizovima jedinica i nula • Primer: 0001 1101 1000 0000 0000 0000 1111 1111 0001 1100 0000 0000

  4. Mašinski jezici 0000 0000 1111 1100 0001 1110 0000 0000 0000 0000 0111 0010 • U okviru mašinske naredbe svaka binarna cifra na određenom mestu ima unapred definisano značenje i odgovara upravljačkom signalu kojim se inicira određena aktivnost procesora • Sprega između mašinskog koda i procesora je direktna i neposredna

  5. Mašinski jezici • Programiranje u mašinskom kodu zahteva detaljno poznavanje strukture procesora i potpunu kontrolu nad smeštanjem koda programa i podataka u operativnoj memoriji računara • Sve to postaje previše komplikovano, tako da je u praksi neprimenjljivo

  6. Mašinski jezici • U cilju pojednostavljivanja upotrebe računara, počinju da se razvijaju simbolički jezici, slični jezicima kojima komuniciraju ljudi

  7. Klasifikacija PJ po stepenu zavisnosti od računara • Po stepenu zavisnosti od računara razlikuju se mašinski zavisni i mašinski nezavisni PJ • U mašinski zavisne jezike svrstavaju se jezici koji su u direktnoj zavisnosti sa procesorom na kome se program izvršava • To su mašinski jezik i asemblerski i makro asemblerski jezici • Oni čine grupu jezika niskog nivoa

  8. Klasifikacija PJ po stepenu zavisnosti od računara • Grupu maš. nezavisnih jezika cine PJ visokog nivoa ili proceduri orjentisani PJ i PJ veoma visokog nivoa ili problemu orjentisani PJ (aplikativni)

  9. Klasifikacija PJ po stepenu zavisnosti od računara

  10. Razvoj PJ • Prvi korak ka pojednostavljivanju maš. jezika napravljen je korišćenjem heksadecimalnog koda za skraćeno zapisivanje binarnih nizova • Time se dobija samo to da su zapisi binarnih nizova četiri puta kraći, tj. ne dobija se na razumljivosti koda za ljude • Za konverziju hex. koda u binarni dovoljan je samo konvertor koda koji se lako realizuje kao prekidačka mreža • Napr: bin naredba 0000 1111 1010 0011 bi u hex kodu bila zapisana kao 0FA3

  11. Razvoj PJ • Sledeći korak u razvoju PJ su asemblerski jezici • Asemblerske naredbe su u suštini skraćeno zapisane mašinske naredbe • Umesto binarnih nizova koriste se simbolička imena za predstavljanje pojedinih delova naredbi • Simbolička imena se koriste i umesto apsolutnih adresa naredbi i podataka

  12. Razvoj PJ • Primer: LD $R1, <A ADD $R1, <B STO $R1, <C A DS 5 B DS 7 C DS

  13. Razvoj PJ • Prvomnaredbombroj 5 koji je smešten u mem. lokaciju koja je u programu simbolički označena sa A se prenosi u registar procesora R1 • Drugom naredbom se sadržaj registra R1 sabira sa sadržajem memorijske lokacije imenovane sa B (broj 7). Rezultat sabiranja ostaje u registru R1 procesora.

  14. Razvoj PJ • Trećom naredbom se zbir iz registra R1 prenosi u mem. lokaciju imenovanu sa C koja je rezervisana za smeštanje rezultata • Mašinski kod iz prethodnog primera je ekvivalentan ovom asemblerskom kodu i u njemu se umesto simboličkih kodova operacije i simboličkih adresa mem. lokacija i registara koriste binarni kodovi i apsolutne adrese

  15. Razvoj PJ • Za prevođenje asemblerskih jezika u mašinske koriste se programski moduli koji se nazivaju asembleri po čemu su i asemblerski jezici dobili naziv kod na asemblerskom jeziku mašinski kod programa asembler računar rezultati podaci

  16. Razvoj PJ • Kod naprednijih asemblerskih jezika postoji mogućnost za definisanje makro naredbi, koje predstavljaju sekvence više asemblerskih naredbi • Jednom definisane makro naredbe mogu se višestruko koristiti u programu u kome su definisane • PJ sa ovom mogućnošću se nazivaju makroasemblerski jezici

  17. Razvoj PJ kod na makro asemblerskom jeziku makroprocesor kod na asemblerskom jeziku mašinski kod programa asembler računar rezultati podaci

  18. Razvoj PJ • Sledeći korak u razvoju PJ su višiPJ kod kojih se program definiše prema proceduri opisanoj algoritmom i u okviru kojih obično postoje koncepti za predstavljanje standardnih algoritamskih koraka • To su algoritamski ili proceduralni jezici • Pojavili su se krajem pedesetih i početkom seždesetih godina dvadesetog veka

  19. Razvoj PJ • Njihov razvoj traje do danas, ma da su osnovni koncepti ostali isti • Program se piše kao sekvenca naredbi sa unapred definisanom sintaksom, sastavljenih od reči engleskog jezika, a prevodi se u asemblerski odnosno mašinski kod pomoću programskih prevodilaca (kompajlera)

  20. Kompilatori i interpretatori • Za prevođenje sa viših PJ u mašinski kod se koriste kompilatori i interpretatori • Kompilatori prevode kod u celini i formiraju izvršnu datoteku sa mašinskim kodom programa, koji se zatim smešta u memoriju računara i izvršava • Kod interpretatora faza prevođenja se prepliće sa fazom izvršenja

  21. Kompilatori i interpretatori

  22. Kompilatori i interpretatori • U fazileksičkeanalize, leksičkianalizator (lekser) čitaizvorni program karakterpokarakter, i u njemupokušavadaidentifikujeleksičkejedinice (lekseme) odkojih je sačinjenizvornijezik. Lekseme se grupišu u apstraktneklase, tokene, kaoštosu: celibrojevi, realnibrojevi, nizovikaraktera, rezervisanereči, identifikatoriislično. Ovitokeni se zatimproslećujusintaksičkomanalizatoru.

  23. Kompilatori i interpretatori • Zadataksintaksičkeanalize je da se utvrdidali je program u skladusagramatičkimpravilimaprogramskogjezika u kome je pisan. U fazisintaksičkeanalize se odnizatokenakoje je prosledioleksičkianalizatorgenerišestablosintaksneanalize, kojepredstavljaapstraktnupredstavustruktureprograma.

  24. Kompilatori i interpretatori • Interpretatori prevode naredbu za naredbom i čim se dobije celina koja može da se izvrši ona se izvršava • Postoji i hibridni sistem koji kombinuje prethodna dva pristupa, tj prvo se vrši prevođenje programa do nivoa nekog međukoda, zatim se naredba po naredba interpretira (JAVA)

  25. Kompilatori i interpretatori

  26. Kompilatori i interpretatori • Svi nabrojani pristupi imaju svoje prednosti • Komandni jezici i jezici koji se koriste za interaktivnu komunikaciju sa računarom se obično realizuju kao interpretatorski • Za pisanje programa koji treba da se izražavaju u realnom vremenu koriste se kompilatorski jezici (PASAL, C, C++, ...)

  27. Kompilatori i interpretatori • U mrežnim okruženjima gde je od značaja da se programi pisani na jednoj mašini mogu izvršavati na različitim mašimama u mreži koristi se hibridni sistem prevođenja • Tipiačan pretstavnik PJ-a koji koristi ovu tehniku je JAVA. • Prevođenje JAVA programa se vrši u dva koraka:

  28. Kompilatori i interpretatori • U prvom koraku izvorni (source) kod se pomoću kompilatora prevodi u međukod (bytecode) koji je nezavisan od mašine na kojoj će se program izvršavati • U drugoja fazi se ovaj međukod interpretira pomoću java interpretatora (java virtual machine). Naredba po naredba se prevodi na mašinski jezik i odmah izvršava

  29. Kompilatori i interpretatori • Time je omogućena nezavisnost od hardvera na kome sa java program izvršava, uz ograničenje da na tom hardveru postoji java virtual macine

  30. Loaderi • Nakonprocesakompilacijeprogramapotrebno je program smestiti u operativnumemorijuračunara (rezervisati adresni prostor potreban za njegovo izvršenje) • smeštanje programa u OM obavlja program "punilac" - loader koji može biti zasebna celina, ma da je uglavnom integrisan u "povezivač"- linker

  31. Linkeri • Zadatak linkera je da kodudodabibliotečkikod(bibliotečke funkcije) ikodzapočetnopovezivanjesaoperativnimsistemom • linker i loader su uglavnom integrisani u jednu celinu, koja ide uz kompajler • Operacije kompajliranja, povezivanja, smeštanja programa u OM su "prikrivene" od aplikativnog programera i on o njima ne mora voditi računa, tj njegov posao je "samo" da unese ispravan izvorni kod programa

More Related