klasifikacija programskih jezika+programske paradigme-39 sl

Upload: zekerijah-karic

Post on 10-Mar-2016

227 views

Category:

Documents


2 download

DESCRIPTION

Klasifikacija programskih jezika+Programske paradigme-39 sl.Predavanja

TRANSCRIPT

Klasifikacija programskih jezika

Klasifikacija programskih jezikaProf. dr Lazo Rolji1Programski jezici Jezici kojima se piu raunarski programi. Svaki programski jezik koristi vlastiti, ogranieni skup rijei koje imaju posebna znaenja. Takve se rijei nazivaju kljunim rijeima. Za svaki programski jezik propisana su pravila slaganja kljunih rijei u naredbe. Takva se pravila nazivaju sintaksa. Ako se ne zadovolji propisana sintaksa, program e biti neispravan i nee se moi izvriti.2Podjela programskih jezikaGeneracijska podjelaJezici prve generacijeJezici druge generacijeJezici tree generacijeJezici etvrte generacije

Po strukturiranostinestrukturirani programski jezicistrukturirani programski jeziciPo proceduralnostiproceduralni programski jezici (slijed naredbi koji odreuje posao) KAKO obaviti nekineproceduralni programski jezici (slijed naredbi koji odreuje TA treba uiniti)Prva generacija: Jezici strojnog nivoaniski nivopojava s prvim komercijalno raspoloivim raunarima (oko 1953. godine)programiranje binarnim kodom, tj. zadavanje naredbi i podataka skupinama nula ili jedinica, npr. 0110 001110 010101kasnije su dodati mnemoniki kodovi instrukcija Add 001110 010101Druga generacija: Simboliki jezici (Asembleri)srednji nivosimbolike umjesto fizikih adresa memorijskih lokacija (ADD X, Y)asembler = prevodilac strojno orijentisanog simbolikog u strojni jezikprevoenje esto 1:1uvedeni potprogramipodjela jezikih procesora na prevodioce (compiler) i tumae (interpreter)Asemblerski jezici sastoje se od jednostavnih instrukcija koje se direktno i jednoznano mogu prevesti u mainski kod koji se direktno izvrava. Iako mnogo pogodnije od mainskog programiranja, asemblersko programiranje karakterie velika koliina posla koju programer mora obaviti, zbog injenice da su operacije i dalje elementarne.

Trea generacija: Proceduralni programski jezici (3GL)

jezici visokog nivoa (HLL-High Level Languages)jedna naredba jezika prevodi se u vie naredbi strojnog jezika.nezavisnost od stroja (nije potrebno poznavati arhitekturu, skup instrukcija, registre)prenosivostdanas se moe rei da se usavravanjem razliitih programskih jezika dostigao stadij kod kojeg su uglavnom svi jezici tree generacije vienamjenskiTrea generacija-nast. (3GL) odlikuje se visokim nivoom instrukcija vii programski jezici. Jedna naredba ovih programskih jezika prevodi se u vie naredbi mainskoj jezika. Odlikuje ih nezavisnost od raunara, to znai da nije potrebno poznavati arhitekturu, instrukcije i registre raunara za koji se programira. Programi su prenosivi.

9etvrta generacija Produkt je naglog razvoja tehnologije 80-tih godina XX vijeka. Dostupnost raunara je sve vea i poveana je potranja za programskom opremom-softverom. Olakano je koritenje jezika zbog prirodnije interakcije sa korisnikom. Ove jezike nazivamo jezike posebne namjene za odreene klase problema. Zadovoljavaju potrebe za izradu 60 - 80 % svih aplikacija.10Mogu se podijeliti u nekoliko klasa:Jezici 4GL za optu upotrebu: Agile Business Suite, Clipper, DataFlexJezici za pristupanje bazama podataka: Progress 4GL, SQLJezici za manipulisanje podacima i analize: ABAP, MATLAB, PL/SQLJezici za Web razvoj: ColdFusion itd.Najvaniji predstavnici:FORTRAN ALGOL BASIC COBOL LISP PL/I C C++ PASCAL MODULA-2Prevodilac (kompajler)Program koji prevodi jezik visokog nivoa, kao to je C++, u strojni (mainski) jezik Prevodilac je posebna vrsta programa koji kao na ulazu ima jedan program, a na izlazu drugi program.Ulazni program se obino zove izvorni kd ili izvorni program, a prevedenu verziju koju kreira prevodilac zovemo objektni (ciljni) program ili objektni (ciljni) kd.Rije kd oznaava program ili dio programa.Potpuni proces prevoenja i izvravanja C++ programa je neto sloeniji.Svaki C++ program koristi neke operacije (npr. ulazno i izlazne procedure) koje su ve isprogramirane.Te procedure su ve i prevedene i njihov objektni kd se samo kombinuje sa objektnim kodom naeg programa da bi dobili potpuni program u strojnom jeziku koji se moe izvriti na raunaru.Poseban program koji zovemo poveziva (linker) kombinuje objektni kd ovih dijelova sa objektnim kodom koji prevodilac daje na osnovu C++ programa.Prevodilac (kompajler)-nast.Faze izrade programaIzvorni kd (npr., u jeziku C++) izvedbeni kd

4 FAZE IZRADE PROGRAMA:Pisanje izvornog kdaPrevoenje izvornog kdaPovezivanje u izvedbeni kdTestiranje programaIzrada programa -> pisanje izvornog kdaIzvorni kd se moe pisati u bilo kojem programu za ureivanje teksta (Editor), meutim veina prevodilaca i povezivaa (Linker) danas su povezani u jedinstvenu cjelinu > INTEGRISANA RAZVOJNA OKOLINA(IDE, integrated developementr environment) > Microsoft Visual C++ 6.0. je primjer IDE1. Primjer C++ programaSvaki program napisan u jeziku C++ mora imati samo jednu main() funkcijuSvaka naredba u jeziku C++ zavrava oznakom ;Primjer najjednostavnijeg programa koji ne radi nita ve samo ima glavnu funkciju i jednu naredbu:

Nakon naziva funkcije main slijedi par otvorena-zatvorena zagrada. Unutar tih zagrada mogu se pisati argumenti funkcije, ali to nije nuno. (Za funkciju main su to parametri koji se koriste pri pokretanju programa)Otvorena vitiasta zagrada oznaava poetak bloka za pisanje naredbi, a zatvorena vitiasta zagrada oznaava krajNaredbom return 0 glavni program vraa pozivnom programu broj 0 to je poruka operacionom sistemu da je program uspjeno okonan ta god on radio.2. Primjer C++ programaPrimjer programa u jeziku C++ koji na ekranu ispisuje pozdravnu poruku:

cout je izlazni tok koji alje podatke na monitor pri tome se koriste prevodiociC++ je jezik visokog nivoa kao i veina programskih jezika koji se danas koriste (C, Java, Pascal, Visual Basic, FORTRAN, COBOL, Scheme, Lisp, Ada, PROLOG).Elementi programskog jezika

Veina komandi svakog programskog jezika moe se podijeliti u 5 glavnih kategorija:Obrada ulaznih podataka Podatke preuzeti sa tastature, iz datoteke ili nekog drugog izvora.Obrada izlaznih podataka Podatke predati monitoru, datoteci, bazi podataka ili nekom drugom medijumu.Matematika obrada podataka Podatke obraditi pomou matematike operacije, kao npr. sabiranje, oduzimanje ili dijeljenje.Poreenje i izbor Provjera odreenih uslova i kontrola izvravanja komandi.Ponavljanje Posebnim pravilima regulisano ponavljanje izvravanja komandi (obino sa varijacijama podataka ili pravila ponavljanja).29Svaki programer pie programski kd u nekom programskom jeziku. Razliiti programski jezici podravaju razliite stilove programiranja (programska paradigma). Razliiti programski jezici zahtijevaju i razliite nivoe znanja, umijea i detalja koje programer treba posjedovati. 30Programska paradigmaProgramska paradigma odreuje stil programiranja.Programska paradigma odreuje pogled koji programer ima nad programom i njegovim izvravanjem. Na primjer, u objektnom programiranju programer razmilja o programu kao o skupu interaktivnih objekata, dok u funkcionalnom programiranju na program gleda kao na redoslijed naredbi.31Primjeri paradigmiStrukturno programiranje, nasuprot Nestrukturno programiranje Imperativno programiranje, nasuprot Deklarativno programiranje Proceduralno programiranje, nasuprot Funkcionalno programiranje Skalarno programiranje, nasuprot Grupisano programiranje Ogranieno programiranje, nasuprot Logiko programiranje Komponentno programiranje (kao u OLE) Aspektno programiranje (kao u AspectJ) Pravilno bazirano programiranje (kao u Mathematica) Tabelarno programiranje (kao u Microsoft FoxPro) Cjevovodno programiranje (kao kod UNIX komandnim linijama) Objektno orijentisano programiranje Paralelno programiranje.

32Osnovne poznatije paradigme su :proceduralnafunkcionalnaobjektno orijentisanadeklarativna

33Neki programski jezici su nainjeni da podravaju samo jednu paradigmu (kao Java i Smalltalk, za objektno programiranje, dok Haskell i Scheme podravaju funkcionalno programiranje). Takoe, imamo jezike koji koji podravaju vie paradigmi (kao to je LISP, Python i Oz).

Postoje programski jezici koji podravaju samo jednu paradigmu i koji podravaju vie paradigmi (npr. C++, Common Lisp, Python i Oz podravaju vie paradigmi).

Ideja podravanja vie paradigmi je da se obezbijedi okruenje u kojem programeri mogu da rade u vie od jednog stila.

35Proceduralni programski jezici su jezici koji su ranije nazivani kao vii programski jezici.

Primjeri su: COBOL (Common Business Oriented Languae), FORTRAN (FORmula TRANslation), ALGOL (ALGOrithmic Language), PL/1 (Programming Language 1), BASIC.Oni korak po korak tano opisuju proceduru koja treba biti ispotovana da bi se rijeio problem.

36Kasnije su nastali objektno orijentisani jezici kao to je Simula, Smalltalk, Eiffel i Java. Tu se podaci i metode za manipulaciju podacima uvaju u jednoj jedinici koja se naziva objekat. Korisnik moe pristupti podacima kroz metod (sabrutinu).

37U deklarativnom programiranju raunaru se kae ta je problem, a ne i kako to da uradi. Program se strukturira kao kolekcija osobina koje slue da se pronae rezultat, a ne kao procedura koju treba slijediti. Daje se baza ili skup pravila, a raunar pokuava da nae rjeenje koje odgovara eljenim karakteristikama. Primjer je jezik etvrte generacije SQL.

38Funkcionalno programiranje je podskup deklarativnog programiranja. Programi napisani koritenjem ove paradigme koriste funkcije, blokove kda koji nastoje da se ponaaju kao matematike funkcije. Prvi predstavnik funkcionalnog programiranja je LISP (LISt Processing obrada teksta) razvijen 1958. godine.

39