Šta su programski jezici? Ljudi za međusobnu komunikaciju koriste jezik. Čovek mora na neki način da saopšti računaru niz instrukcija koje treba da budu izvršene. Već smo rekli da računar nije baš pametan i ne razume (za sada!) ako mu se čovek obrati na svom maternjem jeziku. Da bi se čovek i računar razumeli izmišljeni su programski jezici. Programski jezik služi da premosti jaz između računarskog hardvera koji operiše u terminima bita i registara i čoveka koji se izražava prirodnim jezikom. Računar može “razumeti” samo formalni zapis, pri čemu ne toleriše ni najmanje nepreciznosti. Pre nego što pređemo na podelu programskih jezika, bavićemo se kratko binarnim brojevima. Da li znate šta su binarni brojevi? Ako razumete sledeći vic na dobrom ste putu! “Postoji 10 vrsta ljudi na svetu: Oni koji znaju binarne brojeve i oni koji ih ne znaju…” U slučaju da niste razumeli vic, evo male pomoći: “10” predstavlja binarni zapis dekadnog broja “2″. Ljudi najčešće koriste dekadni brojni sistem, ali računar radi na binarnom. Svaki broj u dekadnom brojnom sistemu može da se predstavi u binarnom sistemu koristeći nule i jedinice. Ovde nećemo objašnjavati algoritam kako se broj iz dekadnog zapisa prebacuje u binarni (a ni obrnuto). Programske jezike možemo podeliti na razne načine, a jedna od podela je u zavisnosti od toga da li su zavisni od računara ili ne, pa ih delimo na:
Mašinski‑zavisni programski jezici zahtevaju od programera da poznaje konstrukcione karakteristike računara za koji piše program. Razlikujemo dva nivoa mašinski‑zavisnih jezika:
Mašinski‑nezavisni programski jezici omogućavaju programeru da zapisuje algoritme u notaciji koja je bliža govornom jeziku i da ne vodi računa o mnogim detaljima vezanim za konkretan računar. Značajno mesto u istoriji mašinski‑nezavisnih programskih jezika zauzima programski jezik FORTRAN koji je 1954. godine razvijen u američkoj kompaniji IBM i bio namenjen za rešavanje matematičkih problema. Mašinski-nezavisni programski jezici predstavljaju programske jezike višeg nivoa. Za razliku od simboličkih jezika gde jednoj naredbi simboličkog odgovara jedna naredba mašinskog jezika, u jezicima višeg nivoa jednoj naredbi jezika višeg nivoa odgovara više naredbi simboličkog jezika. To znači manje pisanja koda, zar ne? Svaki program napisan na jeziku višeg nivoa mora se prevesti na mašinski jezik, a u zavisnosti od načina prevođenja i izvršavanja, jezike višeg nivoa možemo da podelimo na kompajlerske i interpretatorske jezike. Prvi kompajlerski jezici koji su nastali su na primer Algol, Fortran, Cobol, itd. Ovi jezici zahtevaju programe za prevođenje – kompajlere kojim se CEO program napisan na višem programskom jeziku prevodi u njemu ekvivalentan, mašinski program koji se može izvršiti na računaru. Kod interpretatorskih jezika, program se prevodi i izvršava instrukcija po instrukcija. Primer interpretatorskog programkog jezika je Python.
U ovom kursu se nećemo detaljnije baviti podelama mašinski nezavisnih programih jezika, ali ćemo spomenuti objektno-orijentisane jezike. Objektno orijentisano programiranje se pojavilo osamdesetih godina kao nova metodologija izrade velikih programskih sistema. Usavršavanje računarskog hardvera, gde se sa svakom novom generacijom brzina procesora drastično povećava, diktira stalno usložnjavanje softverskih sistema. Dotadašnje tehnike programiranja nisu bile dovoljno moćne da obezbede projektovanje vrlo složenih softverskih sistema. Kao rezultat toga nastaje objektno orijentisano programiranje u čijem centru su objekti. Objekti su “inteligentni” podaci koji mogu da se nalaze u različitim stanjima. Ta stanja mogu da se promene primenom određenih metoda. Skup srodnih objekata čini jednu klasu.Tako nastaju objektno orijentisani jezici kao što je C#, Java,… U objektno-orijentisanom programiranju cilj programera je da sakupi podatke i akcije u neku vrstu “kutije sa alatom” koja će se koristiti za brzi razvoj aplikacija.