You are on page 1of 27

OBRTNIČKA I TEHNIČKA ŠKOLA OGULIN

J.J. Strossmayera 2, 47300 Ogulin

PROGRAMSKI JEZICI

Završni rad

Ime i prezime: Luka Bašić


Smjer: Tehničar za računalstvo
Razred: IV.b
Mentor: Bojan Grba

Ogulin, ljetni rok


školska godina 2021./2022.
Sadržaj
UVOD ............................................................................................................................................. 1
1. UPOTREBA PROGRMSKIH JEZIKA ...................................................................................... 2
1.1. Razvoj kroz povijest ................................................................................................................ 2
2.SKRIPTNI PROGRAMSKI JEZICI............................................................................................ 5
2.2. JavaScript ................................................................................................................................. 6
3.PROCEDURALNI PROGRAMSKI JEZICI............................................................................... 8
3.1.Prednosti i nedostaci proceduralnih programskih jezika .......................................................... 9
3.2. Pascal ..................................................................................................................................... 10
4. OBJEKTNO – ORIJETNIRANI PROGRAMSKI JEZICI....................................................... 12
4.1.Struktura programa ................................................................................................................. 13
4.2. C++ ........................................................................................................................................ 14
5. LOGIČKI PROGRAMSKI JEZICI .......................................................................................... 16
5.1. Prolog ..................................................................................................................................... 17
6. FUNKCIONALNI PROGRMASKI JEZICI ............................................................................ 19
6.1. Osnovni elementi ................................................................................................................... 19
6.2.Prednosti i nedostaci ............................................................................................................... 20
6.3.Lisp ......................................................................................................................................... 21
ZAKLJUČAK ............................................................................................................................... 22
LITERATURA ............................................................................................................................. 23
POPIS SLIKA ............................................................................................................................... 24
POPIS TABLICA ......................................................................................................................... 25
UVOD
Razvoj moderne tehnologije doveo nas je do razine gdje računala mogu sve obavljati
sama, ali za to im je prije svega potreban čovjek. Moderna računala su nevjerojatno brza te
svakim danom napreduju enormnom brzinom. Međutim, računala također imaju neka značajna
ograničenja: izvorno razumiju samo ograničeni skup naredbi i mora im se točno reći što da rade.

Prva osobna računala pojavila su se sedamdesetih godina prošlog stoljeća, što je dovelo
do velike potrebe za programiranjem istih. Sami počeci programiranja bili su usko vezani
pretežno uz matematiku, dok se danas isključivo odnose na računala. Danas se programiranje uči
već u osnovnoj školi što uvelike doprinosi razvoju djece te razvoju informacijskih tehnologija.
Samo učenje programskog jezika može biti izuzetno zahtjevno, pogotovo ako se nikad prije niste
susreli s istim. Međutim, mnogi misle kako je programiranje samo pisanje izvornog koda, ali
prije samog koda potrebno je sastaviti plan te dobro razmisliti jer to je i bit: razvijanje logičkog
razmišljanja i zaključivanje.

Kako je Steve Jobs, osnivač Apple-a jednom prilikom rekao:„Svatko bi trebao naučiti
programirati jer vas to uči kako razmišljati.“ Naime, programiranje nas ohrabruje na traženje
novih iskustava te učenje modernog načina komunikacije. Programiranje je kao umjetnost, cilj je
stvoriti nešto novo, apstraktno, ono što do sada nije postojalo te ga kao takvog predstaviti svijetu.
Programski jezik kao takav nije nimalo jednostavan, najbolje je isprobati nekoliko pa vidjeti koji
vam najbolje leži, jer svaki ima svoje prednosti i mane.

Cilj ovog završnog rada je upoznavanje programskih jezika namijenjenim programiranju


u cjelini, počevši od matematičarke Ade Lovelace pa sve do umjetne inteligencije. U ovom
završnom radu pronaći ćete brojne programske jezike te njihove sintakse koje mogu biti vrlo
zahtjevne što mnoge ljude odbija od programiranja. To uključuje programske jezike poput: C++,
JavaScript,Pascal…Uspoređivati ćemo programske jezike gdje ćemo vidjeti sve njihove manje i
vrline. Zadnji dio sadrži zaključak te budući razvoj programskih jezika.

1
1. UPOTREBA PROGRMSKIH JEZIKA
Zbog uvođenja automatizacije te razvojem tehnologije došlo je do potrebe stvaranja
programskih jezika. Danas se uz programske jezike vežu mnogi pojmovi poput: open source,
compiler, interpreter… te brojni drugi koje ćemo u ovom radu objasniti. Budući da postoje razne
aplikacije i programi, također postoje i razni programski jezici, a svaki ima neku određenu
namjeru.

1.1. Razvoj kroz povijest


Programiranje je temelj digitalnog doba u kojem danas živimo. Svaki put kada lajkate objavu
na društvenim mrežama, pošaljete e-poštu ili postavite alarm na svom telefonu, programski jezik
radi negdje iza ugla. Naravno, postavlja se pitanje:„Gdje je sve počelo?“

Prvi programski jezik je izumljen 1843. godine, a izmislila ga je mlada matematičarka Ada
Lovelace. Osmislila je prvi strojni algoritam za računalni stroj Difference Machine Charlesa
Babbagea, zapisala ga je na komad papira jer u to vrijeme nije bilo računala. Do danas je
osmišljeno preko 700 programskih jezika koji su danas u širokoj upotrebi.

Ne traju svi programski jezici vječno. Bilo da je to rezultat razvoja tehnologije ili
jednostavno zamjena novijim jezikom. Uz to, postoje neki stari programski jezici koje IT
profesionalci i danas koriste, najčešći su Fortran i Cobol. Početnu verziju Fortran-a predložio je u
IBM-u John Backus davne 1953. godine. Bio je to prvi kompajler za optimizaciju i bio je
naširoko korišten u znanstvenom radu jer se optimizirani kod povoljno natjecao s rukom pisanim
asemblerskim kodom. Jezik se još uvijek koristi na nekim od najbržih svjetskih superračunala.
Od 1953. godine postoji niz ažuriranja, a najnovija verzija objavljena je 2018. godine. Drugi
programski jezik Cobol je razvijen davne 1959. godine i bio je jedan od prvih programskih
jezika visoke razine. Unatoč tome što je izumljen tako davno, Cobol je i danas jako
rasprostranjen . Samo u SAD- u 43% bankovnih sustava izgrađeno je na Cobol-u, što čini 95%
bankomata i 80% osobnih transakcija.

2
Slika 1: Prvi programski jezik

Približavamo se kraju našeg putovanja kroz povijest programskih jezika. Kao što ste vidjeli,
računalno programiranje razvilo se do razine iznad svih očekivanja, pokrećući tehnologiju na
koju se svakodnevno oslanjamo. Upravo iz tog razloga potrebni su nam kvalificirani
profesionalci za implementaciju i kontrolu programskih jezika koji danas pokreću svijet.

Izvješće o IT vještinama DevSkiller 2020. godine pruža uvid za upravo to pitanje. Izvješće
sadrži podatke iz više od 213.000 testova kodiranja koje su tvrtke koje žele angažirati
specijalizirane IT stručnjake poslale u 143 zemlje.

Slika 2: Top 5 programskih jezika


koje traže računalne kompanije

3
Kao što možete vidjeti gore, JavaScript je bio najpopularniji jezik testiran na DevSkiller-u na
temelju poslanih pozivnica za testiranje. Ovaj nalaz je potvrđen u anketi za razvojne programere
Stack Overflow 2020. Godine, koja navodi JavaScript kao najpopularniji programski jezik osmu
godinu zaredom.

Povijest programskih jezika je fascinantna. Tko bi rekao da će algoritam iz sredine 19.


stoljeća započeti put tehnološkom društvu u kojem danas živimo. Od ranih strojnih kodova do
sofisticiranog čovjeku čitljivog koda koji pokreće naše omiljene tehnologije danas, programski
jezici su prošli dug put. Ono što je sigurno, računalno programiranje će se nastaviti razvijati kao
što se razvijalo u proteklih 150 godina i uzbudljivo je vidjeti što budućnost donosi te koje ćemo
mogućnosti imati.

Kao što smo maloprije rekli postoje na stotine programskih jezika te svaki imam neku
određenu namjeru, primjerice: za izradu web stranica, igrica, aplikacija… Kako bi znali što
određeni jezik radi moramo ih svrstati u kategorije, a imamo 5 osnovnih.

4
2.SKRIPTNI PROGRAMSKI JEZICI
Skriptni jezik je vrsta programskog jezika koji izvršava zadatke unutar posebnog okruženja
za izvršavanje pomoću tumača umjesto prevoditelja. Obično su kratki, brzi i interpretirani iz
izvornog koda.

Skriptni jezici koriste program poznat kao interpreter za prevođenje naredbi i izravno se
tumače iz izvornog koda, ne zahtijevajući korak kompilacije. Drugi programski jezici, s druge
strane, mogu zahtijevati od prevoditelja da prevede naredbe u strojni kod prije nego što može
izvršiti te naredbe.

Postoje dvije glavne vrste: na strani poslužitelja i na strani klijenta. Razlikuju se po tome
odakle se pokreće kod, što utječe ne samo na stvarne odabrane jezike već i na izvedbu i njihove
mogućnosti. Skriptni jezik na strani poslužitelja odnosi se na one koji se pokreću s web
poslužitelja. Budući da se izvodi sa stražnje strane, skripta nije vidljiva posjetitelju. Zbog toga je
to sigurniji pristup. Za razliku od gore navedenog, skriptni jezici na strani klijenta pokreću se u
korisnikovom pregledniku. Obično se izvodi na prednjem dijelu, što ga čini vidljivim
posjetiteljima i čini ga manje osjetljivim na eksploatacije i curenja. Primjeri ovakvog jezika su
Ruby, CSS i JavaScript.

Skriptni programski jezici imaju brojne prednosti, a ovo su neke od njih. Prvo, često se ističu
kao izvrsna polazišta za one koji su zainteresirani za učenje programiranja. To je zato što ih je
znatno lakše naučiti i koristiti od tradicionalnih jezika. To znači da možete brzo implementirati
skripte koje su vam potrebne , a da u njih ne treba uložiti puno vremena i resursa. Svatko može
koristiti skriptne jezike bez ikakvih ograničenja. Svi su otvorenog koda, što znači da svatko može
doprinijeti njihovom razvoju na globalnoj razini. Za razliku od onoga što se događa s
tradicionalnim programiranjem, skriptni jezici ne zahtijevaju od prevoditelja pohranjivanje
izvršne datoteke za pokretanje. Umjesto toga, oni koriste tumače, što pridonosi mnogo manjim
zahtjevima za memorijom na sustavu koji ih pokreće.

Međutim, skriptni programski jezici imaju i neke nedostatke koje vas mogu kočiti prilikom
programiranja. Za razliku od onoga što se događa većini programskih jezika, skriptni jezici imaju
svaki redak iskaza pojedinačno analiziran od strane prevoditelja bez ikakvih optimizacija . To
može utjecati na performanse, te znatno usporiti vaše računalo. Također, većina tumača

5
skriptnog jezika je sporija od prevoditelja. To je zato što se tradicionalni programski jezici
obično pretvaraju u strojni kod prije prevođenja, čime se korisnicima nudi brže izvršavanje.
Kako bi vaše skripte nastavile ispravno funkcionirati, potrebno ih je redovito ažurirati. To je
potrebno kad god preglednici dobiju značajne nove verzije ili kada se vaša vlastita web stranica
promijeni na neki radikalan način.

Slika 3: programa u
JavaScript-u

2.2. JavaScript
JavaScript (JS) je programski jezik koji je jedna od temeljnih tehnologija World Wide Weba
(WWW) , uz HTML i CSS. Koristi se i na strani klijenta i na strani poslužitelja koji vam
omogućuje da web stranice učinite interaktivnim, odnosno na oko privlačnijima. HTML i CSS
jezici koji web stranicama daju strukturu i stil, JavaScript web stranicama daje interaktivne
elemente koji privlače korisnika, te ga zaokupljuju. Uobičajeni primjeri JavaScripta koje možete
koristiti svaki dan uključuju pretraživanje na Amazonu, video sažetak vijesti na Večernjem
listu…

JavaScript se uglavnom koristi za web aplikacije i web preglednike. Međutim, JavaScript se


također koristi izvan weba u softveru, poslužiteljima i ugrađenim hardverskim kontrolama.

6
JavaScript omogućuje interakciju s web stranicama. Omogućuje vam gotovo sve što poželite
učiniti s nekom web stranicom.

Programeri mogu koristiti razne JavaScript okvire za razvoj mobilnih aplikacija. JavaScript
okviri su zbirka JavaScript koda koje programerima pružaju unaprijed napisani kod za korištenje
programske značajke.

Osim bezbroj mogućnosti, postoji mnogo drugih razloga da web programeri koriste
JavaScript u odnosu na druge programske jezike, kao što su: JavaScript je jedini programski
jezik izvorni za web preglednik, JavaScript je najpopularniji, postoji nizak prag za početak,
zabavan je…

Slika 4: Prikaz korisnikova


sučelja u Visual Studio Code
programu prilikom korištenje
JavaScripta-a

7
3.PROCEDURALNI PROGRAMSKI JEZICI
Proceduralni jezik je računalni programski jezik koji slijedi, redom, skup naredbi.
Primjeri računalnih proceduralnih jezika su BASIC, C, FORTRAN… Proceduralni jezici neki su
od uobičajenih tipova programskih jezika koje koriste programeri raznih skripti i softvera.
Koriste funkcije, uvjetne iskaze i varijable za stvaranje programa koji omogućuju računalu da
izračuna tražene vrijednosti.

Proceduralno programiranje se temelji na konceptu poziva procedure po čemu je i dobilo


ime. Procedure sadrže niz računskih koraka koji se moraju izvesti. Bilo koja procedura može biti
pozvana u bilo kojem trenutku tijekom izvođenja programa.

Neke od važnih značajki u proceduralnom programiranju su:

1. Unaprijed definirane funkcije: obično je instrukcija identificirana imenom. Unaprijed


su definirane funkcije ugrađene u programske jezike više razine, ali su izvedene iz
biblioteke ili registra
2. Lokalna varijabla: varijabla koja je deklarirana u glavnoj strukturi metode i ograničena
je na lokalni opseg koji joj je dan. Lokalna varijabla može se koristiti samo u metodi u
kojoj je definirana, a ako bi se koristila izvan definirane metode, kod neće raditi.
3. Globalna varijabla: varijabla koja je deklarirana izvan svake druge funkcije definirane
u kodu. Zbog toga se globalne varijable mogu koristiti u svim funkcijama (unutar i
izvan definirane metode), za razliku od lokalne varijable.
4. Modularnost: modularnost je kada dva različita sustava imaju dva različita zadatka pri
ruci, ali su grupirani kako bi prvo zaključili neki veći zadatak. Svaka grupa sustava bi
tada imala svoje zadatke koji se završavaju jedan za drugim dok svi zadaci ne budu
gotovi.
5. Prijenos parametara: prolazak parametara je mehanizam koji se koristi za
prosljeđivanje parametara funkcijama ili traženim procedurama.

8
3.1.Prednosti i nedostaci proceduralnih programskih jezika
Kao i svaki programski jezik, tako i proceduralni jezici imaju brojne prednosti i mane.
Međutim, ukoliko doista želite naučiti neki proceduralni jezik, to vam ne bi trebalo predstavljati
problem.

Neke od prednosti su: proceduralno programiranje izvrsno je za programiranje opće


namjene, jednostavnost kodiranja zajedno s lakoćom implementacije kompilatora i
interpretatora, veliki izbor knjiga i materijala za online tečajeve dostupan na testiranim
algoritmima, a to uvelike olakšava učenje, izvorni kod je prenosiv, stoga se može koristiti i za
ciljanje drugog procesora, izvorni kod se može ponovno koristiti u različitim dijelovima
programa, bez potrebe za kopiranjem, kroz tehniku proceduralnog programiranja, zahtjev za
memorijom također se smanjuje, te se tijek programa može lako pratiti.

Nedostaci proceduralnog programiranja su: izvorni kod je teže napisati kada se koristi
proceduralno programiranje, proceduralni kod se često ne može ponovno koristiti, što može
predstavljati potrebu za ponovnim stvaranjem koda ako je potrebno za korištenje u nekoj drugoj
aplikaciji, teško se povezati s predmetima iz stvarnog svijeta, važnost se pridaje operaciji, a ne
podacima, što bi moglo predstavljati probleme u nekim slučajevima, zbog osjetljivosti podataka,
podaci su izloženi cijelom programu, što ga čini manje sigurnim.

Postoje različite vrste programskih uzoraka, kao što smo već spomenuli, koje nisu ništa
drugo nego stil programiranja. Važno je razumjeti da uzorak ne odgovara određenom jeziku već
načinu na koji je program napisan.

9
3.2. Pascal
Pascal je proceduralni programski jezik razvijen oko 1970. Godine, a razvio ga je Niklaus
Wirth iz Švicarske u svrhe strukturiranog programiranja. Pascal je dobio ime u čast francuskog
matematičara, filozofa i fizičara Blaisea Pascala. Naglašava pravilnu upotrebu uvjetnih i
kontrolnih struktura u petlji bez GOTO naredbi. Pascal je razvijen na temelju jezika ALGOL 60,
međutim za razliku od ALGOL-a, pružao je mogućnost definiranja tipova podataka pomoću
kojih se organiziraju složene informacije. Korisnički definirani tipovi podataka omogućili su
programeru da uvede nazive za složenije podatke, koje je prevoditelj jezika mogao provjeriti za
ispravnu upotrebu prije samog pokretanja programa. Također, omogućuje izgradnju dinamičkih i
rekurzivnih struktura podataka kao što su liste, stabla i grafovi. Tijekom kasnih 1970-ih i 80-ih,
posebice na rastućem tržištu mini računala, Pascal je bio jedan od najkorištenijih jezika za
poučavanje programiranja. Bio je dostupan na gotovo svim računalima, a zbog svoje poznatosti,
jasnoće i sigurnosti koristio se za proizvodni softver u svrhe obrazovanja.

Kada govorimo o provjeri podataka, Pascal je vrlo striktan i koristi blokovne strukture u
programiranju. Tipovi varijabli definirani su pomoću imena, veličinom opsega i primitivnim
tipom podataka. Kada su varijable deklarirane kao neki određeni tip, kompajler pretpostavlja da
će njegov tip ostati isti tijekom njegovog „životnog vijeka“ u programu. Ovakvo korištenje
varijabli, čini kod lakšim za održavanje.

Svaki kod napisan u Pascal programskom jeziku mora sadržavati pojedine značajke bez
kojih program ne može raditi. Program posjeduje sljedeće dijelove:

I. Naziv programa,
II. Kolekcija naziva biblioteka,
III. Deklaracija tipova, konstanti, varijabli, funkcija, procedura,
IV. Glavni blok programa zajedno s izrazima i ekspresijama,
V. Komentari.

Kao što smo maloprije spomenuli Pascal se danas uvelike koristi u nastavne svrhe, a neki
od razloga za to su: lagan za učenje, jednostavan, pouzdan, učinkovit, radi na raznim računalnim
platformama…

10
Slika 5: Primjer programa za
računske operacije u Pascal
programskome jeziku

11
4. OBJEKTNO – ORIJETNIRANI PROGRAMSKI JEZICI
Objektno orijentirano programiranje (OOP) je model računalnog programiranja koji
organizira dizajn softvera oko podataka ili objekata, a ne funkcija i logike kao što to rade drugi
programski jezici. Objekt se može definirati kao podatkovno polje koje ima jedinstvene atribute,
podatke i kod. Objektno orijentirano programiranje se fokusira na objekte kojima programeri
žele manipulirati, a ne na logiku potrebnu za manipulaciju njima. Ovakav tip programiranju
dobro je prikladan za velike, složene programe koji se aktivno ažuriraju ili održavaju. Objektno
orijentirani jezici su raznoliki, ali najpopularniji su oni koji se temelje na klasama. Najpoznatiji
su: Java, C++, C#, Python, PHP…

Organizacija objektno orijentiranog programa također čini metodu korisnom za razvoj,


gdje su projekti podijeljeni u manje grupe. Prvi korak u objektno orijentiranom programiranju je
prikupiti sve objekte kojima programer želi koristiti i identificirati kako su međusobno povezani,
a taj se postupak zove modeliranje podataka.

Slika 6: Primjer razlaganja jednog


podatka u manje skupine/grupe

12
4.1.Struktura programa
Kao o svaki programski jezik, tako i objektno orijentirani programski jezici imaju neku
određenu strukturu koju moramo slijediti prilikom programiranja. Struktura koju naš program
mora sadržavati je:

1. Klase: Korisnički definirani tipovi podataka koji djeluju kao nacrt za pojedinačne
objekte, atribute i modele.
2. Objekti: To su instance klase stvorene sa posebno definiranim podacima. Objekti mogu
odgovarati objektima stvarnog svijeta ili apstraktnom svijetu. Kada je klasa početno
definirana, opis je jedini objekt koji je definiran, stoga ih moramo pojedinačno dodati.
3. Metode: Podrazumijevaju funkcije koje su definirane unutar klase koje opisuju ponašanja
objekta. Svaka metoda sadržana u definicijama klasa počinje referencom na objekt
instance. Programeri koriste metode za ponovnu upotrebu ili održavanje funkcionalnosti
inkapsulirane unutar jednog po jednog objekta.
4. Atributi: Definirani su u predlošku klase i predstavljaju stanje objekta. Objekti će imati
podatke pohranjene u polju atributa.
5. Enkapsulacija: Ovo načelo na govori da su sve važne informacije sadržane unutar objekta
i da su izložene samo odabrane informacije. Ova karakteristika skrivanja podataka pruža
veću sigurnost programa i izbjegava nenamjerno oštećenje koje može dovesti do
potpunog gubitka programa.
6. Apstrakcija: Objekti otkrivaju samo unutarnje mehanizme koji su relevantni za korištenje
drugih objekata, skrivajući svaki nepotreban implementacijski kod, kako ne bi došlo do
gomilanja informacija.
7. Nasljedstvo: Klase mogu koristiti kod iz drugih klasa. Ovo svojstvo objektno
orijentiranih programskih jezika omogućuje temeljitiju analizu podataka, skraćuje
vrijeme razvoja i osigurava višu razinu točnosti.
8. Polimorfizam: Objekti su dizajnirani za dijeljenje ponašanja i mogu poprimiti više
različitih oblika. Program će odrediti koje je značenje ili korištenje potrebno za svako
izvođenje tog objekta iz nadređene klase, smanjujući potrebu za dupliciranjem koda, te
tako štedi vrijeme i resurse.

13
4.2. C++
C++ je programski jezik opće namijenjene, razvio ga je danski programer Bjarne
Stroustrup i dolazi kao proširenje programskog jezika C. a. Poboljšanja nad jezikom C nastavila
su se sa brojnim značajkama poput: virtualne funkcije, preopterećenje operatora, višestruko
nasljeđivanje… U početku se zvao „C s klasama“, a kasnije je dobio naziv C++ krajem 1983.,
uzimajući da je „++“ znak za povećavanje u programskom jeziku C. Danas je C++ je jedan od
najpopularnijih programskih jezika koji se u velikoj mjeri koristi kod sistemskih i aplikacijskih
softvera, drivera, embedded sustavima…

U jesen 1985. godine prva komercijalna distribucija programskog jezika C++


predstavljena je javnosti u knjizi The C++ Programming Language čiji je autor Bjarne
Stroustrup. Naime, on je u svojoj knjizi predstavio neka pravila koja se programeri moraju
pridržavati prilikom korištenja C++ programskog jezika, a neku od njih su:

1. C++ je dizajniran da bude jezik opće namijene, efikasan i prenosiv kao jezik C,
2. C++ pruža mogućnost korištenja višestrukih stilova programiranja (npr. proceduralno
programiranje),
3. C++ je dizajniran tako da je kompatibilan s programskim jezikom C, što je više moguće,
4. C++ izbjegava implementaciju značajki koje su specifične za neku platformu ili nisu
opće namijene,
5. C++ je stvoren kako bi nudio programerima izbor načina korištenja značajki jezika, jer
restrikcije u većini slučajeva neće spriječiti programera da nešto radi na svoj način,
6. U jeziku C++ treba izbjeći korištenje značajki koje su nepotrebne i koje pridodaju općim
troškovima performansi jezika,
7. C++ je dizajniran da bude funkcionalan bez kompleksnih programskih okruženja, što
donosi jednostavnost.

14
Slika 7: Source kod u C++ programskome
jeziku

Slika 8: Ispis programa

15
5. LOGIČKI PROGRAMSKI JEZICI
Logički programski jezici navode program kao skup logičkih odnosa. Svaki program
napisan u logičkom programskom jeziku je skup rečenica u logičkom obliku, koje izražavaju
činjenice i pravila o nekom problemu. Najpoznatiji logički programski jezici su Prolog, ASP i
Datalog. Ti jezici su slični jeziku baze podataka SQL.
Program se izvršava pomoću „motora za zaključivanje“ koji odgovara na upit sustavnim
pretraživanjem ovih odnosa kako bi napravio zaključke koji će odgovoriti na traženi upit. U
logičkim programskim jezicima pravila su napisana kao logičke rečenice s glavom i tijelom; na
primjer, „H je istinit ako su B1, B2 i B3 istiniti.“ Neki logički programski jezici, kao što su
Datalog i ASP (Answer Set Programming), su većinom deklarativni. Oni dopuštaju izjave o tome
što bi program trebao postići, bez određenih uputa korak po korak o tome kako to učiniti. Drugi,
poput Prologa, kombinacija su deklarativnog i imperativa. Oni također mogu uključivati
proceduralne izjave, kao što je na primjer: „Da biste riješili H, riješite B1, B2 i B3.“
Važna stvar u logičkom programiranju je razdvajanje programa na njihovu logičku
komponentu i njihovu upravljačku komponentu. S čistim logičkim programskim jezicima, sama
logička komponenta određuje tražena rješenja.
Logičko programiranje možemo pogledati na sljedeći način: imamo neki algoritam koji
mora biti spoj logike i kontrole. Ovdje logika predstavlja naš logički program, dok kontrola
predstavlja dokazivanje traženog teorema.

Slika 9: Primjer rješavanja


problema gore navedenim
postupkom

16
Za razliku od funkcionalnog programiranja koje slijedi Von-Neumannovu arhitekturu ili
koristi uzastopne korake, logičko programiranje koristi apstraktni model ili se bavi objektima i
njihovim odnosima. Kao što smo maloprije vidjeli, logika i kontrola su odvojene u logičkom
programiranju, dok su u funkcionalnome pomiješane, a to je ona najveća razlika između ove
dvije vrste programiranja.

Slika 10: Razlika između logičkog i


funkcionalnog programiranja

5.1. Prolog
Prolog je logički i deklarativni programski jezik povezan s umjetnom inteligencijom i
računskom lingvistikom. Riječ „Prolog“, sastoji se od dvije zasebne riječi: PRO, što označava
programiranje i LOG, što označava logiku. To je jedan od glavnih primjera jezika četvrte
generacije koji podržava paradigmu deklarativnog programiranja (programiranje logikom). Ovo
je posebno prikladno za programe koji uključuju simboličko ili nenumeričko računanje. To je
glavni razlog za korištenje Prologa kao programskog jezika u umjetnoj inteligenciji, gdje su
manipulacija simbolima i manipulacija zaključivanjem glavni zadaci.
U Prologu ne trebamo spominjati način na koji se jedan problem može riješiti, samo treba
navesti koji je problem, kako bi ga Prolog automatski riješio, što uvelike olakšava posao
programeru. Međutim, u Prologu bismo trebali dati tragove kao metodu rješenja.

17
Prolog se sastoji od 3 elementa:
1. Činjenice − Činjenica je predikat koji je istinit, na primjer, ako kažemo, „Trava je
zelena“, onda je to činjenica.
2. Pravila − Pravila su izumiranja činjenica koje sadrže uvjetne klauzule. Da bi se
zadovoljilo pravilo, svi uvjeti moraju biti ispunjeni.
3. Pitanja − Da bismo pokrenuli prolog program, potrebna su nam neka pitanja, na koja se
može odgovoriti danim činjenicama i pravilima.

Slika 11: Primjer postavljanja


upita u Prologu

Slika 12: Primjer


programa u Prologu

18
6. FUNKCIONALNI PROGRMASKI JEZICI
Funkcionalno programiranje je način razmišljanja o konstrukciji softvera stvaranjem
čistih funkcija, u kojemu se programi konstruiraju primjenom i sastavljanjem funkcija. U
funkcionalnom programiranju, funkcije se tretiraju kao građani najvišeg reda, što znači da se
mogu vezati za imena te proslijediti kao argumente i vratiti iz drugih funkcija.
Funkcionalni programski jezici posebno su dizajnirani za rukovanje aplikacijama za
simboličko računanje i obradu popisa. Funkcionalno programiranje temelji se na matematičkim
funkcijama. Funkcionalno programiranje podržava funkcije višeg reda i značajke lijene
evaluacije. Neki od najpopularnijih funkcionalnih programskih jezika uključuju: Lisp,Erlang,
Haskell, Clojure… Poput objektno orijentiranog programiranja, funkcionalni programski jezici
podržavaju koncepte kao što su apstrakcija, inkapsulacija, nasljeđivanje i polimorfizam.
Funkcionalni programski jezici podijeljeni su u 2 skupine:
1.Čisti funkcionalni jezici − Ove vrste funkcionalnih jezika podržavaju samo funkcionalne
paradigme. Na primjer: Haskell.
2.Nečisti funkcionalni jezici – Ove vrste funkcionalnih jezika podržavaju funkcionalne
paradigme i programiranje imperativnog stila. Na primjer: LISP.

6.1. Osnovni elementi


Kao i svaki programski jezici, tako i funkcionalni jezici imaju određenu strukturu koju
trebamo pratiti prilikom programiranja. Osnovna terminologija i elementi funkcionalnog
programiranja su:
1. Nepromjenjivi podaci - Znači da biste trebali lako stvoriti strukture podataka umjesto da
mijenjate one koje već postoje.
2. Referentna transparentnost - Funkcionalni programi trebaju izvoditi operacije kao da je to
prvi put.
3. Modularnost - Modularni dizajn povećava produktivnost. Mali moduli se mogu brzo
kodirati i imaju veće šanse za ponovnu upotrebu što zasigurno vodi bržem razvoju
programa.
4. Održavanje – Funkcionalno programiranje lakše održavati jer se ne morate brinuti da ćete
slučajno promijeniti bilo što izvan zadane funkcije.

19
5. Zatvaranje - Unutarnja funkcija koja može pristupiti varijablama roditeljske funkcije, čak
i nakon što se roditeljska funkcija izvrši.
6. Funkcije višeg reda - Omogućuju djelomične primjene. Ova tehnika primjenjuje funkciju
na svoje argumente jedan po jedan
7. Čista funkcija - Funkcija čiji su ulazi deklarirani kao ulazi i nijedan od njih ne smije biti
skriven.
8. Nečiste funkcije - suprotno od čistih. Imaju skrivene ulaze ili izlaze; naziva se nečistim.
Nečiste funkcije se ne mogu koristiti niti testirati izolirano jer imaju ovisnosti.
9. Kompozicija - Kompozicija funkcija kombinira 2 ili više funkcija kako bi se napravila
nova.

6.2.Prednosti i nedostaci
Budući da funkcionalno programiranje nije kao ostale vrste, zbog svoje specifične
primjene u matematici, tako niti naredbe nisu slične, ali prednosti i nedostaci zasigurno postoje.
Neke od prednosti su: omogućuje vam izbjegavanje zbunjujućih problema i pogrešaka u kodu,
paralelna obrada, podržava ugniježđene funkcije, lakše je testirati i izvoditi testiranje jedinica i
otklanjanje pogrešaka u kodu. Iako je riječ o izuzetno kompleksnoj vrsti programiranja, ipak, kao
i svaka vrsta, nije do kraja razrađena te ima poneke nedostatke koje mogu usporit rad, neke od
mana su: teško održavanje jer se mnogi objekti razvijaju tijekom kodiranja, potrebno je dosta
vremena da se postavi računalni okoliš te jezik nije lako razumljiv.

Tablica 1: Usporedba
funkcionalnog
programiranja i objektno
orijentiranog
programiranja

20
6.3.Lisp
Lisp je programski jezik utemeljen na matematičkoj teoriji rekurzivnih funkcija. Lisp je
drugi najstariji programski jezik visoke razine koji je još uvijek u upotrebi, a samo je Fortran
stariji. Lisp je vrlo brzo postao zajednički jezik za programiranje umjetne inteligencije. U Lisp-u
se sva računanja izražavaju kao funkcija barem jednog objekta. Objekti mogu biti druge funkcije,
stavke podataka (kao što su konstante ili varijable) ili strukture podataka. Lisp-ova sposobnost
računanja pomoću simboličkih izraza umjesto brojeva čini ga pogodnim za umjetnu
inteligenciju.
Glavne značajke programskog jezika Lisp:
1. Strojno neovisan jezik.
2. Koristi iterativnu metodologiju dizajna i lako je proširiv.
3. Omogućuje nam dinamičku izradu i ažuriranje programa i aplikacija.
4. Omogućuje otklanjanje pogrešaka na visokoj razini.
5. Podržava objektno orijentirano programiranje.
6. Podržava sve vrste tipova podataka kao što su objekti, strukture, liste, vektori, podesivi
nizovi, skupovi, stabla i simboli.
7. To je jezik koji se temelji na izražavanju.
8. Korištenjem lisp-a također možemo kreirati vlastite funkcije.

Slika 13: Primjer


Fibonaccijeva niza u
Lisp programskome
jeziku

21
ZAKLJUČAK

Naučiti programiranje je zahtjevan proces i zahtijeva puno vremena i posvećenosti.


Postoje mnogi problemi prije samog programiranja, poput straha od programiranja i percepcija
da je programiranje veoma teška radnja, što nije daleko od istine. U većini slučajeva
programiranje znači učiti sintaksu, zanemarujući algoritamsko i logičko rješavanje problema,
međutim sve troje je važno ako namjeravate biti vrhunski programer. Odabir programskog
jezika namijenjenom učenju je važan faktor kod učenja programiranja. Ovaj rad opisuje pojedine
programske jezike namijenjene učenju, a postoje i na stotine drugih.

Kao što ste vidjeli u ovom završnom radu, koji pokriva samo pet od mnogih jezika na
terenu, slične ideje se iznova pojavljuju na različitim jezicima. Neki jezici pokušavaju unijeti
nove ideje u stare programske domene, poput pokretanja na virtualnoj mašini dizajniranom za
drugi jezik. Čimbenici koji pokreću nove jezike uključuju novi i brži hardver, nove vrste
aplikacija, nova računalna okruženja (kao što su grafički i web prikaz) i dublje razumijevanje
računalne znanosti.
Važno je naglasiti da je u programiranju najvažniji angažman samog programera, što više
učite i programirate to će te postati bolji te će te stečeno znanje moći iskoristiti na razne načine.

22
LITERATURA
1) Robert W. Sebesta: CONCEPTS OF PROGRAMMING LANGUAGES, URL:
https://www.ime.usp.br/~alvaroma/ucsp/proglang/book.pdf
2) Computer History, Timeline of Computer History, URL:
http://www.computerhistory.org/timeline/software-languages/
3) What is a Scripting Language? ,URL: http://www.computerhistory.org/timeline/software-
languages/
4) About JavaScript, URL: https://developer.mozilla.org/en-
US/docs/Web/JavaScript/About_JavaScript
5) PROCEDURAL PROGRAMMING. URL:
https://uomustansiriyah.edu.iq/media/lectures/6/6_2018_12_13!08_24_38_AM.pdf
6) Pascal - Overview – Tutorialspoint, URL:
https://www.tutorialspoint.com/pascal/pascal_overview.htm
7) What is Object-Oriented Programming (OOP)?, URL:
https://www.techtarget.com/searchapparchitecture/definition/object-oriented-
programming-OOP
8) A Complete Guide to Programming in C++ - LMPT, URL: http://www.lmpt.univ-
tours.fr/~volkov/C++.pdf
9) Functional Programming Paradigm – GeeksforGeeks, URL:
https://www.geeksforgeeks.org/functional-programming-paradigm/
10) What is Logic Programming? Virtusa ,URL: https://www.virtusa.com/digital-
themes/logic-programming

23
POPIS SLIKA
Slika 1: Prvi programski jezik ................................................................................................3

Slika 2: Top 5 programskih jezika..........................................................................................3

Slika 3: Slika 3: Prikaz korisnikova sučelja u skriptnom programskome jeziku


PHP.........................................................................................................................................6

Slika 4: Prikaz korisnikova sučelja u Visual Studio Code programu prilikom korištenje
JavaScripta-a..........................................................................................................................7

Slika 5: Primjer programa za računske operacije u Pascal programskome


jeziku......................................................................................................................................11

Slika 6: Primjer razlaganja jednog podatka u manje


skupine/grupe:........................................................................................................................12

Slika 7: Source kod u C++ programskome


jeziku......................................................................................................................................15

Slika 8: Primjer rješavanja problema gore navedenim


postupkom..............................................................................................................................15

Slika 9: Primjer rješavanja problema gore navedenim


postupkom..............................................................................................................................16

Slika 10: Razlika između logičkog i funkcionalnog


programiranja.........................................................................................................................17

Slika 11: Primjer postavljanja upita u


Prologu...................................................................................................................................18

Slika 12: Primjer programa u Prologu....................................................................................18

Slika 13: Primjer Fibonaccijeva niza u Lisp programskom


jeziku.......................................................................................................................................21

24
POPIS TABLICA
Tablica 1: Usporedba funkcionalnog programiranja i objektno orijentiranog
programiranja………………………………………………………………………………....20

25

You might also like