Programski Jezici

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

SEMINARSKI RAD

PREDMET: PROGRAMSKI JEZICI

TEMA: RAZVOJ PROGRAMSKIH JEZIKA

Student: Profesor:

Josip Jakešević Doc.dr.Srečko Stanković

Banja luka 2018. godine

1
SADRŽAJ

UVOD……………………………………………………………………………………….. 3
1. OSNOVNI POJMOVI……………….........……………………………………………….. 4
2. POODJELA PROGRAMSKIH JEZIKA……….………………………………………... 7
3. GENERACIJE PROGRAMSKIH JEZIKA……………….......…………………………. 9
3.1. Programski jezici prve generacije…………………………...................................…… 9
3.2. Programski jezici druge generacije……………………………....……………………. 9
3.3. Programski jezici treće generacije……………....................……....………………….. 10
3.4. Programski jezici četvrte generacije ………………………………....……………….. 11
3.5. Programski jezici pete generacije ……………………………………....….…………. 12
ZAKLJUČAK ……………………………………..........…………………….………......... 13
LITERATURA …………...…………....................………………………………………... 14

2
UVOD

Programski jezik je određen skupom simbola i pravilima njihovog slaganja kojim se opisuje
postupak računanja. Opis računanja u danom programskom jeziku interpretira, odnosno tumači,
stroj koje nazivamo računalo. Poznati sinonimi za postupak računanja su algoritam i program.
Programski simbol je nedjeljiva cjelina koju računalo, odnosno tumač, "razumije" i prevodi
u rad stroja. Niz simbola, složeni po pravilima programskog jezika, čine jezične
izraze (rečenice) tog programskog jezika koji se zatim zapisuju na podatkovni medij i predaje
računalu koje na svaki otkucaj sata čita i tumači jedan simbol programa zapisanog na
podatkovnom mediju.
Da bi se jezik smatrao programskim jezikom mora ispunjavati uvjet poznat u svijetu
matematike i računarske znanosti kao Turing potpunost, što jamči da dani programski jezik
može opisati svaki računalni postupak (program/algoritam).
Osnovna podjela je na niže (strojne jezike) i više (orijentirane ljudima).
Viši jezici pak mogu biti:
sekvencijalni
proceduralni (Pascal, C)
funkcijski (Lisp, Erlang, ML)
objektno orijentirani (Java, C++)

Razvoj programskih jezika i cjelokupne kulture računarske znanosti, urodilo je sa više stotina
jezika. Svaki od tih jezika je osmišljen i prilagođen za određenu svrhu, bilo to intuitivnije i
tečnije izražavanje programerske ideje ili pak optimalno izvođenje napisanog programa.
Važno je istaknuti jednu činjenicu, od najjednostavnijeg programskog jezika niske razine
apstrakcije do najkompleksnijih modernih jezika visoke razine apstrakcije, njihova izražajnost
je u potpunosti jednaka. Temelje dane tvrdnje 1936. godine postavio je britanski matematičar i
otac računarske znanosti, Alan Turing, u revolucionarnom konceptu univerzalnog Turingovog
stroja i Turingove potpunosti. Svojstvo univerzalnosti stroja ukratko znači da može izvoditi
svaki matematički račun, algoritam odnosno program.

3
1. OSNOVNI POJMOVI

Računar može izvršiti samo one poslove za koje je dobio detaljne upute (instrukcije, naredbe)
kako ih obaviti. Računar razumije i može izvršiti samo one instrukcije koje su napisane u njemu
razumljivom jeziku, strojnom jeziku, iskazanom binarnim brojem, tj. nulama i jedinicama.Za
pisanje instrukcija u strojnom jeziku potrebno je temeljito poznavati granu računala (procesora)
i koristiti brojčane kodove jer se instrukcije strojnog jezika izravno odnose na pojedine dijelove
procesora i vrijede samo za taj procesor. Svaki tip procesora ima sebi svojstven strojni jezik
koji nije primjenjiv na drugoj vrsti računala.
Program je niz instrukcija napisanih određenim redoslijedom, čijim izvršenjem se izvršava
neki zadatak. Da bi se pojednostavilo pisanje programskih instrukcija u binarnom kôdu, uveden
je mnemonički oblik pisanja instrukcija.
Mnemonički oblik instrukcije jest znakovni prikaz (niz slova, brojaka i specijalnih znakova)
koji podsjeća na radnju koja će se izvršiti tom instrukcijom. Imena operacija i instrukcija često
su kratice engleskih riječi (npr. ADD, INC, PUSH, PULL). Svakoj instrukciji u mnemoničkom
obliku pripada jedna instrukcija u binarnom obliku. Za instrukcije napisane u binarnom
odnosno mnemoničkom obliku kaže se da su napisane u nižem simboličkom jeziku.
Objedinjavanjem više instrukcija strojnog jezika (nižeg oblika) u jednu novu instrukciju (viši
oblik instrukcije) postiže se pisanjem u simboličkom jeziku višeg nivoa.
Viši simbolički jezici omogućuju pisanje programa zapisom sličnom prirodnom jeziku i
matematičkom zapisu.
Programer (čovjek koji piše program) najčešće ne mora znati gotovo ništa ili vrlo malo o
grani računara čime je pisanje programa olakšano. Jedna od najvećih prednosti viših
simboličkih jezika jest da se jedan te isti program može primijeniti na različitim tipovima
računala (procesora).
Programiranje predstavlja postupak pisanja programa u nekom od simboličkih jezika. Za više
simboličke jezike uvriježen je naziv (viši) programski jezici.
Programski jezik je set instrukcija koje računalo razumije i koje može interpretirati. Način
korištenja instrukcija u programu i njihovo slaganje propisano je pravilima (gramatika jezika)
odabranog programskog jezika, a naziva se sintaksa.
Ukoliko se ne zadovolji propisana sintaksa, program nije ispravan i nije ga moguće prevesti u
jezik razumljiv računaru, a samim time ni izvršiti. Značenje programa, tj. programskih izraza
definirano je semantikom programskog jezika. Sintaktičke pogreške otkriva program
prevoditelj pomoću kojeg se izvorni oblik programa prevodi u izvedbeni (izvršni), tj. strojni.
4
Logičku ispravnost programa računalo ne otkriva niti javlja, nju mora provjeriti odnosno
osigurati programer.
Izvorni program ili izvorni kod predstavlja niz instrukcija napisanih u nekom od programskih
jezika.
Izvedbeni ili izvršni program predstavlja datoteku koja sadrži instrukcije strojnog jezika.
Prevođenje je postupak kojim se programi pisani u nekom od programskih jezika (simboličkih
jezika) prevode uz pomoć programskih prevoditelja na jezik koji računar razumije, a to je
jezik nula i jedinica (strojni jezik).Prema načinu prevođenja (složenosti i djelotvornosti)
instrukcija izvornog programa u strojni jezik, programi 7
 interpretere
 kompajlere
Interpreteri su programi koji svaku naredbu izvornog programa prevode u strojni jezik u
trenutku izvonenja programa naredbu po naredbu.
Kompajleri (kompilator,engl. compiler) su programi koji prevode izvorni program u strojni
program samo jednom, i to za vrijeme postupka prevođenj koji se pomoću linkera transformira
u izvršni program.
Linker je program koji uzima jedan ili više objektnih programa generiranih od strane
kompajlera i spaja ih u jedan izvršni program koji se može samostalno pozvati i izvršiti po
potrebi. Linkeri mogu uzimati i gotove objekte iz programskih biblioteka (engl. library) koji su
napisani od strane drugih programera.
Debugger je program koji pomaže pri otklanjanju pogrešaka u programu, može testirati i
provjeriti pravilnost rada programa. Postupak otklanjanja pogrešaka naziva se debugging. Cilj
programiranja je pomoću računala od ulaznih podataka dobiti izlazne rezultate obrade.
Problemi (zadaci) koje programiranjem treba riješiti često nisu jednostavni da bi se odmah
moglo pristupiti pisanju programa, pa se postupak programiranja rastavlja na više koraka (faza
programiranja):
1. Postavka zadatka – potrebno je jasno definirati što je cilj zadatka, analizirati postojeće
informacije, opisati sve podatke, predvidjeti sve moguće slučajeve koji se mogu javiti kod
rješavanja zadatka;
2. Analiza zadatka – analiziraju se ulazni i izlazni podaci, definiraju veze između podataka,
daje se precizan opis zadatka koji rezultira izradom matematičkog modela koji se može
realizirati na računaru;
3. Razrada algoritma – definira se način na koji se od početnih, ulaznih podataka dolazi do
traženih, izlaznih. Ukoliko je zadatak opsežan treba ga rastaviti na više dijelova. Svaki zadatak
5
može se riješiti na više načina, zato bi trebalo proanalizirati sve načine i odabrati optimalan. Pri
tome treba voditi računa broju potrebnih operacija i memorijskih resursa da bi se algoritam
uspješno izvršio;
4. Pisanje programa – ovisno o zadatku koji treba riješiti i raspoloživoj opremi bira se
programski jezik koji je najbolji izbor u konkretnom slučaju;
5. Faza prevođenja, izvršavanja i testiranja programa – program treba ispraviti od eventualnih
sintaktičkih pogrešaka, prevesti na oblik razumljiv računalu (strojni jezik) pomoću programa
prevoditelja. Da bi se program izvršavao, potrebno je formirati izvršnu verziju programa. Često
su faze prevođenja i izrade izvršnog oblika programa objedinjene. Izvršnu verziju programa
treba testirati, tj. provjeriti da li program rješava postavljeni zadatak.U toj fazi treba otkriti što
više skrivenih grešaka. Po potrebi treba se vratiti na prethodne faze;
6. Izrada dokumentacije – u dokumentaciji programa treba opisati što program radi, dati
uputstva kako se koristi, detaljnije opisati algoritam ukoliko se radi o složenijem zadatku;
7. Održavanje programa – korištenjem programa mogu se uočiti neke pogreške koje nisu
otkrivene tijekom testiranja, a potrebno ih je otkloniti. Ponekad treba izvršiti i neke promjene u
programu uslijed nastupanja novih okolnosti. Ova faza podrazumijeva i proširivanje programa
dodavanjem novih funkcija odnosno modula. Pod pojmom algoritam podrazumijeva se način
(uputa, postupak, metoda) kojim računalo rješava neki zadatak, tj. niz instrukcija čijim se
izvršenjem rješava neki problem. Pri pisanju algoritama često se koriste pomagala koja
olakšavaju njihovu izradu kao npr. dijagrami tijeka, pseudokod (algoritam zapisan riječima),
biblioteke često korištenih algoritama i sl.a. Prevođenjem nastaje objektni program.

6
2. PODJELA PROGRAMSKIH JEZIKA

Mnogo je kriterija po kojima se može izvršiti podjela programskih jezika. U ovom radu bit će
izvođene samo neke od podjela i to na osnovi sljedećih kriterija:
Podjela prema razini:
 Programski jezici niske razine (niži programski jezici)
 Računarski jezik
 Asembler
 Programski jezici visoke razine (viši programski jezici)
 Oni jezici čije se naredbe ne mogu izravno prevesti u ralinarski jezik
Podjela sa aspekta povijesnog razvoja (generacijska podjela):
 Programski jezici prve generacije
 Programski jezici druge generacije
 Programski jezici treće generacije
 Programski jezici četvrte generacije
 Programski jezici pete generacije
Podjela prema namjeni:
 Jezici za rješavanje numeričkih i naučnih 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 sisteme umjetne inteligencije (LISP, Prolog)
 Jezici za rad s bazama podataka (SQL, PL/SQL, Clarion), itd.
Razvojem programskih jezika gubi se smisao ove podjele, jer se današnji
programski jezici mogu ravnopravno koristiti u svim područjima odnosno
smatraju se višenamjenskim.
Podjela sa aspekta strukturiranosti:
 Nestrukturirani (BASIC, FORTRAN)
 Strukturirani (Pascal, Ada, C)
Podjela prema načinu rješavanja problema:
 Proceduralni (FORTRAN, COBOL, Pascal, C)
 Neproceduralni (Prolog, SQL)
7
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)

8
3. GENERACIJE PROGRAMSKIH JEZIKA

Usporedno s razvitkom informatike, razvijali su se i programski jezici. Iako nisu jednoznačno


određene, smatra se da je do danas razvijeno pet generacija programskih jezika. Iz godine u
godinu razvijaju se novi jezici. Godine 1985. postojalo je oko 150 programskih jezika, 1990.
godine broj je narastao na 300, 2008. godine bilo ih je oko 700.Koliko ih je danas? Teško da se
može dati precizan odgovor na to pitanje jer svakim danom je sve više nadogradnja već
postojećih programskih jezika, otkrivaju se novi jezici, a raste i broj kompanija koje se bave
razvojem i proizvodnjom programskih jezika i alata.

3.1. Programski jezici prve generacije


Pod jezicima prve generacije podrazumijevaju se računarski (strojni) jezici. Računarski jezik
(engl.machine language, machine code) jedini je jezik kojeg računar razumije, jedini programi
pisani u računarskom jeziku mogu se bez dodatnog prevođenja izvršiti na računaru. Svi se ostali
oblici programa pisani u nekim drugim programskim jezicima moraju prevesti u računarski
jeziku. Računarski jezik binarni je oblik programa, što znači da se instrukcije pišu u binarnom
brojevnom sustavu (znamenke 0 i 1). Računarski jezik direktno je vezan za računar odnosno
procesor, program napisan u strojnom jeziku za jednu vrstu računala (procesora) nije primjenjiv
na drugoj vrsti računara. Prema prof. Grundleru (v. Grundler, 2000., str. 334) za pisanje
programa u strojnom jeziku osim binarnog može se koristiti i heksadecimalni sustav, pa čak i
mnemonički oblik zapisa. Prednosti pisanja programa u računarskom jeziku su brzina izvođenja
programa te djelotvorno iskorištenje memorije. Nedostaci su složenost postupka izrade
programa (dugački, nepregledni programi, pisanje podložno greškama koje je teško otkriti,
pisanje programa traje dugo), ograničenost programa za jedan tip procesora (programi se ne
mogu prenijeti na računar drugačijeg tipa), programer mora dobro poznavati granu računara
(pisanje programa namijenjeno je usko specijaliziranim stručnjacima).

3.2. Programski jezici druge generacije

Jezici druge generacije su asembleri (engl. assembly language, assembly code), to su najniži
programski jezici, najbliži binarnom strojnom kôdu. Instrukcije asemblera su skraćenice koje
se sastoje od nekoliko slova (mnemonici) i brojeva. Slovne skraćenice najčešće dolaze od
engleskih naziva pojedine instrukcije (npr. MOVE je instrukcija za premještanje podataka,
skraćenica dolazi od engl. Riječi move). Pisanje programa u asembleru daleko je jednostavnije,

9
ali prije izvođenja zahtijeva prevođenje u računarski jezik. Program za prevođenje naziva se
assembler (engl. assembler). U početku je svakoj asemblerskoj (mnemoničkoj) instrukciji
odgovarala točno jedna instrukcija u binarnom računarskom jeziku. Kasnije je jednoj
asemblerskoj instrukciji odgovaralo više računarskih instrukcija, a omogućeno je i izdvajanje
dijelova koda, koji se često ponavlja, u potprograme. U programskom jeziku asembler postoji
mogućnost pisanja komentara koji olakšavaju snalaženje u programu, a program za prevođenje
asembler zanemaruje ih pri prevođenju u računarski jezik

Iako je pisanje programa u programskom jeziku asembler daleko jednostavnije od pisanja u


strojnom jeziku, ipak je to i dalje mukotrpan posao koji zahtijeva puno vremena. Traženje i
ispravljanje grešaka pri razvoju programa također je još uvijek zahtjevan i dugotrajan proces.
Svaki tip računara ima sebi svojstven programski jezik asembler koji nije primjenjiv na drugom
tipu računala. Programer i dalje mora imati punu kontrolu nad svim komponentama računara.
Prednost programa pisanih u jeziku asembler je što se brzo izvršavaju i zauzimaju malo
memorije u odnosu na programe pisane u drugim programskim jezicima. Jezici prve (strojni
jezik) i druge (asembler) generacije spadaju u programske jezike niže razine (niži programski
jezici, engl. low level languages).

3.3. Programski jezici treće generacije

Krajem 50-tih odnosno početkom 60-tih godina prošlog stoljeća pojavili su se prvi jezici visoke
razine, tzv. viši programski jezici (engl. high level languages, HLL). Razvojem jezika treće
generacije postignuta je neovisnost o tipu računara (procesora) na kojem se izvodi program.
Teoretski, program napisan jezikom treće generacije može se koristiti na bilo kojem računaru
(uz minimalnu izmjenu) koje ima za njega pripadajući kompajler. Programiranje je olakšano ne
samo time štosu instrukcije ovih jezika više nalik govornom jeziku, nego i činjenicom da
programer više ne treba poznavati građu računara. Opće, što je programski jezik na višem
nivou, to je manje potrebno znati o tehničkim detaljima specifičnim za pojedini računar. Svaka
naredba višeg jezika prevodi se u više naredbi računarskom jezika. Pojava interpretera kao
alternativa kompajlerima još je jedna od karakteristika jezika treće generacije. Kao rezultat rada
interpretera ne postoji izvršni oblik programa već postupak prevođenja nastupa svaki puta kada
se program pokreće (naredba po naredba se prevodi i nakon prevođenja izvodi). Među prvim
jezicima treće generacije bili su FORTRAN (Formula Translator),

10
ALGOL (Algorithmic Language), COBOL (Common Business OrientedLanguage), BASIC
(Beginner's All-purpose Symbolic Instruction Code), Pascal (nazvan prema francuskom
matematičaru Blais Pascalu), PL/I (Programing Language I) i C jezik.

3.4. Programski jezici četvrte generacije


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

11
 Jezici i alati za grafičku obradu podataka (Havard graphics, LabView, G jezik, TCL/TK,
AutoCad)

3.5. Programski jezici pete generacije


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

12
ZAKLJUČAK

Kao što se da pročitati u ovom seminarskom radu je opisana kratka povijest generacija
programskih jezika, nekih osnovnih podjela i njihovog značaja. Programski jezici su u kratkom
periodu evoluirali kao i informatičke nauke i jako je teško stizati pratiti današnja tehnička
dostignuća. Računari su nam uveliko olakšali naš život i gotov je nemoguće je zamisliti da naš
svakodnevni život može funkcionirati bez njih. Naročito se da primijetiti po petoj generaciji
programskih jezika koja će donositi odluke bez ljudskog odlučivanja.
S toga će nam godine koje dolaze biti jako uzbudljive puni novih tehnički dostignuća.

13
LITERATURA

[1] http://www.etfos.unios.hr/upload/OBAVIJESTI/obavijesti_dodiplomski/823Java_AV.pdf

[2] https://hr.wikipedia.org/wiki/Programski_jezik

[3] http://adria.fesb.hr/~tmrnjava/vjezbe/java_programiranje/predavanja/P1.pdf

[4] Programski jezici; Elida Idrizovid

[5] http://www.scribd.com/doc/30056792/Osnovi-Programiranja-i-Programski-Jezici

14

You might also like