Programski jezik

Iz Vikipedije, slobodne enciklopedije
Idi na: navigaciju, pretragu

Programski jezik je veštački jezik koji se može koristiti za kontrolu ponašanja mašine, naročito računara.[1]

Programski jezici su definisani preko sintaksnih i semantičkih pravila koja respektivno opisuju njihovu strukturu i značenje. Mnogi programski jezici imaju neku formu pisanih specifikacija njihove sintakse i semantike, a neki su definisani jedino preko zvanične implementacije.[1][2]

Programski jezici se koriste da olakšaju komunikaciju sa računarom prilikom organizovanja i manipulacije informacija, ali i da precizno izraze algoritme. Neki autori ograničavaju izraz „programski jezik“ samo na jezike kojima se mogu izraziti svi mogući algoritmi, a ponekad se koristi izraz „računarski jezik“, koji se odnosi na više ograničene veštačke jezike.

U međuvremenu je stvoreno više hiljada programskih jezika, i novi se stvaraju svake godine.

Definicije[uredi]

Programski jezik je bilo koji od vještačkih jezika kojim je moguće dati detaljne instrukcije računaru. Te instrukcije se mogu izvršavati direktno kada su ugrađene u računar u posebnom obliku koji je odredio proizvođač, tzv. mašinski jezik, poslije jednostavnog procesa zamjene izražene u odgovarajućem asemblerskom jeziku, ili poslije prevođenja iz nekog jezika višeg nivoa.

Mašinski i asemblerski jezici su jezici niskog nivoa, koji zahtijevaju od programera da se posveti upravljanju svim stvarima vezanim za čuvanje podataka i operacije nad njima. Na drugom kraju nalaze se jezici visokog nivoa, koji su bliži prirodnom jeziku i oslobađaju programera brige o tim stvarima, takođe čitljiviji i daleko lakši za pisanje programa.

Programski jezici se, prema načinu opisivanja rada programa, dijele na funkcijske (Lisp, Scheme), proceduralne (C, Paskal, Bejzik), sekvencijalne i objektno-orijentisane (Java, Ada), strukturalne (SQL) i mnoge druge. Programski jezici po ovoj podjeli mogu biti i mješoviti, tj. da dozvoljavaju različite paradigme u okviru istog programa, te npr. C++ dozvoljava i objektno-orijentisani i proceduralni pristup, štaviše proceduralni pristup je neophodan pri definiciji početne tačke programa u funkciji main.

Mašinski i asemblerski jezici[uredi]

Mašinski jezik se sastoji od numeričkog koda za operacije koji određeni računar može direktno izvršiti.[3] Taj kod je alfanumerička serija 0 i 1, ili binarni kod (bajt), koji se često pretvara u heksadecimalni kod (na bazi broja 16), radi lakše čitljivosti i modifikacije. Instrukcije mašinskih jezika obično koriste jedan broj bajtova za predstavljanje operacija, sabiranje na primjer, a drugi za predstavljanje operanda (brojeva sa kojima se vrši operacija) i/ili lokacije za slijedeću instrukciju. Mašinski jezik je težak za čitanje i pisanje, pošto ne liči na konvencionalno matematičko predstavljanje niti na prirodni jezik, a njegov kod varira od računara do računara.

Asemblerski jezik je jedan nivo iznad mašinskog jezika. Koristi kratki mnemonički kod za instrukcije i omogućava programeru da unosi imena za blokove memorije koja sadrži podatke. Dizajniran je da omogući lako prevođenje u mašinski jezik. Iako se blokovi podataka u asemblerskom jeziku pozivaju preko imena, a ne preko adrese u memoriji, ipak ne postoji mogućnost sofistikovanog organizovanja složenih informacija. Kao i mašinski jezik, asemblerski jezik zahtijeva od programera detaljno poznavanje računarske arhitekture. Koristan je kada su ti detalji važni, odnosno prilikom programiranja računara za interakciju sa ulaznim i izlaznim uređajima, kao što su štampači, skeneri, uređaji za čuvanje podataka i informacija (optički i čvrsti diskovi), itd.

Algoritamski jezici[uredi]

Algoritamski jezici su dizajnirani da izraze matematička i simbolička izračunavanja. Njima se mogu izraziti algebarske operacije na sličan način kao u matematici i omogućavaju korišćenje potprograma u kojima se pakuju najčešće korišćene operacije, koje je moguće ponovo iskoristiti.

Fortran[uredi]

Prvi važniji algoritamski jezik u istoriji programiranja je Fortran (skraćenica od engleskog „formula translation“). Dizajnirao ga je tim programera američke kompanije IBM, 1957. godine, na čijem je čelu bio Džon Bakus. Dizajniran je sa idejom da služi potrebama naučnika i naučnih izračunavanja sa realnim brojevima (brojevima sa pokretnim zarezom) kao i skupovima realnih brojeva organizovanih u jedan ili više nizova.

Algol[uredi]

Algol (skraćenica od engleskog izraza algorithmic language - „algoritamski jezik“) je dizajnirao komitet američkih i evropskih naučnika računarstva za svrhu objavljivanje algoritama, ali i za računarska izračunavanja, između 1958. i 1960. godine. Algol posjeduje rekurzivne potprograme, odnosno procedure koje mogu same sebe pozivati prilikom riješavanja zadatog problema, redukujući ga na manji problem bilo koje vrste. Novost u Algolu je blokovna struktura, gdje je program komponovan od blokova i može da sadrži i podatke i instrukcije koje imaju istu strukturu kao i sam program. Blokovna struktura je vrlo brzo postala standard za konstruisanje masivnih programa od malih komponenti.

Lisp[uredi]

Lisp (skraćenica od engleskog list processing) je razvio i implementirao Džon Makarti oko 1960. godine, bazirajući ga na matematičkoj teoriji rekurzivnih funkcija. Program razvijen u Lisp-u je funkcija primijenjena na podatke, a ne sekvenca proceduralnih koraka, kao što je slučaj u Fortranu i Algolu.

C[uredi]

Programski jezik C su razvili Denis Riči(Dennis M. Ritchie) i Brajan Kernigan(Brian W. Kernighan) 1972. godine, u AT&T korporaciji za programiranje operativnih sistema.

Razvoj programskih jezika

Vidi još[uredi]

Reference[uredi]

  1. 1,0 1,1 Aaby, Anthony (2004). Introduction to Programming Languages. 
  2. In mathematical terms, this means the programming language is Turing-complete MacLennan, Bruce J. (1987). Principles of Programming Languages. Oxford University Press. str. 1. ISBN 978-0-19-511306-8. 
  3. Koetsier, Teun (2001). On the prehistory of programmable machines; musical automata, looms, calculators. PERGAMON, Mechanisma and Machine Theory 36. str. 589—603. 

Literatura[uredi]

Spoljašnje veze[uredi]