1. Uvod Flashcards
Klasifikacija programskih jezika
Masinski zavisni jezici - svrstavaju se svi jeziki koji su u direktnoj zavisnsoti sa procesorom na kome se program izvrsava. Tu spadaju masinski, masinsko orjientisani i makroasemblerski jezici (cine grupu jezika niskog nivoa)
Masinsko nezavisni jezici - Cine grupu jezika visokog nivoa i nisu u zavisnosti sa procesorom.
Hronolijga razvoja masinsko nezavisnih jezika:
-Koriscen heksadekadni sistem za lakse predstavljanje 16-bitnih binarnih brojeva
-Asemblerski jezici
-Visi programski jezici
-Objektno-orijentisani jezici
Masinski jezici
Svaka instrukcija masinskog jezika se sastoji iz:
- Koda operacije koja treba da se izvrsi i
- Adresnog dela koji cine operandi nad kojima se izrsava operacija i adresa memorije u koju ce se upisati rezultat te operacije
Sve instrukcije masinskog jezika su pisane binarnom azbukom. Primer:
0001 1001 1101 0010
0010 0010 0000 0001
0010 0011 0000 1010
Asemblerski programski jezici
Asemblerski programski jezici koriste simbolicke oznake kako za predstavljanje instrukcija masinskog jezika, tako i za predstavljanje memorijskih adresa podataka nad kojima se vrsi obrada. Svakoj naredbi asemblerskog jezika odgovara jedna masinska instrukcija. Programi se sa asemblerskog na masinski jezik prevode koristeci prevodioce koji se nazivaju asembleri. Primer:
load R1,0A
load R2,01
load R3,04
Makroasemblerski programski jezici
Makroasemblerski programski jezici uvode pojam makroinstrukcija. Ukoliko se neki skup naredbi ponavlja cesto u kodu onda se on zamenjuje makroinstrukcijom.
Programi koji ih prevode nazivaju se makroasembleri i sastoje se od:
-Makroprocesora koji ima ulogu da makroinstrukciju podeli na skup asemblerskih naredbi
-Asembler koji prevodi asemblerske naredbi na masinski jezik
Visi programski jezici i njihovo prevodjenje
Kod visih programskih jezika naredbe su dosta priblizene govornom (engleskom) jeziku pa ih je dosta lakse razumeti, medjutim prevodioci su vrlo kompleksni.
Visi programski jezici se prevode pomocu:
-Kompilatora koji prevodi ceo kod i kreira izvrsnu verziju koja se moze izvrsavati neogranicen broj puta bez ponovnog prevodjenja
-Interpretatora koji prevode liniju po liniju koda i odmah je izvrsavaju.
-Hibridnih prevodioca kod kojih se najpre vrsi prevodjenje uz pomoc kompilatora do nivoa medjukoda koji je jako slican asemblerskom jeziku, medjutim nezavistan je od arhitekture racunara i operativnom sistemu na kojem se izvrsava program. Zatim se medju kod prevodi uz pomoc interpretatora i odmah izvrsava. Jedini deo koda koji je zavistan od platforme na kojoj se izvrsava program je taj deo medjukoda.
Podela programskih jezika
- Prema aplikacionom domenu
- Prema paradigmi programiranja
- Prema stepenu zavisnosti od arhitekture racunara
Aplikacioni domeni
• Inzenjerski (naucni) domen
Primenjuju se proste strukture podataka (nizovi i matrice), ali se zato zahteva veliki broj preciznih numerickih racunanja. FORTRAN je prvi jezik projektovan za precizna numericka racunanja.
• Poslovni domen
Kod ovog domena, akcenat je na dobrom opisu i velikoj kolicini podataka koji se obradjuju. COBOL je prvi jezik koji je projektovan za poslovni domen. Danas se u te svrhe koriste sistemi za upravljanje bazama podataka.
• Vestacka inteligencija
Za ovo se koriste funkcionalni jezici (Lisp) i logicki jezici (Prolog)
• Sistematsko programiranje
Zahtevaju veliku brzinu i preciznost rada i moguce je upravljanje hardverskim resursima. Prvi jezik za sistematsko programiranje je C, nastao je i primenjen za razvoj operativnog sistema UNIX.
• Internet i web
Koriste se jezici za distribuirano programiranje, za formatiranje teksta na veb stranici (HTML) i jezici za definisanje sadrzaja veb stranica(script jezici, kao npr JavaScript, Ruby…)
Programske paradigme
Programska paradigma definise stil programiranja.
Najgrublja podela programskih paradigmi:
• Proceduralne paradigme - cilj da programer tacno opise algoritam za resavanje problema
• Konceptualne paradigme - zadatak programera je da precizno opise problem koji se resava, a mehanizmi programskog jezika treba da obezbede nacin za njegovo resavanja
Najcesce se programske paradigme dele na 4 osnovne: • Imperativna • Objektno-orijentisana • Funkcionalna • Logicka
Imperativna programska paradigma
Nastala zajedno sa Fon-Nojmanovim modelom racunara. Program se sastoji iz skupa podataka koji se obradjuju i algoritama kojima se obradjuju.
Koncepti koje imperativni jezici uvode su:
• tipovi podataka - za predstavljanje podataka koji se obradjuju
• programske strukture - za predstavljanje algoritama
Predstavnici proceduralnih programskih jezika su Pascal,C,Fortran itd…
Objektno-orijentisana paradigma
Najrasprotranjenija programerska paradigma. Softver se posmatra kao mreza objekata koji komuniciraju razmenom poruka. Objekti se modeluju korisnickim tipovima podataka - klasama.
Predstavnici objektno - orijentisane paradigme su: C#,C++,Java itd…
Funkcionalna paradigma
Ceo program se svodi na definisanje i evaluaciju matematickih funkcija. Nema bocnih efekata, tj. izlaznas vrednost funkcije zavisi iskljucivo od ulaznih parametara. Nema programskih struktura - petlje se zamenjuju rekurzivnim funkcijama.
Predstavnici funkcionalne paradigme su Lisp,Scala,ML itd…
Logicka programska paradigma
Bazirana je na principima matematicke logike U programu se definisu cinjenice, upiti i pravila zakljucivanja. Izvrsenje programa se zasniva na pronalazenju odgovora na upite koristeci date cinjenice i pravila zakljucivanja.
Predstavnici logicke programske paradigme jesu Datalog,Prolog,Solver itd…
Sporedne programske paradigme
Predstavljaju kombinaciju osnovnih paradigmi ili podvrstu neke osnovne paradigme • Komponentna paradigma • Konkurentna paradigma • Skript paradigma • Generička paradigma • Paradigma upitnih jezika • Reaktivna paradigma • Vizuelna paradigma