Professional Documents
Culture Documents
Programski Jezici
Programski Jezici
Programski Jezici
Student: Profesor:
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
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
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.
11
Jezici i alati za grafičku obradu podataka (Havard graphics, LabView, G jezik, TCL/TK,
AutoCad)
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
[5] http://www.scribd.com/doc/30056792/Osnovi-Programiranja-i-Programski-Jezici
14