Uvod
U sadašnje vreme reč program je veoma često u upotrebi. Intuitivno imamo predstavu o tome šta je program jer smo se već sretali sa programima za crtanje ili puštanje muzike ili filmova, kao i mnogim drugim koje smo čak jednostavnije nazivali npr. Word (program za obradu teksta), Excel (program za tabelarne proračune) i sličnim. Neke programe čak više ni ne nazivamo programima već jednostavno "igricama", iako si i "igrice" programi.
Dakle, za sada možemo reći: program je ono što izvršava računar (ili slobodnije: ono što radi na računaru), bez obzira na njegovu namenu. Za preciznu definiciju pojma program biće nam potreban pojam algoritma.
Algoritam
U IX veku živeo je persijski matematičar Abu Abdulah Muhamed bin Musa Al Horezmi koji je dao doprinos u raznim oblastima kao što su matematika, astronomija i geografija, ali je za informatiku od značaja to što je on prvi dao opšti metod (Al Horezmijevo rešenje) za nalaženje dva korena kvadratne jednačine.
********
U svojoj knjizi Račun sa Hindu brojkama on je opisao indijsku notaciju (kasnije zbog uticaja ove knjige nazvanu „arapskim" numeralima), u kojoj vrednost numerala zavisi od njihovog položaja, i koja uključuje nulu.
Kasnije je ova knjiga prevedena na latinski, ali je ovoga puta naslov Algoritmi de numero indorum što je loš prevod naslova Al Horezmi o indijskim brojkama. Ubrzo se reč algoritam (lat. Algorithmus) odomaćila za način računa sa ovim novim brojkama (sada već nazvane arapskim, a ne indijskim).
***** tekst preuzet sa Wikipedije. Detaljnije o Al Horezmiju
Opšti metod za nalaženje dva korena kvadratne jednačine nam zapravo omogućava da nađemo korene (rešenja) bilo koje kvadratne jednačine pa kažemo da je opšti metod primenljiv na celu klasu problema. Takođe je bitno i to što do rešenja dolazimo prateći niz pravila koja su opisana opštom metodom.
Definicije:
Algoritam je konačan uređen niz precizno formulisanih pravila kojima se rešava jedan ili čitava klasa problema.
Programski jezik je skup sredstava i pravila predstavljanja algoritma u obliku pogodnom za izvršavanje na računaru.
Program je zapis (realizacija) algoritma na jeziku programiranja.
Postupak pisanja programa se naziva programiranje.
Programski jezici
Računari su idealni za rešavanje matematičkih problema jer ih odlikuje velika brzina i velika pouzdanost prilikom računanja. Štaviše, računari su i nastali iz tog razloga. Ukoliko precizno formulišemo pravila za rešavanje nekog problema kažemo da smo napravili (ili razvili) algoritam. I ukoliko želimo rešiti problem pomoću računara moramo na osnovu tog algoritma napisati program u nekom programskom jeziku. Programskih jezika postoji mnogo, a mi ih obično klasifikujemo u :
- niže i
- više programske jezike.
Glavne odlike nižih programskih jezika
Za svaku vrstu procesora postoji po jedan niži programski jezik. Svi ti jezici nazivaju se mašinskim jezicima, ali obratimo pažnju da su među sobom dosta različiti. Na primer mašinski jezici za procesore "Pentium IV" i "Z80" se mnogo razlikuju (kao Nemački i Francuski), dok su mašinski jezici za "80486" i "Pentium I" veoma slični (kao Engleski i Američki Engleski). Dakle, ukoliko imamo napisan program u mašinskom jeziku, na osnovu jednog algoritma, za jedan procesor, nije sigurno da će taj program raditi na nekom drugom procesoru. Pa kažemo da programe pisane u mašinskom jeziku odlikuje neprenosivost (sa jednog računara na drugi). Mašinski jezici su prvi jezici koji su nastali i dobili su ime po tome što su to jezici koje računar (mašina) može da izvrši (slobodnije rečeno: veoma lako razume). Sa druge strane programi koji su napisani u mašinskom jeziku su ljudima veoma teški za razumevanje. Veoma sličan mašinskom jeziku je tzv. asembler koji samo malo podseća na prirodan jezik (engleski) pa je on lakši za razumevanje od mašinskog jezika, a sa druge strane proces prevođenja programa u asembleru na mašinski jezik je veoma lak (prevođenje programa vrši sam računar pokretanjem jednog jednostavnog programa).
Glavne odlike viših programskih jezika
Pisanje programa u nižim programskim jezicima predstavljalo je veliki problem, kako smo videli, zbog neprenosivosti i zbog, ljudima, velike nerazumljivosti tih programa. Rešenje tog problema je nađeno u višim programskim jezicima koje su ljudi vremenom počeli da smišljaju i razvijaju. Njihove glavne odlike su: razumljivost (prilikom pisanja programa ili čitanja tj. analize već napisanih programa) jer dosta podsećaju na prirodni jezik (engleski) i laka prenosivost sa jednog računara na drugi (ne u smislu lakog kopiranja, već u smislu mogućnosti izvršavanja programa).
Danas postoji veoma mnogo viših programskih jezika a neki od njih su: BASIC, Pascal, C, C++, C#, Java, Prolog, SmallTalk, Modula 2, FORTRAN, LISP, ADA. Ali postoji i po mnogo podvrsta (verzija) programskih jezika na primer: ANSI Pascal, Turbo Pascal, FreePascal. U poslednjih desetak godina smatra se da je programski jezik (ANSI) Pascal jedan od najlakših programskih jezika za učenje. Spomenimo i to da se pre desetak godina smatralo da je BASIC najlakši za učenje i da će u narednim godinama programski jezik C verovatno postati "prvi" jezik za početnike.
Zaključimo na kraju da algoritami ne zavise od programskih jezika i računara koji se neprestano razvijaju, i zbog toga pisanje algoritama predstavlja fundament (temelj) informatike, za razliku od programskih jezika koji su sa druge strane bitni zbog toga što na omogućuju da u praksi (na računaru) realizujemo algoritme.