45
SVEUČILIŠTE U RIJECI TEHNIČKI FAKULTET RIJEKA MARINA TEVČIĆ RAZVOJ I KARAKTERISTIKE PROGRAMSKIH JEZIKA SEMINARSKI RAD RIJEKA, travanj, 2013.

Seminar programski jezici

Embed Size (px)

Citation preview

Page 1: Seminar programski jezici

SVEUČILIŠTE U RIJECI TEHNI ČKI FAKULTET

RIJEKA

MARINA TEV ČIĆ

RAZVOJ I KARAKTERISTIKE PROGRAMSKIH JEZIKA

SEMINARSKI RAD

RIJEKA, travanj, 2013.

Page 2: Seminar programski jezici

SVEUČILIŠTE U RIJECI TEHNI ČKI FAKULTET

RIJEKA

RAZVOJ I KARAKTERISTIKE PROGRAMSKIH JEZIKA

SEMINARSKI RAD

Predmet: Projektiranje baze podataka Mentor: prof. dr. sc. Mile Pavlić Studentica: mr. sc. Marina Tevčić Matični broj: 45-10-7 Modul: Osiguranje kvalitete i voñenje tehničkih sustava

RIJEKA, travanj 2013.

Page 3: Seminar programski jezici

1

Sadržaj

1. UVOD ........................................................................................................................ 2

2. OSNOVNI POJMOVI ............................................................................................... 4

3. PODJELA PROGRAMSKIH JEZIKA ...................................................................... 6

3.1. Generacije programskih jezika ............................................................................... 7

3.2. Strukturno programiranje ...................................................................................... 13

3.4. Programski alati za brz razvoj namjenskih programa (RAD) ............................... 15

3.5. Programski jezici neovisni o sklopovlju i operacijskom sustavu ......................... 16

3.6. Proceduralni i neproceduralni pogramski jezici ................................................... 17

3.7. Programske paradigme .......................................................................................... 19

4. ZASTUPLJENOST (POPULARNOST) PROGRAMSKIH JEZIKA ..................... 21

5. POVIJESNO ZNAČAJNI PROGRAMSKI JEZICI ................................................ 25

6. ZAKLJUČAK .......................................................................................................... 37

LITERARURA ............................................................................................................ 38

POPIS SLIKA .............................................................................................................. 42

POPIS TABLICA ........................................................................................................ 43

POPIS DIJAGRAMA .................................................................................................. 43

Page 4: Seminar programski jezici

2

1. UVOD

Računalo bez programa je stroj nesposoban za obavljanje bilo kakvog posla. Programski jezici su jezici kojima se pišu programi koje računalo zna i može izvršiti. Svaki programski jezik koristi vlastiti, ograničeni skup riječi koje imaju posebna značenja. U svakom su programskom jeziku propisana pravila slaganja (sintaksa) tih riječi u instrukcije (naredbe). Program je skup instrukcija nanizanih strogo utvrñenim redoslijedom, čijim se izvršavanjem obavlja željeni posao.

Koji programski jezik odabrati za pisanje programa? Da li imamo dovoljno znanja

i sposobnosti ovladati programskim jezikom koji može riješti naš problem? Koliko je isplativo kupovati novu inačicu programskog jezika kojeg smo do sada koristili? Koliko nam vremena treba da aplikacije napisane u jednom programskom jeziku ponovno napišemo u nekom drugom programskom jeziku? Koliko je to isplativo? Na ta i slična pitanja, koja muče svakog programera i korisnika računala, nisam u ovom seminarskom radu ni pokušala odgovoriti. U radu je dan tek pregled programskih jezika po generacijama, načinu pristupa programiranju te povijesnom značaju. Izdvojeni su samo neki od programskih jezika i za njih su navedene osnovne karakteristike po kojima se razlikuju od sličnih jezika iste kategorije.

Tematika rada podijeljena je u šest poglavlja:

• UVOD • OSNOVNI POJMOVI • PODJELA PROGRAMSKIH JEZIKA • ZASTUPLJENOST (POPULARNOST) PROGRAMSKIH JEZIKA • POVIJESNO ZNAČAJNI PROGRAMSKI JEZICI • ZAKLJUČAK

U prvom poglavlju s naslovom UVOD definiran je cilj seminarskog rada,

obrazložena struktura rada, te opisan sadržaj pojedinih poglavlja.

Drugo poglavlje ima naslov OSNOVNI POJMOVI. Kao što i sam naziv kaže, u toj cjelini definirani su osnovni pojmovi vezani za programiranje i programske jezike.

U trećoj cjelini s naslovom PODJELA PROGRAMSKIH JEZIKA navedene su

klasifikacije programskih jezika prema više različitih kriterija. Poglavlje je podijeljeno u sedam potpoglavlja u kojima su razrañene pojedine kategorije jezika:

• Generacije programskih jezika, • Strukturno programiranje, • Objektno orijentirano programiranje, • Programski alati za brz razvoj namjenskih programa (RAD), • Programski jezici neovisni o sklopovlju i operacijskom sustavu, • Proceduralni i neproceduralni programski jezici, • Programske paradigme. U četvrtom poglavlju, koje ima naslov ZASTUPLJENOST (POPULARNOST)

PROGRAMSKIH JEZIKA, navedeni su indeksi zastupljenosti odnosno popularnosti programskih jezika prema podacima koje je objavila programerska zajednica TIOBE za ožujak 2013. godine.

Page 5: Seminar programski jezici

3

U petom poglavlju s naslovom POVIJESNO ZNAČAJNI PROGRAMSKI JEZICI

opisani su neki od programskih jezika koji se po svojim karakteristikama i prihvaćenosti od strane programera i korisnika računala izdvajaju od programskih jezika iste kategorije.

Posljednje poglavlje s naslovom ZAKLJUČAK završni je dio seminarskog rada u

kojem je sažeto dan rezime cijelog rada. Na kraju rada, iza posljednjeg poglavlja, nalazi se popis literature koja je korištena

pri izradi ovog seminarskog rada. Iza popisa literature slijede popisi slika, tablica i dijagrama koje rad sadrži.

Page 6: Seminar programski jezici

4

2. OSNOVNI POJMOVI

Računalo može izvršiti samo one poslove za koje je dobio detaljne upute (instrukcije, naredbe) kako ih obaviti. Računalo razumije i može izvršti samo one instrukcije koje su napisane u njemu razumljivom jeziku, strojnom jeziku, iskazanom binarnim brojem, tj. nulama i jedinicama. Za pisanje instrukcija u strojnom jeziku potrebno je temeljito poznavati grañu računala (procesora) i koristiti brojčane kôdove jer se instrukcije strojnog jezika izravno odnose na pojedine dijelove procesora i vrijede samo za taj procesor. Svaki tip procesora ima sebi svojstven strojni jezik koji nije primjenjiv na drugoj vrsti računala. Program je niz instrukcija napisanih odreñenim redoslijedom, čijim izvršenjem se izvršava neki zadatak. Da bi se pojednostavilo pisanje programskih instrukcija u binarnom kôdu, uveden je mnemonički oblik pisanja instrukcija. Mnemonički oblik instrukcije jest znakovni prikaz (niz slova, brojaka i specijalnih znakova) koji podsjeća na radnju koja će se izvršiti tom instrukcijom. Imena operacija i instrukcija često su kratice engleskih riječi (npr. ADD, INC, PUSH, PULL). Svakoj instrukciji u mnemoničkom obliku pripada jedna instrukcija u binarnom obliku. Za instrukcije napisane u binarnom odnosno mnemoničkom obliku kaže se da su napisane u nižem simboličkom jeziku. Objedinjavanjem više instrukcija strojnog jezika (nižeg oblika) u jednu novu instrukciju (viši oblik instrukcije) postiže se pisanjem u simboličkom jeziku višeg nivoa. Viši simbolički jezici omogućuju pisanje programa zapisom sličnom prirodnom jeziku i matematičkom zapisu. Programer (čovjek koji piše program) najčešće ne mora znati gotovo ništa ili vrlo malo o grañi računala čime je pisanje programa olakšano. Jedna od najvećih prednosti viših simboličkih jezika jest da se jedan te isti program može primijeniti na različitim tipovima računala (procesora). Programiranje predstavlja postupak pisanja programa u nekom od simboličkih jezika. Za više simboličke jezike uvriježen je naziv (viši) programski jezici. Programski jezik je set instrukcija koje računalo razumije i koje može interpretirati. Način korištenja instrukcija u programu i njihovo slaganje propisano je pravilima (gramatika jezika) odabranog programskog jezika, a naziva se sintaksa. Ukoliko se ne zadovolji propisana sintaksa, program nije ispravan i nije ga moguće prevesti u jezik razumljiv računalu, a samim time ni izvršiti. Značenje programa, tj. programskih izraza definirano je semantikom programskog jezika. Sintaktičke pogreške otkriva program prevoditelj pomoću kojeg se izvorni oblik programa prevodi u izvedbeni (izvršni), tj. strojni. Logičku ispravnost programa računalo ne otkriva niti javlja, nju mora provjeriti odnosno osigurati programer. Izvorni program ili izvorni kôd predstavlja niz instrukcija napisanih u nekom od programskih jezika. Izvedbeni ili izvršni program predstavlja datoteku koja sadrži instrukcije strojnog jezika. Prevoñenje je postupak kojim se programi pisani u nekom od programskih jezika (simboličkih jezika) prevode uz pomoć programskih prevoditelja na jezik koji računalo razumije, a to je jezik nula i jedinica (strojni jezik). Prema načinu prevoñenja (složenosti i djelotvornosti) instrukcija izvornog programa u strojni jezik, programi prevoditelji se dijela na:

• interpretere, • kompajlere.

Interpreteri su programi koji svaku naredbu izvornog programa prevode u strojni jezik u trenutku izvoñenja programa naredbu po naredbu. Kompajleri (kompilator, engl. compiler) su programi koji prevode izvorni program u strojni program samo jednom, i to za vrijeme postupka prevoñenja. Prevoñenjem nastaje objektni program

Page 7: Seminar programski jezici

5

koji se pomoću linkera transformira u izvršni program. Linker je program koji uzima jedan ili više objektnih programa generiranih od strane kompajlera i spaja ih u jedan izvršni program koji se može samostalno pozvati i izvršiti po potrebi. Linkeri mogu uzimati i gotove objekte iz programskih biblioteka (engl. library) koji su napisani od strane drugih programera. Debugger je program koji pomaže pri otklanjanju pogrešaka u programu, može testirati i provjeriti pravilnost rada programa. Postupak otklanjanja pogrešaka naziva se debugging. Cilj programiranja je pomoću računala od ulaznih podataka dobiti izlazne rezultate obrade. Problemi (zadaci) koje programiranjem treba riješiti često nisu jednostavni da bi se odmah moglo pristupiti pisanju programa, pa se postupak programiranja rastavlja na više koraka (faza programiranja):

1. Postavka zadatka – potrebno je jasno definirati što je cilj zadatka, analizirati postojeće informacije, opisati sve podatke, predvidjeti sve moguće slučajeve koji se mogu javiti kod rješavanja zadatka;

2. Analiza zadatka – analiziraju se ulazni i izlazni podaci, definiraju veze izmeñu podataka, daje se precizan opis zadatka koji rezultira izradom matematičog modela koji se može realizirati na računalu;

3. Razrada algoritma – definira se način na koji se od početnih, ulaznih podataka dolazi do traženih, izlaznih. Ukoliko je zadatak opsežan treba ga rastaviti na više dijelova. Svaki zadatak može se riješiti na više načina, zato bi trebalo proanalizirati sve načine i odabrati optimalan. Pri tome treba voditi računa broju potrebnih operacija i memorijskih resursa da bi se algoritam uspješno izvršio;

4. Pisanje programa – ovisno o zadatku koji treba riješti i raspoloživoj opremi bira se programski jezik koji je najbolji izbor u konkretnom slučaju;

5. Faza prevoñenja, izvršavanja i testiranja programa – program treba ispraviti od eventualnih sintaktičkih pogrešaka, prevesti na oblik razumljiv računalu (strojni jezik) pomoću programa prevoditelja. Da bi se program izvršavao, potrebno je formirati izvršnu verziju programa. Često su faze prevoñenja i izrade izvršnog oblika programa objedinjene. Izvršnu verziju programa treba testirati, tj. provjeriti da li program rješava postavljeni zadatak. U toj fazi treba otkriti što više skrivenih grešaka. Po potrebi treba se vratiti na prethodne faze;

6. Izrada dokumentacije – u dokumentaciji programa treba opisati što program radi, dati uputstva kako se koristi, detaljnije opisati algoritam ukoliko se radi o složenijem zadatku;

7. Održavanje programa – korištenjem programa mogu se uočiti neke pogreške koje nisu otkrivene tijekom testiranja, a potrebno ih je otkloniti. Ponekad treba izvršiti i neke promjene u programu uslijed nastupanja novih okolnosti. Ova faza podrazumijeva i proširivanje programa dodavanjem novih funkcija odnosno modula.

Pod pojmom algotitam podrazumijeva se način (uputa, postupak, metoda) kojim računalo rješava neki zadatak, tj. niz instrukcija čijim se izvršenjem rješava neki problem. Pri pisanju algoritama često se koriste pomagala koja olakšavaju njihovu izradu kao npr. dijagrami tijeka , pseudokôd (algoritam zapisan riječima), biblioteke često korištenih algoritama i sl.

Page 8: Seminar programski jezici

6

3. PODJELA PROGRAMSKIH JEZIKA Mnogo je kriterija po kojima se može izvršiti podjela programskih jezika. U ovom radu bit će izvojene samo neke od podjela i to na osnovi sljedećih kriterija: Podjela prema razini:

• Programski jezici niske razine (niži programski jezici) o Strojni jezik o Asembler

• Programski jezici visoke razine (viši programski jezici) o Oni jezici čije se naredbe ne mogu izravno prevesti u strojni jezik

Podjela sa aspekta povijesnog razvoja (generacijska podjela):

• Programski jezici prve generacije • Programski jezici druge generacije • Programski jezici treće generacije • Programski jezici četvrte generacije • Programski jezici pete generacije

Podjela prema namjeni:

• Jezici za rješavanje numeričkih i znanstvenih problema (FORTRAN, ALGOL, APL, MATLAB)

• Jezici za rješavanje poslovnih problema i obradu podataka (COBOL, PL/I, ABAP)

• Jezici za učenje programiranja (LOGO, BASIC, Pascal) • Jezici za pisanje sistemskih programa (Ada, C, C#, Modula-2) • Jezici za sustave umjetne inteligencije (LISP, Prolog) • Jezici za rad s bazama podataka (SQL, PL/SQL, Clarion), itd. Razvojem programskih jezika gubi se smisao ove podjele, jer se današnji programski jezici mogu ravnopravno koristiti u svim područjima odnosno smatraju se višenamjenskim.

Podjela sa aspekta strukturiranosti:

• Nestrukturirani (BASIC, FORTRAN) • Strukturirani (Pascal, Ada, C)

Podjela prema načinu rješavanja problema: • Proceduralni (FORTRAN, COBOL, Pascal, C) • Neproceduralni (Prolog, SQL)

Podjela prema metodologiji (paradigmi) programiranja:

• Imperativno (proceduralno) programiranje (FORTRAN, ALGOL, Pascal,C++) • Deklarativno (logičko) programiranje (Prolog, Datalog) • Objektno orijentirano programiranje (Simula, Visual C++, C#, Java) • Funkcionalno programiranje (LISP, Haskell, ML, Scheme)

Page 9: Seminar programski jezici

7

3.1. Generacije programskih jezika Usporedno s razvitkom informatike, razvijali su se i programski jezici. Iako nisu jednoznačno odreñene, smatra se da je do danas razvijeno pet generacija programskih jezika. Iz godine u godinu razvijaju se novi jezici. Godine 1985. postojalo je oko 150 programskih jezika, 1990. godine broj je narastao na 300, 2008. godine bilo ih je oko 700 (v. Martinović, M.). Koliko ih je danas? Teško da se može dati precizan odgovor na to pitanje jer svakim danom je sve više nadogradnja već postojećih programskih jezika, otkrivaju se novi jezici, a raste i broj tvrtki koje se bave razvojem i proizvodnjom programskih jezika i alata.

Slika 1. Razvoj programskih jezika Izvor: http://infographicality.com/prelucrate/Electronics%20Technology/Evolution%20of%20Programming%20Languages%20www.infographicality.com.jpg (26.3.2013.)

1. Programski jezici prve generacije

Pod jezicima prve generacije podrazumijevaju se strojni jezici. Strojni jezik (engl. machine language, machine code) jedini je jezik kojeg računalo razumije, jedino programi pisani u strojnom jeziku mogu se bez dodatnog prevoñenja izvršiti na računalu. Svi se ostali oblici programa pisani u nekim drugim programskim jezicima moraju prevesti u strojni jezik. Strojni jezik binarni je oblik programa, što znači da se instrukcije pišu u binarnom brojevnom sustavu (znamenke 0 i 1).

Page 10: Seminar programski jezici

8

Strojni jezik direktno je vezan za računalo odnosno procesor, program napisan u strojnom jeziku za jednu vrstu računala (procesora) nije primjenjiv na drugoj vrsti računala. Prema prof. Grundleru (v. Grundler, 2000., str. 334) za pisanje programa u strojnom jeziku osim binarnog može se koristiti i heksadecimalni sustav, pa čak i mnemonički oblik zapisa.

Slika 2. Primjer strojnog jezika Izvor: http://www.egradiva.net/moduli/programirljive_naprave/01_jeziki/02_datoteka.html (27.3.2013.) Prednosti pisanja programa u strojnom jeziku su brzina izvoñenja programa te djelotvorno iskorištenje memorije. Nedostaci su složenost postupka izrade programa (dugački, nepregledni programi, pisanje podložno greškama koje je teško otkriti, pisanje programa traje dugo), ograničenost programa za jedan tip procesora (programi se ne mogu prenijeti na računalo drugačijeg tipa), programer mora dobro poznavati grañu računala (pisanje programa namijenjeno je usko specijaliziranim stručnjacima).

2. Programski jezici druge generacije Jezici druge generacije su asembleri (engl. assembly language, assembly code), to su najniži programski jezici, najbliži binarnom strojnom kôdu. Instrukcije asemblera su skraćenice koje se sastoje od nekoliko slova (mnemonici) i brojeva. Slovne skraćenice najčešće dolaze od engleskih naziva pojedine instrukcije (npr. MOV je instrukcija za premještanje podataka, skraćenica dolazi od engl. riječi move). Pisanje programa u asembleru daleko je jednostavnije, ali prije izvoñenja zahtijeva prevoñenje u strojni jezik. Program za prevoñenje naziva se asembler (engl. assembler). U početku je svakoj asemblerskoj (mnemoničkoj) instrukciji odgovarala točno jedna instrukcija u binarnom strojnom jeziku. Kasnije je jednoj

Page 11: Seminar programski jezici

9

asemblerskoj instrukciji odgovaralo više strojnih instrukcija, a omogućeno je i izdvajanje dijelova kôda, koji se često ponavlja, u potprograme („makro-asemblerski“ jezici) (v. Trifunov, 2011.). U programskom jeziku asembler postoji mogućnost pisanja komentara koji olakšavaju snalaženje u programu, a program za prevoñenje asembler zanemaruje ih pri prevoñenju u strojni jezik.

Slika 3. Primjer programa napisanog u asembleru Izvor: http://ece.wpi.edu/~wrm/Courses/EE2801/Labs/tasm/tasm2.gif (27.3.2013.) Iako je pisanje programa u programskom jeziku asembler daleko jednostavnije od pisanja u strojnom jeziku, ipak je to i dalje mukotrpan posao koji zahtijeva puno vremena. Traženje i ispravljanje grešaka pri razvoju programa takoñer je još uvijek zahtjevan i dugotrajan proces. Svaki tip računala ima sebi svojstven programski jezik asembler koji nije primjenjiv na drugom tipu računala. Programer i dalje mora imati punu kontrolu nad svim komponentama računala. Prednost programa pisanih u jeziku asembler je što se brzo izvršavaju i zauzimaju malo memorije u odnosu na programe pisane u drugim programskim jezicima (v. Gudelj, 2011.). Jezici prve (strojni jezik) i druge (asembler) generacije spadaju u programske jezike niže razine (niži programski jezici, engl. low level languages).

Page 12: Seminar programski jezici

10

3. Programski jezici treće generacije

Krajem 50-tih odnosno početkom 60-tih godina prošlog stoljeća pojavili su se prvi jezici visoke razine, tzv. viši programski jezici (engl. high level languages, HLL).

Slika 4. Kronologija razvoja najznačajnih viših programskih jezika Izvor: http://users.skynet.be/averkeyn/computer/histlang.html (28.3.2013.)

Page 13: Seminar programski jezici

11

Razvojem jezika treće generacije postignuta je neovisnost o tipu računala (procesora) na kojem se izvodi program. Teoretski, program napisan jezikom treće generacije može se koristiti na bilo kojem računalu (uz minimalnu izmjenu) koje ima za njega pripadajući kompajler. Programiranje je olakšano ne samo time što su instrukcije ovih jezika više nalik govornom jeziku, nego i činjenicom da programer više ne treba poznavati grañu računala. Općenito, što je programski jezik na višem nivou, to je manje potrebno znati o tehničkim detaljima specifičnim za pojedino računalo. Svaka naredba višeg jezika prevodi se u više naredbi strojnog jezika. Pojava interpretera kao alternativa kompajlerima još je jedna od karakteristika jezika treće generacije. Kao rezultat rada interpretera ne postoji izvršni oblik programa već postupak prevoñenja nastupa svaki puta kada se program pokreće (naredba po naredba se prevodi i nakon prevoñenja izvodi). Meñu prvim jezicima treće generacije bili su FORTRAN (Formula Translator), ALGOL (Algorithmic Language), COBOL (Common Business Oriented Language), BASIC (Beginner's All-purpose Symbolic Instruction Code), Pascal (nazvan prema francuskom matematičaru Blais Pascalu), PL/I (Programing Language I) i C jezik.

4. Programski jezici četvrte generacije

Jezici četvrte generacije (engl. fourth generation languages, 4th generation languages, 4GL) pojavili su se početkom 1980-tih godina. Ovi programski jezici potpuno su prilagoñeni krajnim korisnicima, njima se služe programeri za ubrzanje procesa programiranja, ali ih koriste i ostali korisnici koji ne trebaju biti vješti u programiranju, ali trebaju dobro poznavati procese. Odnos korisnika i računala je dijaloški, računalo odgovara na postavljana pitanja i upućuje korisnika na izbornik (menî). Jezici su razvijeni za točno odreñenu namjenu (engl. application specific languages), lako se uče. Svojom strukturom, jezici četvrte generacije složeniji su od jezika treće generacije, ali omogućuju korisnicima da izvrše kompleksne strukture koristeći se ralativno manjim brojem instrukcija. Jedna instrukcija jezika četvrte generacije može zamijeniti nekoliko instrukcija programskog jezika treće generacije. Program pisan u jeziku četvrte generacije razvija se interaktivno, što znači da se instrukcije u programu ureñuju (jezično i logiči testiraju) u tijeku pisanja programa odnosno prije njegovog završetka. Četvrta generacija jezika ne pretpostavlja samo klasično programiranje u nekom od novih programskih jezika, već se dio programiranja može izvesti i uz pomoć programskih alata za automatsko programiranje (npr. RAD, CASE alati) (v. Pavlić, 2009., str. 252). QBE (Query-By-Example) smatra se prvim jezikom ove generacije, slijede Visual Basic i Visual C++ kao najpoznatiji predstavnici te generacije programskih jezika, meñu prvim jezicima su koji omogućuju programiranje pomoću grafičkih simbola, tj. ikona. Svakim danom na tržištu softwarea pojavljuje se sve više alata za vizualno (grafičko) programiranje (programiranje ne provodi utipkavanjem tekstualnih instrukcija programskog jezika već slaganjem grafičkih elemenata) kao npr. Caspio, Tersus, Limnor. SQL (Structured Query Language) najpopularniji programski jezik za kreiranje, dohvat, ažuriranje i brisanje podataka iz baze podataka. Pojavom Interneta na važnosti dobiva objektno orijentirani programski jezik opće namjene Java.

Page 14: Seminar programski jezici

12

Osnovne skupine programskih alata 4GL su (v. Grbavac, 2010., str. 311):

• Upitni jezici za bazu podataka (SQL, PL/SQL, Clarion, Thin@) • Jezici za programiranje vrlo visoke razine (AME, NOMAD) • Jezici za podršku u odlučivanju (Multiplan, VisiCalc) • Generatori aplikacija (ADS, DELPHI, Mapper, Ramis II, Focus, CASE

alati) • Generatori izvještaja (SRG, GIS, Easytrieve Plus) • Jezici i alati za grafičku obradu podataka (Havard graphics, LabView,

G jezik, TCL/TK, AutoCad)

Slika 5. Zastupljenost korištenje programskih alata i jezika za baze podataka

(IT-Careernet Statistics) Izvor: http://www.wst.nu/statistics/programminglanguages.htm (29.3.2013.)

Page 15: Seminar programski jezici

13

5. Programski jezici pete generacije

Jezike pete generacije (engl. fifth generation languages, 5th generation languages, 5GL) neki autori nazivaju jezicima umjetne inteligencije jer se najčešće koriste u istraživanju umjetne inteligencije. Računalo rješava odreñeni problem bez programera koji je zadužen jedino da definira problem i pod kojim uvjetima problem treba biti riješen, ali ne treba znati kojim algoritmom ili rutinama će se to izvesti. Područja primjene jezika 5GL su u projektiranju ekspertnih sustava, sustava baza znanja, strojnog odlučivanja, procesiranja prirodnih jezika, umjetne inteligencije, neuronskih mreža (v. Drabić). Najpoznatiji predstavnici su jezici: LISP, Prolog, OPS5, Mercury.

3.2. Strukturno programiranje Sa aspekta strukturiranosti razlikujemo nestrukturirane i strukturirane programske jezike. Strukturirano programiranje (engl. structured programming) je specifičan način pisanja programa gdje se za kreiranje logičke programske strukture primjenjuju standardizirani elementi prema utvrñenim pravilima (v. Gašpar, 2010.). Na taj način olakšana je čitljivost, testiranje, popravak i održavanje programa. Instrukcije se pišu i odrañuju u strogom slijedu. Izbjegava se korištenje instrukcija programskog skoka (instrkukcije tipa „idi na“). Danas se programi sve više pišu modularno (modularno programiranje ), tj. kompletno se programsko rješenje raščlanjuje na manje logički zaokružene cjeline (module), koje se mogu neovisno pisati i provjeravati, a po završetku ugraditi u glavni (engl. main) program. Modularna struktura omogućava timski rad, programiranje se može podijeliti izmeñu više programera koji rade svaki svoj dio posla. Gotovi moduli mogu se koristiti i pozivati u raznim dijelovima programa ili u drugim programima. Strukturno orijentirani jezici na neki način ograničavaju slobodu programera jer ga prisiljavaju na programsku disciplinu (poštivanje pravila), ali mu olakšavaju testiranje, popravljanje i održavanje programa. Nestrukturirani jezici (npr. BASIC, FORTRAN) nisu tako „strogi“, prepuštaju grañu programa u potpunosti programeru, omogućuju korištenje instrukcija programskog skoka i time daju programeru odreñenu slobodu. ALGOL se smatra prvim jezikom strukturiranog programiranja. Namijenjen je rješavanju znanstveno-tehničkih problema, logika jezika bliska je običnom matematičkom jeziku pa je pogodan za rješavanje algebarskih problema (v. Roller, 1996., str. 136). 1971. godine programski jezik Pascal je dizajniran za učenje strukturiranog programiranja u visokoškolskim ustanovama. Jezik Pascal imao je velik utjecaj na razvoj programskih jezika, ali se zbog svojih nedostataka nije mogao upotrebljavati u komercijalne svrhe. Pod sponzorstvom ministarstva obrade SAD-a za potrebe vojske, u ranim 1980-tim godinama iz Pascala izveden je univerzalni jezik za modularno programiranje ADA (nazvan prema Augusti Adi (Bayron) Lovelace prvoj programerki, suradnici Charlesa Babbagea, izumitelja prvog analitičkog stroja). Taj jezik namijenjen je za korištenje na velikim računalnim sustavima koji su integralni dio drugog sustava, a ima ulogu upravljačkog mehanizma (v. Grbavac, 2010, str. 309).

Page 16: Seminar programski jezici

14

3.3. Objektno orijentirano programiranje Prema tradicionalnom shvaćanju računalni program se promatra kao skup funkcija ili pojednostavljeno kao slijed točno definiranih instrukcija. Objektno orijentirano programiranje (engl. Object Oriented Programming, OOP) polazi od toga da se računalni program može promatrati kao skup pojedinačnih gotovih komponenata (objekata, klasa). Svaki objekt ima sposobnost primanja poruke, obrade podataka i slanja poruke drugim objektima, iz čega proizlazi da se svaki objekt može promatrati kao manji neovisni dio koji ima svoju točno odreñenu ulogu odnosno odgovornost (zadužen je za svoj dio posla). Objekt ima pristup bilo kojem znanju potrebnom za izvršavanje njegovih zadaća, što ne znači da objekt sadrži to znanje (informaciju), već ga može saznati pitajući neki drugi objekt. U klasičnom programiranju postoje aktivni (funkcije i procedure) i pasivni (podaci) elementi. Kod objektno orijentiranog programiranja, podaci i naredbe koje manipuliraju s podacima čine jedinstvenu jedinicu, objekt. Zadatak programera je da, primjenjujući aktivne elemente nad pasivnima, riješi problem. Kod OOP programer ima zadatak da usmjerava i nadgleda komunikaciju meñu objektima. Na taj način programer je više koncentriran na podatke i manipuliranje podacima nego na to kako će se napisati programski kôd za obradu nekih podataka (v. Drabić). Prisutnost različitih objekata može se posebno uočiti kod operacijskih sustava s grafičkim korisni čkim sučeljem (engl. Graphic User Interface, GUI) kod kojih su ikone objekti. Svakoj od njih pridružen je skup osobina i akcija koje opisuju kako reagira na vanjske dogañaje (što se dogaña kada jednom kliknemo, kada dva puta kliknemo, kada pritisnemo desnu tipku na mišu i sl.). Zbog upotrebe gotovih objekata koji zahtijevaju dodatnu programsku nadogradnju, objektno orijentirani programi sporije se izvršavaju od tradicionalnih programa. Iako se smatra da je pisanje programa pomoću objekata jednostavnije, ipak velik dio programera i dalje je sklon tradicionalnom načinu programiranja, tako da dobar dio postojećih aplikativnih programa nije napisan odnosno prerañen u objektno orijentirane programe (cijena i potrebno vrijeme prerade često su neprihvatljivi). Najveća prednost objektno orijentiranog programiranja je ponovna iskoristivost programskog kôda (engl. code reusability) što olakšava proces razvoja u održavanja, jer se jednom napisani kôd može koristiti više puta i na više različitih načina (v. Grundler, 2000., str. 351). Još 1967. godine nastao je jezik Simula 67, koji je omogućio programerima definiranje vlastitih tipova podataka nazvanih objekti. Osmišljen je kako bi programeri mogli pisati simulacijske programe. U ranim 1980-tima razvijen je Smalltalk u istraživačkom centru PARC tvrtke XEROX. Sredinom 1980-tih predstavljen je jezik C++, a 1995. tvrtka Sun Microsystems je na konferenciji SunWorld ’95 službeno objavila jezik Java, kao jezik za izradu distribuiranih mrežnih programa. Razvojem Interneta javila se i potreba da napisani programi rade identično na različitim platformama (operacijskim sustavima), što upravo objektno orijentirani jezik Java olakšava i omogućuje. Godine 2000. tvrtka Microsoft predstavlja jezik C# vrlo sličan Javi, ali ipak nešto bliži C++ jeziku nego Javi.

Page 17: Seminar programski jezici

15

3.4. Programski alati za brz razvoj namjenskih programa (RAD) Pojavom operacijskih sustava s grafičkim korisničkim sučeljem (GUI) raste potreba za novim programskim jezicima i alatima koji omogućuju jednostavnu i brzu izradu korisničkog sučelja i pripajućih programa. Polovicom 1990-tih godina razvijaju se programski alati za brz razvoj namjenskih programa pod nazivom RAD (engl. Rapid Application Development). Osnovna razlika izmeñu RAD i tradicionalnih metoda programiranja jest mogućnost usporednog razvoja različitih dijelova programa, upotreba gotovih modula, te jednostavna izrada GUI (v. Grundler, 2000., str. 352). Programski RAD alati su objektno orijentirani programski jezici što znače da koriste gotove objekte, ali za razliku od prvobitnih objektno orijentiranih jezika, RAD alati mogu koristiti i objekte napisane u nekom drugom jeziku. Upotrebom RAD alata crta se GUI, a njegovi se dijelovi biraju iz biblioteke gotovih objekata (npr. izbornici, prozori, tipke). Takav način programiranja zove se vizualno (grafičko) programiranje , prednost mu je što omogućuje izradu velikog dijela korisničkog sučelja, kao i nekih dijelova programa, bez klasičnog pisanja instrukcija. RAD alati uvode i nove metode programiranja, kao npr. spiralno programiranje . Za razliku od tradicionalnih postupaka (dijagram programa, pseudokôd), ovdje se počinje s izradom GUI. Nakon primjedbi korisnika o radnom prostoru, pristupa se ispravljanju i dogradnji programa (v. Martinović, G., 2006.). Poznati programski jezici odnosno alati koji podržavaju RAD programiranje su:

• Visual C++ (Microsoft), • Visual Basic (Microsoft), • Delphi (Borland), • PowerBuilder (PowerSoft), • SQLWindows (Gupta), • PowerObjects (Oracle).

Slika 6. Brz razvoj namjenskih programa Izvor: http://ninefold.com/assets/images/blog-programming-history.png (30.3.2013.)

Page 18: Seminar programski jezici

16

3.5. Programski jezici neovisni o sklopovlju i operacijskom sustavu Viši programski jezici opće namjene neovisni o sklopovlju i operacijskom sustavu nazivaju se prenosivi (engl. portable) programi . Prenosivi, jednom napisan i prevedeni program u načelu se može izvršavati na više tipova računala koji rade pod različitim operacijskim sustavima. U praksi to nije tako: strojni jezik (izvorni kôd) koji je rezultat prevoñenja ne može se izvršavati na različitim vrstama računala, već samo na onom na kojem je program preveden. Pojavom lokalnih i široko rasprostranjenih mreža, a posebice Interneta potaknut je razvoj novih programskih jezika za pisanje znakovima koje prihvaća svako računalo (omogućena prenosivost programa, a da proizvoñač ne mora isporučiti izvorni kôd). Poznati su i pod nazivom Web programski jezici. Najpoznatiji takvi programski jezici su (v. Panjkota):

• HTML (Hypertext Markup Language) • VRLM (Virtual Reality Markup Language, Virtual Reality Modeling

Language) • XML (Extensible Markup Language) • PHP (Hypertext Preprocessor) • JavaScript • Java

Slika 7. Programski jezici za web aplikacije Izvor: http://makoweb.com/images/web-design-programming.jpg (30.3.2013.)

Page 19: Seminar programski jezici

17

3.6. Proceduralni i neproceduralni pogramski jezici Prema kriteriju „proceduralnosti“ programski se jezici dijele na proceduralne (slijed naredbi odreñuje KAKO obaviti neki posao) i neproceduralne (slijed naredbi odreñuje ŠTO treba učiniti). Za strojni jezik može se reći da je 100% proceduralan, a za druge jezike teško je povući granicu i reći da li jezik spada u proceduralni ili neproceduralni. Jezici 3GL i 4GL kombinacija su proceduralnih i neproceduralnih komponenti (v. Tuñman i dr.). Proceduralni programski jezici (engl. procedural programing languages) su jezici koji sadrže naredbe petlje (npr. FOR ... NEXT, DO ... WHILE), uvjetne naredbe (npr. IF ... THEN, CASE), ponekad čak i naredbu skoka (npr. GOTO). Tipični primjeri proceduralnih jezika koji su zadržali naredbu skoka (iako ona nije nužna za pisanje programa) su jezici BASIC, FORTRAN i COBOL. Ipak, osnovna karakteristika proceduralnih jezika je da imaju sposobnost izvršavanja samostalnih podcjelina (potprograma, procedura). Podvrste proceduralnih programskih jezika su v. Grundler, 2000., str. 414):

• Strukturirani programski jezici (engl. structured programing languages), oni u pravilu ne sadže naredbu skoka, programi pisani u tim jezicima strogo su strukturirani, pisani u obliku modula (manjih cjelina koje se mogu neovisno pisati i provjeriti, a po završetku ugraditi u glavni program). Predstavnici ove skupine su jezici Pascal, Modula-2, C jezik.

• Objektno orijentirani programski jezici (engl. object oriented programing languages, OOPL), omogućavaju objedinjavanje programskih instrukcija i podataka u cjelinu (objekt) koju se može koristiti kao samostalni program. Predstavnici OOPL su jezici Smalltalk i Delphi.

• Programski jezici upravljani (pokretani) dogañajima (engl. event-driven programing languages), kod kojih je kontrola toka izvoñenja programa vezana na dogañaje koji se zbivaju u sustavu, te oni upravljaju tijekom izvoñenja. Dogañaji mogu biti pokrenuti akcijom korisnika (npr. pomak miša, pritisak na tipku miša, pritisak na odreñenu tipku na tastaturi), porukama sustava ili drugih programa te samog programa koji se izvodi (v. Pavković i dr., 2005). Predstavnici ovih programskih jezika su uglavnom jezici s prefiksom “Visual”, npr. Visual Basic, Visual C++, te jezik C#.

Neproceduralni programski jezici (engl. nonprocedural programing languages) su jezici koji ne sadrže naredbe za upravljanje tijekom programa: uvjetne naredbe, naredbe skoka i sl. Korisnik ne upravlja tijekom odvijanja programa, već opisuje problem koji treba riješiti (jasno, precizno i nedvosmisleno), a programskom alatu i jeziku prepušta način na koji će doći do rješenja. Primjerice, SQL jezikom korisnik može definirati što želi raditi s podacima koje sadrži odreñena baza podataka, ali ne i način na koji će se to raditi. Podvrste neproceduralnih programskih jezika su (v. Grundler, 2000., str. 415):

• Deklarativni neproceduralni programski jezici (engl. declarative nonprocedural programing languages), oni nemaju propisanu sintaksu već se

Page 20: Seminar programski jezici

18

oslanjaju na unaprijed odreñena moguća djelovanja korisnika (npr. izbor ponuñene akcije iz izbornika, klik tipkom miša na željenu opciju). Primjer deklarativnog neproceduralnog jezika je SQL jezik.

• Macro naredbe (engl. macro), omogućavaju pamćenje akcija korisnika i po potrebi njihovo ponavljanje.

• Jezici koji svoje djelovanje temelje na pravilima (engl. rule-based programing languages), osnovno svojstvo im je da se obrada ulaznih podataka odvija sukladno unaprijed definiranim pravilima. Najviše se koriste u području umjetne inteligencije. Tipičan primjer je jezik Prolog.

Velik dio programskih jezika spada istovremeno u više navedenih kategorija i podkategorija.

Slika 8. Primjer macro naredbe Izvor: http://www.softarea51.com/screenshot/Hotkey_Recorder.gif (31.3.2013.)

Page 21: Seminar programski jezici

19

3.7. Programske paradigme Jedna od podjela programskih jezika je prema paradigmi (pristupu, metodologiji, stilu) programiranja (engl. programming paradigm). Razlikujemo v. pavković i dr., 2005.):

• Imperativno (proceduralno) programiranje, • Deklarativno (logičko) programiranje, • Objektno orijentirano programiranje, • Funkcionalno programiranje.

Slika 9. Programske paradigme Izvor: http://laris.fesb.hr/predavanja/images/progjez2.JPG (31.3.2013.) Imperativna (proceduralna) paradigma predstavlja tradicionalni pristup procesu programiranja, na njoj se temelje algoritmi napisani pseudokôdom i oni napisani strojnim jezikom. Postupak programiranja, imperativna paradigma definira kao slijed sekvenci naredbi koje na odgovarajući način manipuliraju s podacima da bi se dobio rezultat. Tipični predstavnici su jezici FORTRAN, ALGOL, Pascal i jezik C++. Za razliku od imperativne paradigme koja podrazumijeva da programer sam osmisli algoritam, deklarativna (logička) paradigma od programera traži da problem opiše u formi koja je prilagoñena nekom općem algoritmu. Programerov zadatak jedino je da precizno opiše problem, a računalu je prepušteno otkrivanje algoritma. U praksi, često ne postoje opći algoritmi koji bi rješavali neki specifični problem. Primjena deklarativnog programskog jezika pretpostavlja da je netko jednom otkrio i primijenio algoritam za neku ponavljajuću proceduru. Programer treba opisati odnose meñu parametrima koji se simuliraju tom procedurom. Jezici Prolog i Datalog predstavnici su deklarativnih programskih jezika.

Page 22: Seminar programski jezici

20

Kod objektno orijentirane paradigme, podaci i procedure (naredbe, programski kôd) koje manipuliraju s podacima čine jedinstvenu aktivnu jedinicu, objekt. Svaki objekt egzistira kao odvojena, samostalna jedinica. Jednom definirani objekt može se koristiti po potrebi kad god nam zatreba, on je osnovni dio strukture programa. U objektno orijentiranom programiranju osnovni cilj programera je da skupi podatke i akcije u neku vrstu „kutije sa alatom“ koju će koristiti za brži razvoj novih aplikacija. Primjeri objektno orijentiranih programskih jezika su Smalltalk, Simula, Visual Basic, Visual C++, C#, Java. Funkcionalna paradigma sagledava proces razvoj programa kao spajanje unaprijed definiranih “crnih kutija” od kojih svaka prihvaća odreñene ulaze i daje odgovarajuće izlaze. U funkcionalnom programiranju funkcije se primjenjuju na argumente i vrijednosti. Vraćene vrijednosti se koriste kao argumenti za druge funkcije sa izbjegavanjem prepisivanja naredbi. Primjeri funkcionalnih jezika su LISP, Haskell, ML, Scheme.

Slika 10. Primjer korištenja funkcionalnog jezika Haskell Izvor: http://img.bhs4.com/6B/1/6B1844B14B100B85E2CF5F2AAADFB483D3ADD67A_lis.jpg (31.3.2013.)

Page 23: Seminar programski jezici

21

4. ZASTUPLJENOST (POPULARNOST) PROGRAMSKIH JEZIKA Programerska zajednica TIOBE svakog mjeseca izračunava indeks popularnosti programskih jezika na osnovu podataka dobivenih preko popularnih Internet tražilica te stranica kao što su Wikipedia, Amazon, YouTube i Baidu, a predstavlja djelomičnu referencu za programere koja može poslužiti za planiranje budućih sustava ili projekata. U izračun indeksa uzimaju se informacije o broju stručnjaka i inženjera iz pojedinog programskog jezika diljem svijeta, količini tečajeva i raznih prodavača i proizvoñača, bez ulaženja u analizu koji je programski jezik bolji ili u kojem je napisano više linija koda, što prema priznanju predstavnika Tiobe kompanije za standarde u kodiranju nije prava znanstvena metoda već predstavlja najbližu moguću aproksimaciju popularnosti. U tablicama koje slijede dani su najnoviji podaci za mjesec ožujak 2013. godine. Tablica 1: Pozicije prvih 20 programskih jezika prema TIOBE-u

Izvor: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (31.3.2013.)

Page 24: Seminar programski jezici

22

Tablica 2: Pozicije od 21. do 50. mjesta na listi popularnosti

Izvor: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (31.3.2013.)

Page 25: Seminar programski jezici

23

Tablica 3: Prvih deset programskih jezika kroz godine

Izvor: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (31.3.2013.) Tablica 4: Najpopularniji jezici posljednjih 10 godina

Izvor: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (31.3.2013.)

Tablica 5: Zastupljenost programskih paradigmi

Izvor: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (31.3.2013.)

Page 26: Seminar programski jezici

24

Dijagram 1: Zastupljenost programskih jezika posljednjih deset godina

Izvor: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (31.3.2013.)

Page 27: Seminar programski jezici

25

5. POVIJESNO ZNAČAJNI PROGRAMSKI JEZICI Prema nekim informatičkim izvorima, 1985. godine postojalo je oko 150 programskih jezika, godine 1990-te broj je narastao na 300, a 2008. godine bilo ih je oko 800. Mjesečno se stvara jedan novi programski jezik (v. Martinović, M.). Kako u tom mnoštvu programskih jezika izvojiti najznačajnije? Teško! Po kojem kriteriju? FORTRAN FORTRAN (FORmula TRAnslator) je najstariji viši programski jezik. Razvijen je u razdoblju 1954.-1958. godine na temelju zamisli Johna Backusa, a prvi puta je objavljen 1957. godine od strane kompanije IBM. Namjenjen je prije svega primjeni u tehničkom i znanstvenom području gdje je potrebno riješti različite analitičke probleme koji se mogu definirati matematičkim formulama i relacijama. Iako je osmišljen za velika računala, kasnije je nastalo mnogo inačica i za velika i za osobna računala. Prema indeksu popularnosti TIOBE-e danas je na 28. mjestu, što je vrlo visoka pozicija s obzirom da je specijaliziran isključivo za tehničko i znanstveno područje primjene.

Slika 11. Primjer korištenja jezika FORTRAN Izvor: http://www.radiantzemax.com/content_images/fortran/fortran7.gif (1.4.2013.)

Page 28: Seminar programski jezici

26

COBOL COBOL (Common Business Oriented Language), razvijen je 1959. godine za potrebe u komercijalnim poslovima kao računovodstvo, prodaja, obračun plaća i sl. Sintaksa jezika slična je govornom engleskom jeziku. Težište jezika je na strukturama podataka pogodim za obradu baza podataka. Koristi se mnogo više kod velikih računala nego kod osobnih računala. Neprekidno se razvijaju nove inačice programa, a postoje i više vizualnih inačica. Prema indeksu popularnosti TIOBE-e danas je na 26. mjestu, što je visoka pozicija s obzirom da ima daleko veću primjenu kod velikih računala nego kod osobnih račuala, a i područje primjene mu je orijentirano isključivo za komercijalne poslove.

Slika 12. Primjer korištenja jezika COBOL Izvor: http://www.netcobol.com/sites/default/files/screenshots/COBOL-in-Visual-Studio.png (1.4.2013.)

Page 29: Seminar programski jezici

27

BASIC BASIC (Begginers All-purpose Symbolic Instruction Code), viši programski jezik, vrlo jednostavan za učenje i korištenje, čak i početnicima. Razvijen je na Dartmouth College u razdoblju 1962.-1964. godine, a glavna namjena bila mu je približiti računala učenicima i ljudima koji nisu stručnjaci za računala. Iako je razvijen za rad na mikroračunalima (Comodore, Apple II i dr.), koristi se i na velikim sustavima. BASIC se smatra prvim višim programskim jezikom napisanim za osobna računala. Postoji mnoštvo meñusobno različitih i više ili manje neusklañenih inačica jezika BASIC (True BASIC, QW BASIC, QuickBASIC, Turbo BASIC; Visual BASIC i dr.). Visual BASIC pojednostavnio je pisanje programa za Windows sučelje, te je u području Windows programiranja imao istu ulogu kakvu je prvi BASIC program imao pri približavanu računala učenicima i neprofesionalcima. Godinama je na listama najpopularnijih programskih jezika. Basic spada u interpretere, a postoje inačice koje imaju dograñen i kompajler. Navodno je prvi program kojega je prodao Bill Gates i njegov partner Paul Allen bio BASIC, a prodali su ga tvrtki MITS 1975. godine (v. Grundler, 2000., str. 342).

Slika 13. Primjer korištenja jezika Visual BASIC Izvor: https://cce.cpcc.edu/computertraining/photos/vb1.gif (1.4.2013.)

Page 30: Seminar programski jezici

28

Pascal Pascal je programski jezik nazvan po francuskom matematičaru Blaise Pascalu, razvio ga je švicarski profesor Niklaus Wirth u razdoblju 1967.-1971. godine. Isprva je bio namijenjen učenju strukturnog programiranja, pa je stekao veliku popularnost u akademskim krugovima. Novije inačice programa dovoljno su kvalitetne da osim za učenje mogu poslužiti i za profesionalnu primjenu u rješavanju matematičkih i znanstvenih problema. Na širu primjenu jezika Pascal velik utjecaj imala je pojava jezika Turbo Pascal tvrtke Borland International, 1983. godine. Tijekom godina tvrtka Borland višestruko je usavršavala Turbo Pascal, ali i nastavila s objavljivanjem i kvalitetnijih programskih jezika (npr. Borland C, Quatro Pro, Paradox, Delphi) koji su nastali upravo pod utjecajem jezika Pascal.

Slika 14. Primjer korištenja jezika Pascal Izvor: http://i.ytimg.com/vi/lJcvJmY0dl0/0.jpg (1.4.2013.) Module-2 Module-2 (Modular Language) razvio je Niklaus Wirth u razdoblju 1977.-1979. godine želeći unaprijediti jezik Pascal. Glavne odlike jezika su modularnost i mogućnost istodobnog izvršavanja više neovisnih programa. Modula-2 ima karakteristike objektno orijentiranog jezika i u tom smislu se može smatrati pretečom suvremenih objektno orijentiranih jezika. Ipak, Modula-2 nije ni približno doživio popularnost jezika Pascal.

Page 31: Seminar programski jezici

29

Delphi Delphi je programski firme Borland utemeljen na jeziku Pascal-u, pojavio se na tržištu 1995. godine. Zamišljen je za brz razvoj namjenskih programa (RAD) s mnoštvom alata za ispomoć u oblikovanju grafički orijentiranog sučelja. U trenutku pojave na tržištu programski jezik Delphi je imao najbrži kompajler, podržavao je server/client tehnologiju. U Delphi ugrañena je i podrška bazama podataka, a omogućuje dodavanje objekata i upotrebu objekata koje je napisao netko drugi. Delphi je u potpunosti objektno orijentirani jezik.

Slika 15. Primjer korištenja jezika Delphi Izvor: http://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Delphi_XE2.png/120px-Delphi_XE2.png (1.4.2013.) LOGO LOGO je viši programski jezik stvoren s ciljem da se početnici, pa čak i djeca uče logici programiranja i korištenja računala. Nastao je 1968. godine u Cambridgeu, a daljnji razvoj doživio je na MIT (Massachusetts Institute of Technology) u sklopu projekta “Logo Group”. LOGO se više smatra pomagalom u nastavi, nego programskim jezikom. Glavni razlog njegove popularnosti leži u činjenici da je bio prvi jezik koji je omogućio jednostavno crtanje pomoću računala bez složenog programiranja.

Page 32: Seminar programski jezici

30

Slika 16. Primjer korištenja jezika LOGO Izvor: http://code.google.com/p/trophy-logo/ (1.4.2013.) Programski jezici C, C++, C# Jezik C je razvio Dennis Ritchie u Bell Laboratories 1972. godine, a proizašao je iz razvoja UNIX operacijskog sustava. Sam operacijski sustav UNIX napisan je u jeziku C. Prve inačice za osobna računala pojavile su se 1983.(Microsoft) i 1984. (Digital Research) godine. Jezik C je vrlo složen, široke lepeze mogućnosti, a namijenjen je prvenstveno stručnjacima koji se profesionalno bave programiranje. Program se neprekidno usavršava, a razvijene su i brojne Visual inačice. Postoji mnoštvo pomoćnih alata, gotovih programa i potprograma, biblioteka, grafičkih pripravaka i sl. pisanih u C jeziku. Objektno orijentirana inačica C jezika je C++ jezik koji je nastao u Bell Laboratories u razdoblju 1980.-1983. godine. Jezik C++ objedinjuje dobra svojstva naslijeñena iz C jezika i prednosti objektno orijentiranog programiranja. Omogućava programiranje i na tradicionalan način i objektno programiranje unutar istog programa. Jezik C++ najpopularniji je objektno orijentirani jezik za osobna računala. Programski jezik C# (C sharp) je proizvod tvrtke Microsoft i nastao je 2002. godine kao odgovor na nedostatke postojećih jezika kao što su C, C++ i Visual Basic, u isto vrijeme kombinirajući njihove dobre osobine. Jezik C# jezik je opće namjene, iako mu je prvobitna namjena bila izrada aplikacija za MS .NET Framework platformu.

Page 33: Seminar programski jezici

31

Slika 17. Primjer korištenja jezika C++ Izvor: http://www.blog.dolati.com/visvas/wp-content/gallery/blog_bilder/dev-c.png (1.4.2013.) SQL Programski jezik SQL (Structured Querry Languages) razvila je tvrtka IBM kao jezik koji je korisničko sučelje prema relacijskim bazama podataka. SQL jezik omogućuje stvaranje i brisanje tablica, pohranu podataka u tablice i sl. Baza podataka može biti smještena na bilo kojem računalu u mreži. SQL jezik sastoji se od dva dijela (v. Grundler, 2000., str. 398):

• SQL poslužitelja (engl. SQL server), • SQL stranke (engl. SQL client).

SQL poslužitelj nalazi se na računalu na kojem je smještena baza podataka. Njegov zadatak je izvoñenje operacija u relacijskoj bazi koje zatraži korisnik (stranka). Stranka koja poželi podatke treba postaviti upit, a SQL poslužitelj obavlja sve potrebne radnje i dostavlja tražene podatke. Da bi mogao postaviti upit korisnik mora na svom računalu imati instaliran drugi dio programa, SQL stranku. Taj dio poznat je i pod nazivom SQL sučelje (engl. SQL front end). Osnovna zadaća SQL jezika je osigurati korisniku obradu i prijenos podataka, bez obzira gdje se u mreži nalazi baza podataka. Baza podataka osim na jednom računalu (SQL poslužitelju) može biti podijeljena u dijelove i smještena na više računala u

Page 34: Seminar programski jezici

32

mreži. Programski jezik SQL najčešće je vezan za poslužitelj/stranka tehnologiju (engl. client/server). SQL jezik danas je standardiziran od organizacija ANSI i ISO. Standardom je definirana sintaksa i semantika dva podjezika (v. Pavlić, 1996., str. 235.):

• SQL-DDL, podjezik za definiranje baze podataka;

• SQL-DML, podjezik za manipulaciju podacipa u bazi podataka. SQL jezik je na neki način neproceduralan jer definira ŠTO se želi napraviti, a ne KAKO to napraviti. Osnovna karakteristika programskog jezika SQL je jednostavnost pri korištenju.

Slika 18. Primjer korištenja SQL jezika Izvor: http://img.tfd.com/cde/_NATLANG.GIF (1.4.2013.)

Page 35: Seminar programski jezici

33

HTML HTML (HyperText Markup Language) je specijalizirani programski jezik namijenjen izradi hipertekstovnih dokumenta (hipertekst je tekstualna struktura koja se sastoji od meñusobno povezanih jedinica informacije prikazana na nekom elektroničkom ureñaju). Osnovna zadaća jezika HTML jest omogućiti prikaz mrežnoga hipertekstovnog dokumenta na zaslonu monitira bez obzira o kojem računalu odnosno operacijskom sustavu se radi. Omogućuje razmjenu podataka posredstvom Interneta odnosno bilo koje mreže koja koristi iste norme i protokole kao Internet (v. Martinović, M.).

Slika 19. Primjer korištenja HTML jezika Izvor: http://pubpages.unh.edu/~njo32/html.html (1.4.2013.)

Page 36: Seminar programski jezici

34

JAVA Programski jezik JAVA nastao je u razdoblju 1990.-1995. godine u tvrtki Sun Microsystems, osmišljen je pojavom Interneta zbog potrebe prenosivosti tj. mogućnosti izvršenja jednog te istog programa na različitim računalima i na različitim platformama (operacijskim sustavima). Godine 1995. tvrtka Sun Microsystems je službeno objavila jezik Java i www preglednik Hotjava napisan u jeziku Java. Jezik Java može se koristiti i neovisno o Internetu. Spada u objektno orijentirane jezike opće namjene, informatičari ga usporeñuju sa jezikom C++. Godinama je na listama najpopularnijih programskih jezika. Za korisnike skromnijih zahtjeva postoji programski jezik JavaScript, koji je po mogućnostima negdje izmeñu HTML i Java jezika. Za razliku od jezika Jave koji je zamišljen kao samostalni programski jezik, JavaScript namijenjen je upotrebi posredstvom preglednika i uključuje se u izvornom obliku u HTML dokument. Mogućnosti su mu skromnije, izvoñenje sporije od Jave, ali je zato pisanje programa jednostavnije (v. Grundler, 2000., str. 362).

Slika 20. Prikaz kôda u jeziku JAVA Izvor: http://damijan.si/images/java.png (1.4.2013.)

Page 37: Seminar programski jezici

35

LISP LISP (List Processing) razvijen je na MIT (Massachusetts Institute of Technology) u razdoblju 1958.-1960. godine na temelju istraživanja u području umjetne inteligencije. Američko ministarstvo obrane je uz programski jezik COBOL odobrilo i jezik LISP za pisanje programa za svoje potrebe. Osnovna razlika LISP jezika u odnosu na prethodne programske jezike jest mogućnost rukovanja objektima umjesto brojeva. LISP je našao veliku primjenu u području umjetne inteligencije i području razvoja ekspertnih sustava.

Slika 21. Primjer korištenja jezika LISP Izvor: http://groups.engin.umd.umich.edu/CIS/course.des/cis400/lisp/crapsout.gif (1.4.2013.)

Page 38: Seminar programski jezici

36

Prolog Prolog (Programming in Login) je programski jezik nastao 70-tih godina prošlog stoljeća kao rezultat suradnje dvaju univerziteta: Edimburg University i University of Aix-Marseille. Usko je vezan za razvoj projekata na području umjetne ineteligencije, kao npr. razumijevanje govora i za razvoj ekspertnih sustava. Jezik Prolog je bio daleko popularniji u Evropi i Japanu nego u SADu-u. Veću popupalrnost kod osobnih račuala Prolog je doživio pojavom Turbo Prologa kojeg je 1986. godine predstavila tvrtka Borland. Danas postoje različite inačice jezika Visual Prolog.

Slika 22. Primjer korištenja Prolog jezika Izvor: http://www-ru.softsalad.com/screenshots/big/000/visual_prolog_8ab48f.png (1.4.2013.)

Page 39: Seminar programski jezici

37

6. ZAKLJU ČAK

Ljudi za meñusobnu komunikaciju koriste jezik kao sredstvo za predstavljanje i prenošenje informacija. Komunikacija čovjeka i računala odvija se pomoću niza instrukcija koje računalo treba izvršiti. Programski jezik je sredstvao kojim čovjek razmjenjuje informacije s računalom. Prirodni jezici dopuštaju nepreciznost i nedorečenost. Računalo može razumijeti samo formalni zapis, ne dopušta ni najmanju nepreciznost. Jednoznačnost svake instrukcije programskog jezika je njegova najznačajnija karakteristika. Programski jezik je skup pravila kojim se računalu predstavljaju instrukcije i opisuju podaci.

Postoje podjela programskih jezika prema različitim kriterijima, ali sve one se uglavnom baziraju na stupnju razvoja i mogućnostima programskog jezika. Prvi viši programski jezici (3GL) nastali su oko 1960-te godine. Početkom 80-tih godina 20. st. došlo je do “software-ske krize”, nagli razvoj hardware-a doveo je do znatnog povećanja primjene računala u različitim područjima. Posljedica toga je bila da su timovi programera morali raditi na razvoju jednog projekta. Svaki dio tima razvijao je relativno nezavisne module, koje su zatim slagali u funkcionalnu cjelinu, korisničku aplikaciju. Svaki od modula moguće je koristiti u različitim aplikacijama. Javljaju se i nove vrste jezika, lakših za programere, ali i za krajnje korisnike. Više ne treba toliko poznavati programski kôd, ali treba jako dobro poznavati procese. Kod većine tih novih jezika polazi se od pretpostavke da je organizacija memorije i imenovanje podataka već izvršeno i to obično u obliku relacijske baze podataka. U kategoriju jezika 4GL pored programskih jezika spadaju i jezični alati:

• upitni jezici za bazu podataka, • jezici za podršku u odlučivanju, • generatori aplikacija, • generatori izvještaja, • jezici i alati za grafičku obradu podataka.

Pojavom Interneta javila se i potreba da programi napisani za jedan tip računala rade identično i na drugom tipu računala odnosno na različitim platformama (operacijskim sustavima). Dolazi do razvoja programskih jezika koji trebaju omogućiti prenosivost (jezik treba biti sastavljen od znakova koje prihvaća svako računalo).

Danas se sve više koriste programski jezici visoke razine koji su bliski prirodnom jeziku (5GL), pa su i poznati pod nazivom “prirodni jezici”. Prirodan jezik je sličan upitnom jeziku, ne postoji potreba da korisnik ili programer nauči sintaksu jezika. Tekst instrukcije je vrlo blizak ljudskom govoru, imitira način funkcioniranja ljudskog mozga u cilju rješavanja složenih problema. Jezici tog tipa koriste se u razvoju ekspertnih sustava, sustava baze znanja, strojnog odlučivana, umjetne inteligencije.

Svakim danaom na tržištu software-a sve je više alata za razvoj aplikacija bez programiranja. Ti alati imaju mogućnost pojednostavniti i skratiti razvojni proces te omogućiti izradu korisničkih aplikacija bez potrebe za specifičnim specijalističkim znanjima iz programiranja

Što nam donosi budućnost na području razvoja programskih jezika? Teško je, barem meni, i zamisliti.

Ovaj seminarski rad završila bi jednom anegdotom koja je na neki način i odgovor na postavljeno pitanje: Budući da je programski jezik JAVA razvila tvrtka Sun Microsystems, kad se JAVA kao jezik tvrtke Sun počeo koristiti u Hrvatskoj, navodno su se često programeri pitali “Je li ovo san ili java?” I zaista, oboje je točno...

Page 40: Seminar programski jezici

38

LITERARURA 1. Birolla, H.; Ferišak, V. i dr.: Osnove informatike, INFORMATOR, Zagreb,

1989.

2. Drabić, D.: Programiranje ,

http://staro.strahoninec.hr/UserFiles/File/MIS/skripte/Programiranjep.pdf

(19.3.2013.)

3. Gašpar, D.: Osnove programiranja, Ekonomski fakultet, Mostar, 2010,

http://ef.sve-mo.ba/materijal/3_PE/PROG/PROG_20032012_1.pdf (20.3.2013.)

4. Gotovac, H.: Osnove programiranja, Fakultet grañevinarstva, arhitekture i

geodezije, Sveuciliste u Splitu, Split,

http://www.gradst.hr/Portals/9/docs/katedre/Tehnicka%20mehanika/dodatno/1.Vj

ezbe.pdf (23.3.2013.)

5. Grundler, D.: Primjenjeno računalstvo, Graphis, Zagreb, 2000.

6. Grbavac, V.: Informatika - kompjutori i primjena , DOIK, Zagreb, 2010.

7. Gudelj, A.: Programski jezici, Pomorski fakultet u Splitu, 2011.,

www.pfst.hr/old/data/materijali/p4.pdf (20.3.2013.)

8. Jurak, M.: Programski jezik C , PMF, Zagreb, 2003.,

web.math.pmf.unizg.hr/~singer/Prog_Add/c.pdf (23.3.2013.)

9. Martinović, G: Programiranje I , Elektrotehnički fakultet, Osijek, 2006.,

http://www.etfos.unios.hr/upload/OBAVIJESTI/obavijesti_preddiplomski/833P20

06-09.pdf (21.3.2013.)

10. Martinović, M.: Osnove informatike, Veleučilište u Slavonskom Brodu,

http://www.vusb.hr/~mmartinovic/informatika-men/Predavanje_4.pdf

(20.3.2013.)

11. Mateljan, M.: Koncepti proceduralnih jezika, FESB, Split,

http://marjan.fesb.hr/~mateljan/jip/1Uvod/01-

koncepti%20proceduralnih%20jezika.pdf (23.3.2013.)

12. Matetić, M.: Programiranje , Sveučiliste u Rijeci, Odjel za informatiku, Rijeka,

2008., http://www.inf.uniri.hr/~amestrovic/prog1p/MATERIJALI_DWN/uvod.pdf

(22.3.2013.)

13. Panian, Ž.: Metodika programiranja , Birotehnika, Zagreb, 1987.

Page 41: Seminar programski jezici

39

14. Panjkota, A.: Primjena računala, Sveučilište u Zadru,

http://www.unizd.hr/Portals/1/Primjena_rac/Brodostrojarstvo/predavanje_3.pdf

(20.3.2013.)

15. Pavković, N.; Marjanović, D.; Bojčetić, N.: Programiranje i algoritmi , FSB,

Zagreb, 2005.,

http://ttl.masfak.ni.ac.rs/SUK/Programiranje%20i%20algoritmi%202.pdf

(19.3.2013.)

16. Pavlić, M.: Informacijski sustavi , Odjel za informatiku, Sveučilište u Rijeci,

Rijeka, 2009.

17. Pavlić, M.: Razvoj informacijskih sustava – Projektiranje , prakti čna

iskustva, metodologija, Znak, Zagreb, 1996.

18. Roller, D.: Informati čki priru čnik za nastavu i praksu, Informator, Zagreb,

1996.

19. Rosić, M.: Informatika , PMF Split,

http://informatikapmf.weebly.com/uploads/6/3/5/0/6350815/programiranje_preda

vanja.pdf (23.3.2013.)

20. Smiljanić, G.: Mikrora čunala, Školska knjiga, Zagreb, 1990.

21. Souček, B.: Mikroprocesori i mikrora čunala, Tehnička knjiga, Zagreb, 1978.

22. Šimović, V.; Milković, M.; Varga, M.: Metodičko-didakti čki priru čnik za

poučavanje programiranja u C i C++ programskim jezicima prema Addie

modelu, Veleučilište u Varaždinu, Varaždin, 2012.

23. Trifunov, N.T.: Uvod u programiranje, PMF, Novi Sad, 2011.,

http://perun.pmf.uns.ac.rs/tosic/UUP01v2.pdf (21.3.2013.)

24. Tuñman, M.;Boras, D.; Dovedan, Z.: Uvod u informacijske znanosti, Filozofski

fakultet, Zagreb,

http://dzs.ffzg.unizg.hr/text/Uvod%20u%20informacijske%20znanosti/

(20.3.2013.)

25. Vučković, M.: Programski jezici, Fakultet organizacijskih nauka, Beograd,

2010., http://www.pjp.fon.rs/Files/b2427966-5e34-4f17-925c-

d00d4b3c0838/Jezicke_paradigme.pdf (23.3.2013.)

26. Žagar, M.: UNIX – Kako ga koristit , Zveza organizacij ze tehnično kulturo

Slovenije, Ljubljana, 1987.

27. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (25.3.2013.)

Page 42: Seminar programski jezici

40

Dodatni elektronički izvori (Poglavlje 5. Povijesno značajni programski jezici)

Povijesno značajni jezici (str. 25.) http://en.wikipedia.org/wiki/Programming_languages http://www.webopedia.com/TERM/H/high_level_language.html http://www.webopedia.com/TERM/F/fourth_generation_language.html www.microsoft.com/ http://www.borland.com/ http://www.ibm.com/us/en/ http://sun-microsystems-inc.software.informer.com/ http://www.oracle.com/technetwork/database/index.html FORTRAN (str. 25.) http://en.wikipedia.org/wiki/Fortran http://www.webopedia.com/TERM/F/FORTRAN.html http://www.britannica.com/EBchecked/topic/214283/FORTRAN http://www.ibiblio.org/pub/languages/fortran/ch1-1.html http://www.fortranplus.co.uk/resources/fortran_resources.pdf http://www.fortran.com/ COBOL (str. 26.) http://en.wikipedia.org/wiki/COBOL http://www.webopedia.com/TERM/C/COBOL.html http://www.britannica.com/EBchecked/topic/123375/COBOL http://www-142.ibm.com/software/products/us/en/cobocompfami/ http://www.infogoal.com/cbd/ http://www.netcobol.com/ http://www.cobol.org/ BASIC, Visual BASIC (str. 27.) http://en.wikipedia.org/wiki/BASIC http://en.wikipedia.org/wiki/Visual_Basic http://en.wikipedia.org/wiki/Microsoft_Visual_Studio http://www.britannica.com/EBchecked/topic/54939/BASIC http://visualbasic.about.com/ Pascal (str. 28.) http://en.wikipedia.org/wiki/Pascal_%28programming_language%29 http://www.webopedia.com/TERM/P/Pascal.html http://www.britannica.com/EBchecked/topic/445399/Pascal http://www.pascal-programming.info/index.php http://pascal-central.com/ppl/ Modula-2 (str. 28.) http://en.wikipedia.org/wiki/Modula-2 http://www.modula2.org/ Delphi (str. 29.) http://en.wikipedia.org/wiki/Delphi http://delphi.about.com/

Page 43: Seminar programski jezici

41

LOGO (str. 29.) http://en.wikipedia.org/wiki/Logo http://logo.codeplex.com/ http://el.media.mit.edu/logo-foundation/logo/programming.html C, C++, C#, Visaul C (str. 30.) http://en.wikipedia.org/wiki/c_(programming_language) http://en.wikipedia.org/wiki/c_sharp_(programming_language) http://www.webopedia.com/TERM/C/C.html http://www.webopedia.com/TERM/C/C_sharp.html http://www.webopedia.com/TERM/V/Visual_C_plus_plus.html http://www.cs.bell-labs.com/who/dmr/chist.html http://www.cprogramming.com/ www.microsoft.com/visualstudio/eng SQL (str. 31.) http://en.wikipedia.org/wiki/SQL http://www.britannica.com/EBchecked/topic/569684/SQL http://www.microsoft.com/en-us/sqlserver/default.aspx http://www.oracle.com/technetwork/database/index.html http://www.sql.org/ http://www.mysql.com/ HTML (str. 33.) http://en.wikipedia.org/wiki/HTML http://www.britannica.com/EBchecked/topic/279729/HTML http://www.w3schools.com/html/ http://www.htmldog.com/ http://html-programming.software.informer.com/ JAVA, JavaScript (str. 34.) http://en.wikipedia.org/wiki/Java_%28programming_language%29 http://www.webopedia.com/TERM/J/Java.html http://www.webopedia.com/TERM/J/JavaScript.html http://www.britannica.com/EBchecked/topic/301710/Java http://sun-microsystems-inc.software.informer.com/ http://www.java.com/en/ LISP (str. 35.) http://en.wikipedia.org/wiki/Lisp_%28programming_language%29 http://www.britannica.com/EBchecked/topic/343293/LISP Prolog (str. 36.) http://en.wikipedia.org/wiki/Prolog http://www.webopedia.com/TERM/P/Prolog.html http://www.britannica.com/EBchecked/topic/478660/PROLOG http://www.reddit.com/r/prolog

Page 44: Seminar programski jezici

42

POPIS SLIKA

Redni broj

Naslov slike Stranica

1. Razvoj programskih jezika 7

2. Primjer strojnog jezika 8

3. Primjer programa napisanog u asembleru 9

4. Kronologija razvoja najznačajnih viših programskih jezika 10

5. Zastupljenost korištenje programskih alata i jezika za baze podataka (IT-Careernet Statistics)

12

6. Brz razvoj namjenskih programa 15

7. Programski jezici za web aplikacije 16

8. Primjer macro naredbe 18

9. Programske paradigme 19

10. Primjer korištenja funkcionalnog jezika Haskell 20

11. Primjer korištenja jezika FORTRAN 25

12. Primjer korištenja jezika COBOL 26

13. Primjer korištenja jezika Visual BASIC 27

14. Primjer korištenja jezika Pascal 28

15. Primjer korištenja jezika Delphi 29

16. Primjer korištenja jezika LOGO 30

17. Primjer korištenja jezika C++ 31

18. Primjer korištenja SQL jezika 32

19. Primjer korištenja HTML jezika 33

20. Prikaz kôda u jeziku JAVA 34

21. Primjer korištenja jezika LISP 35

22. Primjer korištenja Prolog jezika 36

Page 45: Seminar programski jezici

43

POPIS TABLICA

Redni broj

Naslov tablice Stranica

1. Pozicije prvih 20 programskih jezika prema TIOBE-u 21

2. Pozicije od 21. do 50. mjesta na listi popularnosti 22

3. Prvih deset programskih jezika kroz godine 23

4. Najpopularniji jezici posljednjih 10 godina 23

5. Zastupljenost programskih paradigmi 23

POPIS DIJAGRAMA

Redni broj

Naslov dijagrama Stranica

1. Zastupljenost programskih jezika posljednjih deset godina 24