Istorijski razvoj programskih jezika

Najstariji računarski sistemi razvijani su u prvoj polovini dvadesetog veka. Oni su bili mehaničkog ili elektromehaničkog tipa. Programiranje istih je, ukoliko su uopšte bili programabilni, bila funkcija mehaničkog prepodešavanja njihovog hardvera. Unos novog ili promena tekućeg programa izvršavana je tako što su zubčanici ili električni releji prepovezivani na konfiguraciju koja bi odgovarala željenom poslu. Ova praksa se uz manje izmene nastavila i kroz prve čisto električne računare. Prvi svetski priznati čisto električni univerzalni računar ENIAC koristio je ovu formu programiranja u procesu koji je mogao trajati i do nekoliko nedelja.

Kompleksnost i teškoća ovakvog pristupa međutim činila ga je nepraktičnim za širu upotrebu. Stoga već kasnih 1940-ih godina se javljaju inicijative za pronalaženje novih pristupa. John Von Neumann 1945. predlaže ideju „deljenog rašunarskog hardvera“. Po ovom pristupu računarski hardver bi trebalo da bude jednostavan i nespecijalizovan a programiranje bi trebalo da se izvršava putem kompleksnih instrukcija. U tom periodu se takođe javlja koncept podprograma, to jeste nezavisnih funkcija koje se mogu povezivati u rad po želji.

Mašinski jezici

Početci programiranja kakvo mi poznajemo počinje kasnih 40-ih i ranih 50-ih godina prošlog veka. U ovom periodu pojavljuju se prvi računari koji mogu da sa ulaznih uređaja primaju ne samo podatke za obradu već i programski kod. U početku programiranje se radilo direktnim unosom mašinskog jezika.

Mašinski jezik je set instrukcija koje odgovaraju operacijama koje izvršava centralni procesor računara. Instrukcije su brojne, obično binarne i svaka instrukcija je ekvivalentna jednoj procesorskoj operaciji i predstavlja jedan specifičan zadatak. Ovakav sistem ima svoje prednosti. Najlakši za implementaciju od strane proizvođača a programi pisani u mašinskom jeziku su po svojoj prirodi pod potpunom kontrolom programera pa se izvršavanje istih može izuzetno optimizovati. Međutim programiranje i nalaženje grešaka u mašinskom kodu je naporno i komplikovano. Zbog ovih problema pojavjuje se sledeća generacija programskih jezika.

Assembler

Asemblerski jezici, takođe poznati kao programski jezici druge generacuje su jezici bazirani na mašinskom kodu ali prilagođeni čoveku. Asemblerske komande imaju korespodenciju jedan prema jedan sa komandama mašinskog jezika. Ali umesto numeričkih, odnosno binarnih reprezentacija za svaku komandu asemblerski jezici koriste slovna imena koja se lakše pamte i tumače. Ovo čini programiranje i traženje grešaka u njima znatno lakše.

Asemblerski jezici su uspešno korišćeni godinama. Međutim oni zadržavaju glavni nedostatak njihovih prethodnika. Naime kao i mašinski kod kome odgovaraju oni su striktno vezani za arhitekturu mašine za koju su dizajnirani. Asemblerski ili mašinski kod pisan za jednu arhitekturu ne može se izvršavati na drugačijoj mašini.

Programski jezici visokog nivoa

Programski jezici visokog nivoa, takođe poznati kao jezici treće generacije počinju da se pojavljuju kasnih pedesetih. Osnovna odlika viših programskih jezika je njihova nezavisnost u odnosu na hardver. Ovi jezici nisu vezani ni za jednu arhitekturu procesora i sistema. Njihova sintaksa je bazirana na engleskom jeziku i ne postoji prava korespodencija sa mašinskim kodom. Umesto toga oni zavise od pomoćnih alata, kompajlera ili interpretera kojim se prevode u mašinski kod. Ovaj pristup omogućava da program pisan u njima bude preveden i radi na bilo kojoj arhitekturi za koju postoji prevodilac.

Prvi jezik više generacije je FORTRAN koji se pojavio 1957. Fortran je kompajlerski jezik čija sintaksa je bazirana na engleskom jeziku i u početku je bio namenjen za numeričko rešavanje matematičkih problema. U početku FORTRAN je imao samo 32 komande ali se tokom vremena razvijao. Kao jezik FORTRAN je i danas u upotrebi. Njegova najnovija verzija izašla je u Septembru 2010 a sledeća je planirana za kraj 2016.

U narednim godinama pojavio se veliki broj novih programskih jezika, Listp, prvi interpreterski jezik koji je takođe i dalje u upotrebi, COBOL (Common Business-Oriented Language) namenjen poslovnim aplikacijama, ALGOL (ALGOrithmic Language) i drugi.

Programski jezik BASIC (Beginner’s All-purpose Symbolic Instruction Code) nastao je 1964. godine na Dartmouth Colledge u Nju Hampshiru. Dizajniran da bude jednostavan za početnike on je postao izuzetno popularan na personalnim računarima u 70-im im 80-im godinama dvadesetog veka. Mašine u ovom periodu su veoma često dolazile sa alatom za rad u BASIC-u, već instaliranim, što je doprinelo njegovoj popularnosti. Moderne evolucije jezika BASIC kao što su Microsoft Visual Basic koji je dizajniran 1991. godine za NET platformu su izuzetno popularni do današnjeg dana.

Programski jezik C su dizajnirali arhitekte operativnog sistema Unix. Inicijalno ovaj operativni sistem je napisan u asemblerskom jeziku međutim 1972. godine ceo je reimplementiran upotrebom jezika C. Jezik C je proceduralan struktuirani programski jezik kompajlerskog tipa koji kombinuje efikasnost sličnu asembleru sa lakoćom rada svojstvenom jezicima visokog nivoa. Programski jezik C i jezici izvedeni od njega se koriste na velikom broju platformi počev od mikro kontrolera i personalnih računara pa sve do superkompjutera.

Objektno orientisani jezici

Objektno orijentisano programiranje je paradigma programiranja koja nastaje kasnih 70-ih godina dvadesetog veka. Objekti su strukture podataka koji mogu da sadrže vrednosti u formi atributa i kod u formi metoda i procedura. Glavna odlika objekata je da svaki od njih ima svoje stanje nezavisno od stanja drugih objekata istog tipa, a programi se pišu uz pomoć objekata koji interaguju jedan sa drugim.

Formalni koncept objekata je prvi put predstavljen 1960. godine u reviziji programskog jezika Simula. U isto vreme u programskom jeziku LISP pojavjuju se strukture slične objektima nazvani atomi. U narednim godinama pojavio se veliki broj objektno orijentisanih jezika. Najbitniji od njih, C++, Java, Python, C# i drugi su među najkorišćenijim jezicima današnjice.

Programski jezik C++ nastaje 1983. godine kao proširenje programskog jezika C. C++ je univerzalni imperativni programski jezik kompajlerskog tipa koji kombinuje jezik C sa objektno orijentisanom paradigmom. Inicijalno dizajniran sa naglaskom na sistemskom programiranju on zadržava osobine jezika C kao što su direktno adresiranje memorije što ga čini pogodnim za programe u kojima su performanse izvršavanja kritično bitne kao što su embeded sistemi i multimedijalne aplikacije.

Programski jezik Python je provobitno osmišljen 1989. godine kao naslednik programskog jezika ABC za distribuirani operativni sistem Amoeba. Međutim do njegovog izlazka na tržište 1991. godine on je postao moćan univerzalan jezik. Naziv ovog jezika potiče od komedijske grupe Моnti Pајtоn čiji je kreator ovog jezika obožavalac i taj trend se proteže kroz mnoge njegove aspekte. Na primer tradicija pisanja primera za ovaj jezik nalaže da se generičke promenjive u primerima nazivaju Spam i Eggs što je referenca na jedan poznati skeč.

Python je programski jezik interpreterskog tipa dizajniran da podržava više različitih programerskih paradigmi uključujući funkciono, proceduralno, imperativno i objektno orjentisano programiranje. Jedna od njegovih najpoznatijih odlika je to što se njegova sintaksa oslanja na uvlačenje i nove redove za održavanje strukture čime on prisiljava programera da piše „čitko“. Zbog njegove fleksibilnosti on je izuzetno popularan za mnoge upotrebe i danas je jedan od osam najkorišćenijih jezika na svetu.

Programski jezik Java nastao je 1991. godine kao projekat firme Sun Microsystems za potrebe interaktivne televizije. Međutim infrastruktura digitalne televizije u tom periodu još nije bila dovoljno uznapredovala da bi se to ostvarilo. Umesto toga, jezik je 1995. godine pušten na tržište kao univerzalni programski jezik. Java je konkurentni objektno orientisani jezik čija bitna odlika je da se kod izvršava na specijalnoj virtuelnoj mašini. To omogućava da se izvršni kod ne mora kompajlirati zasebno za pojedinačne arhitekture već se isti izvršni fajl može koristiti na bilo kom računaru koji ima podršku za Javu. Programski jezik java je veoma popularan i imao je veliki uticaj na kasnije jezike uključujući i Majrksoftov C#.

Jezici četvrte generacije

Programski jezici četvrte generacije su jezici dizajnirani kao unapređenje i specijalizacija koncepta viših programskih jezika. Razvoj jezika četvrte generacije počeo je 70-ih godina dvadesetog veka paralelno sa jezicima treće generacije. Sam termin „četvrta generacija“ prvi put je formalno iskorišćen 1982. godine u knjizi Applications Development Without Programmers.

Tačna definicija ove kategorije jezika nije precizno fiksirana i tokom vremena se menjala ali svi dele neke osnovne zajedničke osobine. Između ostalog, jezici četvrte generacije su generano neproceduralni, dizajnirani su za obradu velike količine podataka bez fokusiranja na individualne bajtove i generalno su specijalizovani za određenu namenu. Zbog ovog poslednjeg neki izvori ih smatraju podgrupom takozvanih domenski specifičnih jezika.

Programski jezici četvrte generacije su generalno vezani za rad sa bazama podataka i koriste grafički korisnički interfejs da olakšaju rad korisniku. Osnovni tipovi jezika četvrte generacije su između ostalog jezici za obradu podataka kao SAS, SPSS i Strata, takozvani jezici bez koda u kojima programer koristi predefinisane tabele mogućih operacija i grafički korisnički interfejs i jezici za generisanje izveštaja i rad sa bazama podataka.

Jezici pete generacije

Peta generacija programskih jezika je grupa jezika koji su bili u razvoju 80-ih godina dvadesetog veka i čija je budućnost neizvesna. Osnovna paradigma ovih jezika je da umesto da sam rešava problem programer postavlja parametre za program koji onda na osnovi njih traži rešenje. Ideja iza ovoga je da se programer oslobodi razmišljanja o detaljima implementacije, pogotovu implementacije rutinskih algoritama da bi se mogao u potpunosti posvetiti definisanju problema koji treba rešiti.

U periodu kada su nastajali mnogi su ih smatrali budućnošću programiranja. Međutim ubrzo se pokazalo da je definisanje efikasnog algoritma za rešenje problema na bazi njegove definicije samo po sebi izuzetno komplikovan zadatak koji se ne može lako automatizovati. Zbog ovog problema većina projekata je napuštena u toku ranih devedesetih.

Autor: Pavlović Časlav

3673-istorijski-razvoj-programskih-jezika