Your SlideShare is downloading. ×
  • Like
Seminar programski jezici
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Seminar programski jezici

  • 15,396 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
15,396
On SlideShare
0
From Embeds
0
Number of Embeds
22

Actions

Shares
Downloads
132
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. SVEUČILIŠTE U RIJECITEHNIČKI FAKULTETRIJEKAMARINA TEVČIĆRAZVOJ I KARAKTERISTIKEPROGRAMSKIH JEZIKASEMINARSKI RADRIJEKA, travanj, 2013.
  • 2. SVEUČILIŠTE U RIJECITEHNIČKI FAKULTETRIJEKARAZVOJ I KARAKTERISTIKEPROGRAMSKIH JEZIKASEMINARSKI RADPredmet: Projektiranje baze podatakaMentor: prof. dr. sc. Mile PavlićStudentica: mr. sc. Marina TevčićMatični broj: 45-10-7Modul: Osiguranje kvalitete i voñenje tehničkih sustavaRIJEKA, travanj 2013.
  • 3. 1Sadržaj1. UVOD........................................................................................................................22. OSNOVNI POJMOVI ...............................................................................................43. PODJELA PROGRAMSKIH JEZIKA......................................................................63.1. Generacije programskih jezika ...............................................................................73.2. Strukturno programiranje......................................................................................133.4. Programski alati za brz razvoj namjenskih programa (RAD)...............................153.5. Programski jezici neovisni o sklopovlju i operacijskom sustavu .........................163.6. Proceduralni i neproceduralni pogramski jezici ...................................................173.7. Programske paradigme..........................................................................................194. ZASTUPLJENOST (POPULARNOST) PROGRAMSKIH JEZIKA.....................215. POVIJESNO ZNAČAJNI PROGRAMSKI JEZICI................................................256. ZAKLJUČAK..........................................................................................................37LITERARURA ............................................................................................................38POPIS SLIKA..............................................................................................................42POPIS TABLICA ........................................................................................................43POPIS DIJAGRAMA ..................................................................................................43
  • 4. 21. UVODRač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 posebnaznačenja. U svakom su programskom jeziku propisana pravila slaganja (sintaksa) tihriječi u instrukcije (naredbe). Program je skup instrukcija nanizanih strogo utvrñenimredoslijedom, čijim se izvršavanjem obavlja željeni posao.Koji programski jezik odabrati za pisanje programa? Da li imamo dovoljno znanjai sposobnosti ovladati programskim jezikom koji može riješti naš problem? Koliko jeisplativo kupovati novu inačicu programskog jezika kojeg smo do sada koristili?Koliko nam vremena treba da aplikacije napisane u jednom programskom jezikuponovno napišemo u nekom drugom programskom jeziku? Koliko je to isplativo? Nata i slična pitanja, koja muče svakog programera i korisnika računala, nisam u ovomseminarskom radu ni pokušala odgovoriti. U radu je dan tek pregled programskihjezika po generacijama, načinu pristupa programiranju te povijesnom značaju.Izdvojeni su samo neki od programskih jezika i za njih su navedene osnovnekarakteristike 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ČAKU 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, utoj cjelini definirani su osnovni pojmovi vezani za programiranje i programske jezike.U trećoj cjelini s naslovom PODJELA PROGRAMSKIH JEZIKA navedene suklasifikacije programskih jezika prema više različitih kriterija. Poglavlje jepodijeljeno 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 popularnostiprogramskih jezika prema podacima koje je objavila programerska zajednica TIOBEza ožujak 2013. godine.
  • 5. 3U petom poglavlju s naslovom POVIJESNO ZNAČAJNI PROGRAMSKI JEZICIopisani su neki od programskih jezika koji se po svojim karakteristikama iprihvaćenosti od strane programera i korisnika računala izdvajaju od programskihjezika iste kategorije.Posljednje poglavlje s naslovom ZAKLJUČAK završni je dio seminarskog rada ukojem je sažeto dan rezime cijelog rada.Na kraju rada, iza posljednjeg poglavlja, nalazi se popis literature koja je korištenapri izradi ovog seminarskog rada. Iza popisa literature slijede popisi slika, tablica idijagrama koje rad sadrži.
  • 6. 42. OSNOVNI POJMOVIRač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 oneinstrukcije koje su napisane u njemu razumljivom jeziku, strojnom jeziku,iskazanom binarnim brojem, tj. nulama i jedinicama. Za pisanje instrukcija u strojnomjeziku potrebno je temeljito poznavati grañu računala (procesora) i koristiti brojčanekôdove jer se instrukcije strojnog jezika izravno odnose na pojedine dijeloveprocesora i vrijede samo za taj procesor. Svaki tip procesora ima sebi svojstven strojnijezik koji nije primjenjiv na drugoj vrsti računala. Program je niz instrukcijanapisanih odreñenim redoslijedom, čijim izvršenjem se izvršava neki zadatak. Da bise pojednostavilo pisanje programskih instrukcija u binarnom kôdu, uveden jemnemonički oblik pisanja instrukcija. Mnemonički oblik instrukcije jest znakovniprikaz (niz slova, brojaka i specijalnih znakova) koji podsjeća na radnju koja će seizvršiti tom instrukcijom. Imena operacija i instrukcija često su kratice engleskih riječi(npr. ADD, INC, PUSH, PULL). Svakoj instrukciji u mnemoničkom obliku pripadajedna instrukcija u binarnom obliku. Za instrukcije napisane u binarnom odnosnomnemonič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 novuinstrukciju (viši oblik instrukcije) postiže se pisanjem u simboličkom jeziku višegnivoa. Viši simbolički jezici omogućuju pisanje programa zapisom sličnomprirodnom 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 pisanjeprograma olakšano. Jedna od najvećih prednosti viših simboličkih jezika jest da sejedan te isti program može primijeniti na različitim tipovima računala (procesora).Programiranje predstavlja postupak pisanja programa u nekom od simboličkihjezika. 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 nezadovolji propisana sintaksa, program nije ispravan i nije ga moguće prevesti u jezikrazumljiv računalu, a samim time ni izvršiti. Značenje programa, tj. programskihizraza definirano je semantikom programskog jezika. Sintaktičke pogreške otkrivaprogram 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, njumora provjeriti odnosno osigurati programer. Izvorni program ili izvorni kôdpredstavlja niz instrukcija napisanih u nekom od programskih jezika. Izvedbeni iliizvrš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 kojirač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, programiprevoditelji se dijela na:• interpretere,• kompajlere.Interpreteri su programi koji svaku naredbu izvornog programa prevode u strojnijezik u trenutku izvoñenja programa naredbu po naredbu. Kompajleri (kompilator,engl. compiler) su programi koji prevode izvorni program u strojni program samojednom, i to za vrijeme postupka prevoñenja. Prevoñenjem nastaje objektni program
  • 7. 5koji se pomoću linkera transformira u izvršni program. Linker je program koji uzimajedan ili više objektnih programa generiranih od strane kompajlera i spaja ih u jedanizvršni program koji se može samostalno pozvati i izvršiti po potrebi. Linkeri moguuzimati i gotove objekte iz programskih biblioteka (engl. library) koji su napisani odstrane drugih programera. Debugger je program koji pomaže pri otklanjanjupogrešaka u programu, može testirati i provjeriti pravilnost rada programa. Postupakotklanjanja pogrešaka naziva se debugging.Cilj programiranja je pomoću računala od ulaznih podataka dobiti izlazne rezultateobrade. Problemi (zadaci) koje programiranjem treba riješiti često nisu jednostavni dabi se odmah moglo pristupiti pisanju programa, pa se postupak programiranjarastavlja na više koraka (faza programiranja):1. Postavka zadatka – potrebno je jasno definirati što je cilj zadatka, analiziratipostojeće informacije, opisati sve podatke, predvidjeti sve moguće slučajevekoji se mogu javiti kod rješavanja zadatka;2. Analiza zadatka – analiziraju se ulazni i izlazni podaci, definiraju vezeizmeñu podataka, daje se precizan opis zadatka koji rezultira izradommatematičog modela koji se može realizirati na računalu;3. Razrada algoritma – definira se način na koji se od početnih, ulaznihpodataka dolazi do traženih, izlaznih. Ukoliko je zadatak opsežan treba garastaviti na više dijelova. Svaki zadatak može se riješiti na više načina, zato bitrebalo proanalizirati sve načine i odabrati optimalan. Pri tome treba voditiračuna broju potrebnih operacija i memorijskih resursa da bi se algoritamuspješno izvršio;4. Pisanje programa – ovisno o zadatku koji treba riješti i raspoloživoj opremibira se programski jezik koji je najbolji izbor u konkretnom slučaju;5. Faza prevoñenja, izvršavanja i testiranja programa – program trebaispraviti od eventualnih sintaktičkih pogrešaka, prevesti na oblik razumljivračunalu (strojni jezik) pomoću programa prevoditelja. Da bi se programizvršavao, potrebno je formirati izvršnu verziju programa. Često su fazeprevoñenja i izrade izvršnog oblika programa objedinjene. Izvršnu verzijuprograma 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 naprethodne faze;6. Izrada dokumentacije – u dokumentaciji programa treba opisati što programradi, dati uputstva kako se koristi, detaljnije opisati algoritam ukoliko se radi osloženijem zadatku;7. Održavanje programa – korištenjem programa mogu se uočiti neke pogreškekoje nisu otkrivene tijekom testiranja, a potrebno ih je otkloniti. Ponekad trebaizvršiti i neke promjene u programu uslijed nastupanja novih okolnosti. Ovafaza podrazumijeva i proširivanje programa dodavanjem novih funkcijaodnosno modula.Pod pojmom algotitam podrazumijeva se način (uputa, postupak, metoda) kojimračunalo rješava neki zadatak, tj. niz instrukcija čijim se izvršenjem rješava nekiproblem. Pri pisanju algoritama često se koriste pomagala koja olakšavaju njihovuizradu kao npr. dijagrami tijeka, pseudokôd (algoritam zapisan riječima), bibliotekečesto korištenih algoritama i sl.
  • 8. 63. PODJELA PROGRAMSKIH JEZIKAMnogo je kriterija po kojima se može izvršiti podjela programskih jezika. U ovomradu 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 jeziko Asembler• Programski jezici visoke razine (viši programski jezici)o Oni jezici čije se naredbe ne mogu izravno prevesti u strojni jezikPodjela 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 generacijePodjela 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šnjiprogramski jezici mogu ravnopravno koristiti u svim područjima odnosnosmatraju 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)
  • 9. 73.1. Generacije programskih jezikaUsporedno s razvitkom informatike, razvijali su se i programski jezici. Iako nisujednoznačno odreñene, smatra se da je do danas razvijeno pet generacija programskihjezika. Iz godine u godinu razvijaju se novi jezici. Godine 1985. postojalo je oko 150programskih jezika, 1990. godine broj je narastao na 300, 2008. godine bilo ih je oko700 (v. Martinović, M.). Koliko ih je danas? Teško da se može dati precizan odgovorna to pitanje jer svakim danom je sve više nadogradnja već postojećih programskihjezika, otkrivaju se novi jezici, a raste i broj tvrtki koje se bave razvojem iproizvodnjom programskih jezika i alata.Slika 1. Razvoj programskih jezikaIzvor:http://infographicality.com/prelucrate/Electronics%20Technology/Evolution%20of%20Programming%20Languages%20www.infographicality.com.jpg (26.3.2013.)1. Programski jezici prve generacijePod jezicima prve generacije podrazumijevaju se strojni jezici. Strojni jezik (engl.machine language, machine code) jedini je jezik kojeg računalo razumije, jedinoprogrami pisani u strojnom jeziku mogu se bez dodatnog prevoñenja izvršiti naračunalu. Svi se ostali oblici programa pisani u nekim drugim programskimjezicima 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).
  • 10. 8Strojni jezik direktno je vezan za računalo odnosno procesor, program napisan ustrojnom jeziku za jednu vrstu računala (procesora) nije primjenjiv na drugoj vrstiračunala. Prema prof. Grundleru (v. Grundler, 2000., str. 334) za pisanje programau strojnom jeziku osim binarnog može se koristiti i heksadecimalni sustav, pa čaki mnemonički oblik zapisa.Slika 2. Primjer strojnog jezikaIzvor: 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 djelotvornoiskorištenje memorije. Nedostaci su složenost postupka izrade programa (dugački,nepregledni programi, pisanje podložno greškama koje je teško otkriti, pisanje programatraje dugo), ograničenost programa za jedan tip procesora (programi se ne mogu prenijetina računalo drugačijeg tipa), programer mora dobro poznavati grañu računala (pisanjeprograma namijenjeno je usko specijaliziranim stručnjacima).2. Programski jezici druge generacijeJezici druge generacije su asembleri (engl. assembly language, assembly code), tosu najniži programski jezici, najbliži binarnom strojnom kôdu. Instrukcijeasemblera 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čimove). Pisanje programa u asembleru daleko je jednostavnije, ali prije izvoñenjazahtijeva prevoñenje u strojni jezik. Program za prevoñenje naziva se asembler(engl. assembler). U početku je svakoj asemblerskoj (mnemoničkoj) instrukcijiodgovarala točno jedna instrukcija u binarnom strojnom jeziku. Kasnije je jednoj
  • 11. 9asemblerskoj instrukciji odgovaralo više strojnih instrukcija, a omogućeno je iizdvajanje dijelova kôda, koji se često ponavlja, u potprograme („makro-asemblerski“ jezici) (v. Trifunov, 2011.).U programskom jeziku asembler postoji mogućnost pisanja komentara kojiolakšavaju snalaženje u programu, a program za prevoñenje asembler zanemarujeih pri prevoñenju u strojni jezik.Slika 3. Primjer programa napisanog u asembleruIzvor: http://ece.wpi.edu/~wrm/Courses/EE2801/Labs/tasm/tasm2.gif (27.3.2013.)Iako je pisanje programa u programskom jeziku asembler daleko jednostavnije odpisanja u strojnom jeziku, ipak je to i dalje mukotrpan posao koji zahtijeva punovremena. Traženje i ispravljanje grešaka pri razvoju programa takoñer je jošuvijek zahtjevan i dugotrajan proces. Svaki tip računala ima sebi svojstvenprogramski 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 zauzimajumalo memorije u odnosu na programe pisane u drugim programskim jezicima (v.Gudelj, 2011.). Jezici prve (strojni jezik) i druge (asembler) generacije spadaju uprogramske jezike niže razine (niži programski jezici, engl. low level languages).
  • 12. 103. Programski jezici treće generacijeKrajem 50-tih odnosno početkom 60-tih godina prošlog stoljeća pojavili su se prvijezici visoke razine, tzv. viši programski jezici (engl. high level languages, HLL).Slika 4. Kronologija razvoja najznačajnih viših programskih jezikaIzvor: http://users.skynet.be/averkeyn/computer/histlang.html (28.3.2013.)
  • 13. 11Razvojem jezika treće generacije postignuta je neovisnost o tipu računala(procesora) na kojem se izvodi program. Teoretski, program napisan jezikom trećegeneracije može se koristiti na bilo kojem računalu (uz minimalnu izmjenu) kojeima za njega pripadajući kompajler. Programiranje je olakšano ne samo time štosu instrukcije ovih jezika više nalik govornom jeziku, nego i činjenicom daprogramer više ne treba poznavati grañu računala. Općenito, što je programskijezik na višem nivou, to je manje potrebno znati o tehničkim detaljima specifičnimza pojedino računalo. Svaka naredba višeg jezika prevodi se u više naredbistrojnog jezika. Pojava interpretera kao alternativa kompajlerima još je jedna odkarakteristika jezika treće generacije. Kao rezultat rada interpretera ne postojiizvršni oblik programa već postupak prevoñenja nastupa svaki puta kada seprogram 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 OrientedLanguage), BASIC (Beginners All-purpose Symbolic Instruction Code), Pascal(nazvan prema francuskom matematičaru Blais Pascalu), PL/I (ProgramingLanguage I) i C jezik.4. Programski jezici četvrte generacijeJezici četvrte generacije (engl. fourth generation languages, 4th generationlanguages, 4GL) pojavili su se početkom 1980-tih godina. Ovi programski jezicipotpuno su prilagoñeni krajnim korisnicima, njima se služe programeri zaubrzanje procesa programiranja, ali ih koriste i ostali korisnici koji ne trebaju bitivješti u programiranju, ali trebaju dobro poznavati procese. Odnos korisnika iračunala je dijaloški, računalo odgovara na postavljana pitanja i upućuje korisnikana izbornik (menî). Jezici su razvijeni za točno odreñenu namjenu (engl.application specific languages), lako se uče. Svojom strukturom, jezici četvrtegeneracije složeniji su od jezika treće generacije, ali omogućuju korisnicima daizvrše kompleksne strukture koristeći se ralativno manjim brojem instrukcija.Jedna instrukcija jezika četvrte generacije može zamijeniti nekoliko instrukcijaprogramskog jezika treće generacije. Program pisan u jeziku četvrte generacijerazvija se interaktivno, što znači da se instrukcije u programu ureñuju (jezično ilogiči testiraju) u tijeku pisanja programa odnosno prije njegovog završetka.Četvrta generacija jezika ne pretpostavlja samo klasično programiranje u nekomod 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 ovegeneracije, slijede Visual Basic i Visual C++ kao najpoznatiji predstavnici tegeneracije programskih jezika, meñu prvim jezicima su koji omogućujuprogramiranje pomoću grafičkih simbola, tj. ikona. Svakim danom na tržištusoftwarea pojavljuje se sve više alata za vizualno (grafičko) programiranje(programiranje ne provodi utipkavanjem tekstualnih instrukcija programskogjezika 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žnostidobiva objektno orijentirani programski jezik opće namjene Java.
  • 14. 12Osnovne 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, CASEalati)• 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.)
  • 15. 135. Programski jezici pete generacijeJezike pete generacije (engl. fifth generation languages, 5th generation languages,5GL) neki autori nazivaju jezicima umjetne inteligencije jer se najčešće koriste uistraživanju umjetne inteligencije. Računalo rješava odreñeni problem bezprogramera koji je zadužen jedino da definira problem i pod kojim uvjetimaproblem treba biti riješen, ali ne treba znati kojim algoritmom ili rutinama će se toizvesti. Područja primjene jezika 5GL su u projektiranju ekspertnih sustava,sustava baza znanja, strojnog odlučivanja, procesiranja prirodnih jezika, umjetneinteligencije, neuronskih mreža (v. Drabić). Najpoznatiji predstavnici su jezici:LISP, Prolog, OPS5, Mercury.3.2. Strukturno programiranjeSa aspekta strukturiranosti razlikujemo nestrukturirane i strukturirane programskejezike. Strukturirano programiranje (engl. structured programming) je specifičannačin pisanja programa gdje se za kreiranje logičke programske strukture primjenjujustandardizirani elementi prema utvrñenim pravilima (v. Gašpar, 2010.). Na taj načinolakšana je čitljivost, testiranje, popravak i održavanje programa. Instrukcije se pišu iodrañuju u strogom slijedu. Izbjegava se korištenje instrukcija programskog skoka(instrkukcije tipa „idi na“). Danas se programi sve više pišu modularno (modularnoprogramiranje), tj. kompletno se programsko rješenje raščlanjuje na manje logičkizaokružene cjeline (module), koje se mogu neovisno pisati i provjeravati, a pozavršetku ugraditi u glavni (engl. main) program. Modularna struktura omogućavatimski rad, programiranje se može podijeliti izmeñu više programera koji rade svakisvoj dio posla. Gotovi moduli mogu se koristiti i pozivati u raznim dijelovimaprograma ili u drugim programima. Strukturno orijentirani jezici na neki načinogranič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ñuprograma u potpunosti programeru, omogućuju korištenje instrukcija programskogskoka i time daju programeru odreñenu slobodu. ALGOL se smatra prvim jezikomstrukturiranog programiranja. Namijenjen je rješavanju znanstveno-tehničkihproblema, logika jezika bliska je običnom matematičkom jeziku pa je pogodan zarješavanje algebarskih problema (v. Roller, 1996., str. 136). 1971. godine programskijezik Pascal je dizajniran za učenje strukturiranog programiranja u visokoškolskimustanovama. Jezik Pascal imao je velik utjecaj na razvoj programskih jezika, ali sezbog svojih nedostataka nije mogao upotrebljavati u komercijalne svrhe. Podsponzorstvom ministarstva obrade SAD-a za potrebe vojske, u ranim 1980-timgodinama iz Pascala izveden je univerzalni jezik za modularno programiranje ADA(nazvan prema Augusti Adi (Bayron) Lovelace prvoj programerki, suradnici CharlesaBabbagea, izumitelja prvog analitičkog stroja). Taj jezik namijenjen je za korištenjena velikim računalnim sustavima koji su integralni dio drugog sustava, a ima uloguupravljačkog mehanizma (v. Grbavac, 2010, str. 309).
  • 16. 143.3. Objektno orijentirano programiranjePrema tradicionalnom shvaćanju računalni program se promatra kao skup funkcija ilipojednostavljeno kao slijed točno definiranih instrukcija. Objektno orijentiranoprogramiranje (engl. Object Oriented Programming, OOP) polazi od toga da seračunalni program može promatrati kao skup pojedinačnih gotovih komponenata(objekata, klasa). Svaki objekt ima sposobnost primanja poruke, obrade podataka islanja poruke drugim objektima, iz čega proizlazi da se svaki objekt može promatratikao 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 zaizvrš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 orijentiranogprogramiranja, podaci i naredbe koje manipuliraju s podacima čine jedinstvenujedinicu, objekt. Zadatak programera je da, primjenjujući aktivne elemente nadpasivnima, riješi problem. Kod OOP programer ima zadatak da usmjerava i nadgledakomunikaciju meñu objektima. Na taj način programer je više koncentriran napodatke i manipuliranje podacima nego na to kako će se napisati programski kôd zaobradu nekih podataka (v. Drabić).Prisutnost različitih objekata može se posebno uočiti kod operacijskih sustava sgrafičkim korisničkim sučeljem (engl. Graphic User Interface, GUI) kod kojih suikone objekti. Svakoj od njih pridružen je skup osobina i akcija koje opisuju kakoreagira na vanjske dogañaje (što se dogaña kada jednom kliknemo, kada dva putakliknemo, 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. Iakose smatra da je pisanje programa pomoću objekata jednostavnije, ipak velik dioprogramera i dalje je sklon tradicionalnom načinu programiranja, tako da dobar diopostojećih aplikativnih programa nije napisan odnosno prerañen u objektnoorijentirane programe (cijena i potrebno vrijeme prerade često su neprihvatljivi).Najveća prednost objektno orijentiranog programiranja je ponovna iskoristivostprogramskog 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 programerimadefiniranje vlastitih tipova podataka nazvanih objekti. Osmišljen je kako biprogrameri mogli pisati simulacijske programe. U ranim 1980-tima razvijen jeSmalltalk u istraživačkom centru PARC tvrtke XEROX. Sredinom 1980-tihpredstavljen je jezik C++, a 1995. tvrtka Sun Microsystems je na konferencijiSunWorld ’95 službeno objavila jezik Java, kao jezik za izradu distribuiranih mrežnihprograma. Razvojem Interneta javila se i potreba da napisani programi rade identičnona različitim platformama (operacijskim sustavima), što upravo objektno orijentiranijezik 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.
  • 17. 153.4. Programski alati za brz razvoj namjenskih programa (RAD)Pojavom operacijskih sustava s grafičkim korisničkim sučeljem (GUI) raste potrebaza novim programskim jezicima i alatima koji omogućuju jednostavnu i brzu izradukorisničkog sučelja i pripajućih programa. Polovicom 1990-tih godina razvijaju seprogramski alati za brz razvoj namjenskih programa pod nazivom RAD (engl.Rapid Application Development). Osnovna razlika izmeñu RAD i tradicionalnihmetoda programiranja jest mogućnost usporednog razvoja različitih dijelovaprograma, upotreba gotovih modula, te jednostavna izrada GUI (v. Grundler, 2000.,str. 352).Programski RAD alati su objektno orijentirani programski jezici što znače da koristegotove objekte, ali za razliku od prvobitnih objektno orijentiranih jezika, RAD alatimogu koristiti i objekte napisane u nekom drugom jeziku. Upotrebom RAD alata crtase 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čkogsučelja, kao i nekih dijelova programa, bez klasičnog pisanja instrukcija.RAD alati uvode i nove metode programiranja, kao npr. spiralno programiranje. Zarazliku od tradicionalnih postupaka (dijagram programa, pseudokôd), ovdje se počinjes izradom GUI. Nakon primjedbi korisnika o radnom prostoru, pristupa se ispravljanjui 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 programaIzvor: http://ninefold.com/assets/images/blog-programming-history.png (30.3.2013.)
  • 18. 163.5. Programski jezici neovisni o sklopovlju i operacijskom sustavuViši programski jezici opće namjene neovisni o sklopovlju i operacijskom sustavunazivaju se prenosivi (engl. portable) programi. Prenosivi, jednom napisan iprevedeni program u načelu se može izvršavati na više tipova računala koji rade podrazlič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 jerazvoj 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 programskijezici su (v. Panjkota):• HTML (Hypertext Markup Language)• VRLM (Virtual Reality Markup Language, Virtual Reality ModelingLanguage)• XML (Extensible Markup Language)• PHP (Hypertext Preprocessor)• JavaScript• JavaSlika 7. Programski jezici za web aplikacijeIzvor: http://makoweb.com/images/web-design-programming.jpg (30.3.2013.)
  • 19. 173.6. Proceduralni i neproceduralni pogramski jeziciPrema kriteriju „proceduralnosti“ programski se jezici dijele na proceduralne (slijednaredbi 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 drugejezike 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 jezicikoji sadrže naredbe petlje (npr. FOR ... NEXT, DO ... WHILE), uvjetne naredbe (npr.IF ... THEN, CASE), ponekad čak i naredbu skoka (npr. GOTO). Tipični primjeriproceduralnih jezika koji su zadržali naredbu skoka (iako ona nije nužna za pisanjeprograma) su jezici BASIC, FORTRAN i COBOL. Ipak, osnovna karakteristikaproceduralnih 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), oniu pravilu ne sadže naredbu skoka, programi pisani u tim jezicima strogo sustrukturirani, pisani u obliku modula (manjih cjelina koje se mogu neovisnopisati i provjeriti, a po završetku ugraditi u glavni program). Predstavnici oveskupine su jezici Pascal, Modula-2, C jezik.• Objektno orijentirani programski jezici (engl. object oriented programinglanguages, OOPL), omogućavaju objedinjavanje programskih instrukcija ipodataka 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-drivenprograming languages), kod kojih je kontrola toka izvoñenja programa vezanana 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 natipku miša, pritisak na odreñenu tipku na tastaturi), porukama sustava ilidrugih 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) sujezici koji ne sadrže naredbe za upravljanje tijekom programa: uvjetne naredbe,naredbe skoka i sl. Korisnik ne upravlja tijekom odvijanja programa, već opisujeproblem koji treba riješiti (jasno, precizno i nedvosmisleno), a programskom alatu ijeziku prepušta način na koji će doći do rješenja. Primjerice, SQL jezikom korisnikmože definirati što želi raditi s podacima koje sadrži odreñena baza podataka, ali ne inačin na koji će se to raditi. Podvrste neproceduralnih programskih jezika su (v.Grundler, 2000., str. 415):• Deklarativni neproceduralni programski jezici (engl. declarativenonprocedural programing languages), oni nemaju propisanu sintaksu već se
  • 20. 18oslanjaju na unaprijed odreñena moguća djelovanja korisnika (npr. izborponuñene akcije iz izbornika, klik tipkom miša na željenu opciju). Primjerdeklarativnog neproceduralnog jezika je SQL jezik.• Macro naredbe (engl. macro), omogućavaju pamćenje akcija korisnika i popotrebi njihovo ponavljanje.• Jezici koji svoje djelovanje temelje na pravilima (engl. rule-basedprograming languages), osnovno svojstvo im je da se obrada ulaznih podatakaodvija sukladno unaprijed definiranim pravilima. Najviše se koriste u područjuumjetne inteligencije. Tipičan primjer je jezik Prolog.Velik dio programskih jezika spada istovremeno u više navedenih kategorija ipodkategorija.Slika 8. Primjer macro naredbeIzvor: http://www.softarea51.com/screenshot/Hotkey_Recorder.gif (31.3.2013.)
  • 21. 193.7. Programske paradigmeJedna 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 paradigmeIzvor: http://laris.fesb.hr/predavanja/images/progjez2.JPG (31.3.2013.)Imperativna (proceduralna) paradigma predstavlja tradicionalni pristup procesuprogramiranja, na njoj se temelje algoritmi napisani pseudokôdom i oni napisanistrojnim jezikom. Postupak programiranja, imperativna paradigma definira kao slijedsekvenci naredbi koje na odgovarajući način manipuliraju s podacima da bi se dobiorezultat. Tipični predstavnici su jezici FORTRAN, ALGOL, Pascal i jezik C++.Za razliku od imperativne paradigme koja podrazumijeva da programer sam osmislialgoritam, deklarativna (logička) paradigma od programera traži da problem opiše uformi koja je prilagoñena nekom općem algoritmu. Programerov zadatak jedino je daprecizno opiše problem, a računalu je prepušteno otkrivanje algoritma. U praksi, čestone postoje opći algoritmi koji bi rješavali neki specifični problem. Primjenadeklarativnog programskog jezika pretpostavlja da je netko jednom otkrio i primijenioalgoritam za neku ponavljajuću proceduru. Programer treba opisati odnose meñuparametrima koji se simuliraju tom procedurom. Jezici Prolog i Datalog predstavnicisu deklarativnih programskih jezika.
  • 22. 20Kod objektno orijentirane paradigme, podaci i procedure (naredbe, programskikôd) koje manipuliraju s podacima čine jedinstvenu aktivnu jedinicu, objekt. Svakiobjekt egzistira kao odvojena, samostalna jedinica. Jednom definirani objekt može sekoristiti po potrebi kad god nam zatreba, on je osnovni dio strukture programa. Uobjektno orijentiranom programiranju osnovni cilj programera je da skupi podatke iakcije 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 unaprijeddefiniranih “crnih kutija” od kojih svaka prihvaća odreñene ulaze i daje odgovarajućeizlaze. U funkcionalnom programiranju funkcije se primjenjuju na argumente ivrijednosti. Vraćene vrijednosti se koriste kao argumenti za druge funkcije saizbjegavanjem prepisivanja naredbi. Primjeri funkcionalnih jezika su LISP, Haskell,ML, Scheme.Slika 10. Primjer korištenja funkcionalnog jezika HaskellIzvor: http://img.bhs4.com/6B/1/6B1844B14B100B85E2CF5F2AAADFB483D3ADD67A_lis.jpg (31.3.2013.)
  • 23. 214. ZASTUPLJENOST (POPULARNOST) PROGRAMSKIH JEZIKAProgramerska zajednica TIOBE svakog mjeseca izračunava indeks popularnostiprogramskih jezika na osnovu podataka dobivenih preko popularnih Internet tražilicate stranica kao što su Wikipedia, Amazon, YouTube i Baidu, a predstavlja djelomičnureferencu za programere koja može poslužiti za planiranje budućih sustava iliprojekata. U izračun indeksa uzimaju se informacije o broju stručnjaka i inženjera izpojedinog programskog jezika diljem svijeta, količini tečajeva i raznih prodavača iproizvoñača, bez ulaženja u analizu koji je programski jezik bolji ili u kojem jenapisano više linija koda, što prema priznanju predstavnika Tiobe kompanije zastandarde u kodiranju nije prava znanstvena metoda već predstavlja najbližu mogućuaproksimaciju popularnosti.U tablicama koje slijede dani su najnoviji podaci za mjesec ožujak 2013. godine.Tablica 1: Pozicije prvih 20 programskih jezika prema TIOBE-uIzvor: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (31.3.2013.)
  • 24. 22Tablica 2: Pozicije od 21. do 50. mjesta na listi popularnostiIzvor: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (31.3.2013.)
  • 25. 23Tablica 3: Prvih deset programskih jezika kroz godineIzvor: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (31.3.2013.)Tablica 4: Najpopularniji jezici posljednjih 10 godinaIzvor: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (31.3.2013.)Tablica 5: Zastupljenost programskih paradigmiIzvor: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (31.3.2013.)
  • 26. 24Dijagram 1: Zastupljenost programskih jezika posljednjih deset godinaIzvor: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (31.3.2013.)
  • 27. 255. POVIJESNO ZNAČAJNI PROGRAMSKI JEZICIPrema nekim informatičkim izvorima, 1985. godine postojalo je oko 150 programskihjezika, 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 tommnoštvu programskih jezika izvojiti najznačajnije? Teško! Po kojem kriteriju?FORTRANFORTRAN (FORmula TRAnslator) je najstariji viši programski jezik. Razvijen je urazdoblju 1954.-1958. godine na temelju zamisli Johna Backusa, a prvi puta jeobjavljen 1957. godine od strane kompanije IBM. Namjenjen je prije svega primjeniu tehničkom i znanstvenom području gdje je potrebno riješti različite analitičkeprobleme koji se mogu definirati matematičkim formulama i relacijama. Iako jeosmišljen za velika računala, kasnije je nastalo mnogo inačica i za velika i za osobnaračunala. Prema indeksu popularnosti TIOBE-e danas je na 28. mjestu, što je vrlovisoka pozicija s obzirom da je specijaliziran isključivo za tehničko i znanstvenopodručje primjene.Slika 11. Primjer korištenja jezika FORTRANIzvor: http://www.radiantzemax.com/content_images/fortran/fortran7.gif (1.4.2013.)
  • 28. 26COBOLCOBOL (Common Business Oriented Language), razvijen je 1959. godine za potrebeu komercijalnim poslovima kao računovodstvo, prodaja, obračun plaća i sl. Sintaksajezika slična je govornom engleskom jeziku. Težište jezika je na strukturamapodataka pogodim za obradu baza podataka. Koristi se mnogo više kod velikihrač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 na26. mjestu, što je visoka pozicija s obzirom da ima daleko veću primjenu kod velikihračunala nego kod osobnih račuala, a i područje primjene mu je orijentirano isključivoza komercijalne poslove.Slika 12. Primjer korištenja jezika COBOLIzvor: http://www.netcobol.com/sites/default/files/screenshots/COBOL-in-Visual-Studio.png(1.4.2013.)
  • 29. 27BASICBASIC (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 DartmouthCollege u razdoblju 1962.-1964. godine, a glavna namjena bila mu je približitiračunala učenicima i ljudima koji nisu stručnjaci za računala. Iako je razvijen za radna 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 jezikaBASIC (True BASIC, QW BASIC, QuickBASIC, Turbo BASIC; Visual BASIC idr.). Visual BASIC pojednostavnio je pisanje programa za Windows sučelje, te je upodručju Windows programiranja imao istu ulogu kakvu je prvi BASIC program imaopri približavanu računala učenicima i neprofesionalcima. Godinama je na listamanajpopularnijih 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 bioBASIC, a prodali su ga tvrtki MITS 1975. godine (v. Grundler, 2000., str. 342).Slika 13. Primjer korištenja jezika Visual BASICIzvor: https://cce.cpcc.edu/computertraining/photos/vb1.gif (1.4.2013.)
  • 30. 28PascalPascal je programski jezik nazvan po francuskom matematičaru Blaise Pascalu, razvioga je švicarski profesor Niklaus Wirth u razdoblju 1967.-1971. godine. Isprva je bionamijenjen učenju strukturnog programiranja, pa je stekao veliku popularnost uakademskim krugovima. Novije inačice programa dovoljno su kvalitetne da osim zaučenje mogu poslužiti i za profesionalnu primjenu u rješavanju matematičkih iznanstvenih problema. Na širu primjenu jezika Pascal velik utjecaj imala je pojavajezika Turbo Pascal tvrtke Borland International, 1983. godine. Tijekom godina tvrtkaBorland višestruko je usavršavala Turbo Pascal, ali i nastavila s objavljivanjem ikvalitetnijih programskih jezika (npr. Borland C, Quatro Pro, Paradox, Delphi) koji sunastali upravo pod utjecajem jezika Pascal.Slika 14. Primjer korištenja jezika PascalIzvor: http://i.ytimg.com/vi/lJcvJmY0dl0/0.jpg (1.4.2013.)Module-2Module-2 (Modular Language) razvio je Niklaus Wirth u razdoblju 1977.-1979.godine želeći unaprijediti jezik Pascal. Glavne odlike jezika su modularnost imogućnost istodobnog izvršavanja više neovisnih programa. Modula-2 imakarakteristike objektno orijentiranog jezika i u tom smislu se može smatrati pretečomsuvremenih objektno orijentiranih jezika. Ipak, Modula-2 nije ni približno doživiopopularnost jezika Pascal.
  • 31. 29DelphiDelphi je programski firme Borland utemeljen na jeziku Pascal-u, pojavio se na tržištu1995. godine. Zamišljen je za brz razvoj namjenskih programa (RAD) s mnoštvomalata za ispomoć u oblikovanju grafički orijentiranog sučelja. U trenutku pojave natržištu programski jezik Delphi je imao najbrži kompajler, podržavao je server/clienttehnologiju. U Delphi ugrañena je i podrška bazama podataka, a omogućujedodavanje objekata i upotrebu objekata koje je napisao netko drugi. Delphi je upotpunosti objektno orijentirani jezik.Slika 15. Primjer korištenja jezika DelphiIzvor: http://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Delphi_XE2.png/120px-Delphi_XE2.png (1.4.2013.)LOGOLOGO je viši programski jezik stvoren s ciljem da se početnici, pa čak i djeca učelogici programiranja i korištenja računala. Nastao je 1968. godine u Cambridgeu, adaljnji razvoj doživio je na MIT (Massachusetts Institute of Technology) u sklopuprojekta “Logo Group”. LOGO se više smatra pomagalom u nastavi, negoprogramskim jezikom. Glavni razlog njegove popularnosti leži u činjenici da je bioprvi jezik koji je omogućio jednostavno crtanje pomoću računala bez složenogprogramiranja.
  • 32. 30Slika 16. Primjer korištenja jezika LOGOIzvor: 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 izrazvoja UNIX operacijskog sustava. Sam operacijski sustav UNIX napisan je u jezikuC. Prve inačice za osobna računala pojavile su se 1983.(Microsoft) i 1984. (DigitalResearch) godine. Jezik C je vrlo složen, široke lepeze mogućnosti, a namijenjen jeprvenstveno stručnjacima koji se profesionalno bave programiranje. Program seneprekidno usavršava, a razvijene su i brojne Visual inačice. Postoji mnoštvopomoć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 Laboratoriesu razdoblju 1980.-1983. godine. Jezik C++ objedinjuje dobra svojstva naslijeñena iz Cjezika i prednosti objektno orijentiranog programiranja. Omogućava programiranje ina 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. godinekao odgovor na nedostatke postojećih jezika kao što su C, C++ i Visual Basic, u istovrijeme kombinirajući njihove dobre osobine. Jezik C# jezik je opće namjene, iakomu je prvobitna namjena bila izrada aplikacija za MS .NET Framework platformu.
  • 33. 31Slika 17. Primjer korištenja jezika C++Izvor: http://www.blog.dolati.com/visvas/wp-content/gallery/blog_bilder/dev-c.png (1.4.2013.)SQLProgramski jezik SQL (Structured Querry Languages) razvila je tvrtka IBM kao jezikkoji je korisničko sučelje prema relacijskim bazama podataka. SQL jezik omogućujestvaranje i brisanje tablica, pohranu podataka u tablice i sl. Baza podataka može bitismješ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. Njegovzadatak 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 svepotrebne radnje i dostavlja tražene podatke. Da bi mogao postaviti upit korisnik morana svom računalu imati instaliran drugi dio programa, SQL stranku. Taj dio poznat jei pod nazivom SQL sučelje (engl. SQL front end).Osnovna zadaća SQL jezika je osigurati korisniku obradu i prijenos podataka, bezobzira 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
  • 34. 32mrež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 jedefinirana 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 neKAKO to napraviti.Osnovna karakteristika programskog jezika SQL je jednostavnost pri korištenju.Slika 18. Primjer korištenja SQL jezikaIzvor: http://img.tfd.com/cde/_NATLANG.GIF (1.4.2013.)
  • 35. 33HTMLHTML (HyperText Markup Language) je specijalizirani programski jezik namijenjenizradi hipertekstovnih dokumenta (hipertekst je tekstualna struktura koja se sastoji odmeñusobno povezanih jedinica informacije prikazana na nekom elektroničkomureñaju). Osnovna zadaća jezika HTML jest omogućiti prikaz mrežnogahipertekstovnog dokumenta na zaslonu monitira bez obzira o kojem računalu odnosnooperacijskom sustavu se radi. Omogućuje razmjenu podataka posredstvom Internetaodnosno bilo koje mreže koja koristi iste norme i protokole kao Internet (v.Martinović, M.).Slika 19. Primjer korištenja HTML jezikaIzvor: http://pubpages.unh.edu/~njo32/html.html (1.4.2013.)
  • 36. 34JAVAProgramski jezik JAVA nastao je u razdoblju 1990.-1995. godine u tvrtki SunMicrosystems, 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čitimplatformama (operacijskim sustavima). Godine 1995. tvrtka Sun Microsystems jeslužbeno objavila jezik Java i www preglednik Hotjava napisan u jeziku Java. JezikJava može se koristiti i neovisno o Internetu. Spada u objektno orijentirane jezikeopće namjene, informatičari ga usporeñuju sa jezikom C++. Godinama je na listamanajpopularnijih programskih jezika. Za korisnike skromnijih zahtjeva postojiprogramski jezik JavaScript, koji je po mogućnostima negdje izmeñu HTML i Javajezika. Za razliku od jezika Jave koji je zamišljen kao samostalni programski jezik,JavaScript namijenjen je upotrebi posredstvom preglednika i uključuje se u izvornomobliku 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 JAVAIzvor: http://damijan.si/images/java.png (1.4.2013.)
  • 37. 35LISPLISP (List Processing) razvijen je na MIT (Massachusetts Institute of Technology) urazdoblju 1958.-1960. godine na temelju istraživanja u području umjetne inteligencije.Američko ministarstvo obrane je uz programski jezik COBOL odobrilo i jezik LISPza pisanje programa za svoje potrebe. Osnovna razlika LISP jezika u odnosu naprethodne programske jezike jest mogućnost rukovanja objektima umjesto brojeva.LISP je našao veliku primjenu u području umjetne inteligencije i području razvojaekspertnih sustava.Slika 21. Primjer korištenja jezika LISPIzvor: http://groups.engin.umd.umich.edu/CIS/course.des/cis400/lisp/crapsout.gif (1.4.2013.)
  • 38. 36PrologProlog (Programming in Login) je programski jezik nastao 70-tih godina prošlogstoljeća kao rezultat suradnje dvaju univerziteta: Edimburg University i University ofAix-Marseille. Usko je vezan za razvoj projekata na području umjetne ineteligencije,kao npr. razumijevanje govora i za razvoj ekspertnih sustava. Jezik Prolog je biodaleko popularniji u Evropi i Japanu nego u SADu-u. Veću popupalrnost kod osobnihračuala Prolog je doživio pojavom Turbo Prologa kojeg je 1986. godine predstavilatvrtka Borland. Danas postoje različite inačice jezika Visual Prolog.Slika 22. Primjer korištenja Prolog jezikaIzvor: http://www-ru.softsalad.com/screenshots/big/000/visual_prolog_8ab48f.png (1.4.2013.)
  • 39. 376. ZAKLJUČAKLjudi za meñusobnu komunikaciju koriste jezik kao sredstvo za predstavljanje iprenošenje informacija. Komunikacija čovjeka i računala odvija se pomoću nizainstrukcija koje računalo treba izvršiti. Programski jezik je sredstvao kojim čovjekrazmjenjuje informacije s računalom. Prirodni jezici dopuštaju nepreciznost inedorečenost. Računalo može razumijeti samo formalni zapis, ne dopušta ni najmanjunepreciznost. Jednoznačnost svake instrukcije programskog jezika je njegovanajznačajnija karakteristika. Programski jezik je skup pravila kojim se računalupredstavljaju instrukcije i opisuju podaci.Postoje podjela programskih jezika prema različitim kriterijima, ali sve one seuglavnom baziraju na stupnju razvoja i mogućnostima programskog jezika. Prvi višiprogramski 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 znatnogpovećanja primjene računala u različitim područjima. Posljedica toga je bila da sutimovi programera morali raditi na razvoju jednog projekta. Svaki dio tima razvijao jerelativno nezavisne module, koje su zatim slagali u funkcionalnu cjelinu, korisničkuaplikaciju. Svaki od modula moguće je koristiti u različitim aplikacijama. Javljaju se inove vrste jezika, lakših za programere, ali i za krajnje korisnike. Više ne treba tolikopoznavati programski kôd, ali treba jako dobro poznavati procese. Kod većine tihnovih jezika polazi se od pretpostavke da je organizacija memorije i imenovanjepodataka već izvršeno i to obično u obliku relacijske baze podataka. U kategorijujezika 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 radeidentično i na drugom tipu računala odnosno na različitim platformama (operacijskimsustavima). 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 prirodnomjeziku (5GL), pa su i poznati pod nazivom “prirodni jezici”. Prirodan jezik je sličanupitnom jeziku, ne postoji potreba da korisnik ili programer nauči sintaksu jezika.Tekst instrukcije je vrlo blizak ljudskom govoru, imitira način funkcioniranja ljudskogmozga u cilju rješavanja složenih problema. Jezici tog tipa koriste se u razvojuekspertnih 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 bezprogramiranja. Ti alati imaju mogućnost pojednostavniti i skratiti razvojni proces teomogućiti izradu korisničkih aplikacija bez potrebe za specifičnim specijalističkimznanjima 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 odgovorna postavljeno pitanje: Budući da je programski jezik JAVA razvila tvrtka SunMicrosystems, kad se JAVA kao jezik tvrtke Sun počeo koristiti u Hrvatskoj, navodnosu se često programeri pitali “Je li ovo san ili java?” I zaista, oboje je točno...
  • 40. 38LITERARURA1. 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 igeodezije, Sveuciliste u Splitu, Split,http://www.gradst.hr/Portals/9/docs/katedre/Tehnicka%20mehanika/dodatno/1.Vjezbe.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/833P2006-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.
  • 41. 3914. 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čnaiskustva, 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_predavanja.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 zapoučavanje programiranja u C i C++ programskim jezicima prema Addiemodelu, 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, Filozofskifakultet, 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 kulturoSlovenije, Ljubljana, 1987.27. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html (25.3.2013.)
  • 42. 40Dodatni elektronički izvori (Poglavlje 5. Povijesno značajni programski jezici)Povijesno značajni jezici (str. 25.)http://en.wikipedia.org/wiki/Programming_languageshttp://www.webopedia.com/TERM/H/high_level_language.htmlhttp://www.webopedia.com/TERM/F/fourth_generation_language.htmlwww.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.htmlFORTRAN (str. 25.)http://en.wikipedia.org/wiki/Fortranhttp://www.webopedia.com/TERM/F/FORTRAN.htmlhttp://www.britannica.com/EBchecked/topic/214283/FORTRANhttp://www.ibiblio.org/pub/languages/fortran/ch1-1.htmlhttp://www.fortranplus.co.uk/resources/fortran_resources.pdfhttp://www.fortran.com/COBOL (str. 26.)http://en.wikipedia.org/wiki/COBOLhttp://www.webopedia.com/TERM/C/COBOL.htmlhttp://www.britannica.com/EBchecked/topic/123375/COBOLhttp://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/BASIChttp://en.wikipedia.org/wiki/Visual_Basichttp://en.wikipedia.org/wiki/Microsoft_Visual_Studiohttp://www.britannica.com/EBchecked/topic/54939/BASIChttp://visualbasic.about.com/Pascal (str. 28.)http://en.wikipedia.org/wiki/Pascal_%28programming_language%29http://www.webopedia.com/TERM/P/Pascal.htmlhttp://www.britannica.com/EBchecked/topic/445399/Pascalhttp://www.pascal-programming.info/index.phphttp://pascal-central.com/ppl/Modula-2 (str. 28.)http://en.wikipedia.org/wiki/Modula-2http://www.modula2.org/Delphi (str. 29.)http://en.wikipedia.org/wiki/Delphihttp://delphi.about.com/
  • 43. 41LOGO (str. 29.)http://en.wikipedia.org/wiki/Logohttp://logo.codeplex.com/http://el.media.mit.edu/logo-foundation/logo/programming.htmlC, 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.htmlhttp://www.webopedia.com/TERM/C/C_sharp.htmlhttp://www.webopedia.com/TERM/V/Visual_C_plus_plus.htmlhttp://www.cs.bell-labs.com/who/dmr/chist.htmlhttp://www.cprogramming.com/www.microsoft.com/visualstudio/engSQL (str. 31.)http://en.wikipedia.org/wiki/SQLhttp://www.britannica.com/EBchecked/topic/569684/SQLhttp://www.microsoft.com/en-us/sqlserver/default.aspxhttp://www.oracle.com/technetwork/database/index.htmlhttp://www.sql.org/http://www.mysql.com/HTML (str. 33.)http://en.wikipedia.org/wiki/HTMLhttp://www.britannica.com/EBchecked/topic/279729/HTMLhttp://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%29http://www.webopedia.com/TERM/J/Java.htmlhttp://www.webopedia.com/TERM/J/JavaScript.htmlhttp://www.britannica.com/EBchecked/topic/301710/Javahttp://sun-microsystems-inc.software.informer.com/http://www.java.com/en/LISP (str. 35.)http://en.wikipedia.org/wiki/Lisp_%28programming_language%29http://www.britannica.com/EBchecked/topic/343293/LISPProlog (str. 36.)http://en.wikipedia.org/wiki/Prologhttp://www.webopedia.com/TERM/P/Prolog.htmlhttp://www.britannica.com/EBchecked/topic/478660/PROLOGhttp://www.reddit.com/r/prolog
  • 44. 42POPIS SLIKARednibrojNaslov slike Stranica1. Razvoj programskih jezika 72. Primjer strojnog jezika 83. Primjer programa napisanog u asembleru 94. Kronologija razvoja najznačajnih viših programskih jezika 105.Zastupljenost korištenje programskih alata i jezika za bazepodataka (IT-Careernet Statistics)126. Brz razvoj namjenskih programa 157. Programski jezici za web aplikacije 168. Primjer macro naredbe 189. Programske paradigme 1910. Primjer korištenja funkcionalnog jezika Haskell 2011. Primjer korištenja jezika FORTRAN 2512. Primjer korištenja jezika COBOL 2613. Primjer korištenja jezika Visual BASIC 2714. Primjer korištenja jezika Pascal 2815. Primjer korištenja jezika Delphi 2916. Primjer korištenja jezika LOGO 3017. Primjer korištenja jezika C++ 3118. Primjer korištenja SQL jezika 3219. Primjer korištenja HTML jezika 3320. Prikaz kôda u jeziku JAVA 3421. Primjer korištenja jezika LISP 3522. Primjer korištenja Prolog jezika 36
  • 45. 43POPIS TABLICARednibrojNaslov tablice Stranica1. Pozicije prvih 20 programskih jezika prema TIOBE-u 212. Pozicije od 21. do 50. mjesta na listi popularnosti 223. Prvih deset programskih jezika kroz godine 234. Najpopularniji jezici posljednjih 10 godina 235. Zastupljenost programskih paradigmi 23POPIS DIJAGRAMARednibrojNaslov dijagrama Stranica1. Zastupljenost programskih jezika posljednjih deset godina 24