- Da se podsetimo:

Kako bismo mogli da definišemo jezik - ali ne samo C jezik, već i jezik koji se koristi u svakodnevnoj ljudskoj komunikaciji ?

Jedna od definicija: Jezik predstavlja skup znakova, dogovora i pravila koji se koriste za predavanje (saopštavanje) informacija.

Mogli bismo da kažemo da je jezik alatka pomoću koje se ljudi izražavaju, zapisuju svoje ideje i međusobno komuniciraju. Jezik kojim govorimo smo naučili od malena, ili naknadno (Srpski, Engleski, Nemački, ...). To su sve prirodni jezici - služe za našu komunikaciju sa drugim ljudima.

Sa druge strane, postoje i jezici koji su razvijani za određenu namenu.

Programski jezici:

U cilju omogućavanja komuniciranja LJUDI SA RAČUNARIMA, za opis algoritma na način „RAZUMLJIV“ računaru, razvijeni su posebni veštački jezici koji se nazivaju PROGRAMSKI JEZICI.

Znači, programski jezik je jezik koji koristimo da bismo kreirali programe na računarima. Postoje striktna pravila koja definišu neki programski jezik. Na primer, LEKSIKA definiše koji se sve simboli mogu koristiti u nekom programskom jeziku. SINTAKSA određuje skup pravila na koje se ti simboli mogu kombinovati, a SEMANTIKA označava značenje onoga što je napisano.

Bilo koji program mora da bude ispravan sa ta tri gledišta: leksički, sintaksno i semantički. U suprotnom ne bismo pokrenuli program niti dobili željene rezultate. Možete biti sigurni da će se u toku rada i programiranja javljati greške: Grešiti je ljudski, a ljudi pišu kompjuterske programe.


- Da se podsetimo:

Sintaksa jezika predstavlja skup pravila na osnovu kojih se pišu konstrukcije jezika. Primenom sintaksnih pravila moguće je utvrditi da li je određena konstrukcija pravilna ili ne. Sa druge strane, semantika određuje značenje pojedinih konstrukcija, odnosno celog programa. Sintaksne greške su formalne (pogrešno otkucana reč, spojene reči i sl), tako da ih prevodilac lako otkriva. Međutim, semantičke greške su povezane sa logikom programa i najčešće ih otkriva sam programer.

(lekcija iz prvog polugodišta: Programski jezici - namena i definicija. Sintaksa i semantika Edit title )


... nastavak:

Za računar se ne može reći da ima inteligenciju. Neko bi mogao da kaže i da se ponaša kao dobro utrenirano kuče - računar reaguje samo na prethodno određeni skup jednostavnih naredbi, kao npr: "uzmi taj broj, dodaj ga drugom i sačuvaj rezultat".

Kompletan spisak naredbi koje može da uradi jedan računar nazivamo instruction list (IL) , i on se razlikuje kod različitih vrsta računara, i to je u stvari mašinski jezik.

Programiranje računara je u stvari postupak sastavljanja izabranih naredbi u ispravnom redosledu u cilju dobijanja željenog rezultata.

Moguće je programirati direktno u mašinskom jeziku, kao što se to radilo u doba razvoja prvih računara. Ovo baš i nije preporučivo jer je potrebno mnogo vremena, jako je lako pogrešiti, i za svaki tip računara treba učiti njegov skup instrukcija. S druge strane, jako je teško da čovek razume nešto što je napisano na mašinskom jeziku.

Viši programski jezici su tu da nam približe rad sa računarom - donekle su slični prirodnim jezicima jer koriste simbole, reči i izraze koji su nam razumljiviji i čitljiviji. U ovom slučaju mogu da se pišu i jako komplikovani izrazi za rad na računarima. A kako će računari da razumeju ono što je napisano na taj način? Tako što će da se izvrši prevođenje programa na mašinski jezik.

Sada programeri ne treba da uče različite mašinske jezike - dovoljno je naučiti jedan viši programski jezik. Ako postoji prevodilac za željeni računarski sistem, program bi trebalo da radi na njemu. Drugim rečima, programi koji su napisani na višem programskom jeziku mogu da se prevedu  na dosta različitih mašinskih jezika i samim time mogu da se izvršavaju na dosta različitih računara. Ova osobina viših programskih jezika naziva se portabilnost.

Prevođenje se vrši pomoću programa prevodioca. Do sada smo pominjali interpreter i kompajler.  Interpreter će da prevede liniju koda, da je izvrši, zatim sledeću i tako redom. Kompajler će da prevede ceo kod odjednom i zatim da ga izvrši. Za sad ćemo više pažnje posvetiti kompajlerima.

U slučaju kada se koristi kompajler, postupak prevođenja sa višeg programskog jezika na mašinski jezik nazivamo kompajliranje.

Već smo rekli da je glavni zadatak pisanje programa koji su u skladu sa pravilima programskog jezika. Kada napišemo program (što je u stvari samo tekst) nazivamo ga izvorni kod ili na engl. source code, ili skraćeno source. Fajl koji u sebi sadrži izvorni kod nazivamo najčešće originalnim engleskim izrazom: source file.

Za pisanje izvornog koda potreban je editor za pisanje teksta koji dozvoljava manipulaciju sa tekstom ali bez unošenja bilo kakvih informacija vezanih za formatiranja (iz tog razloga Microsoft Word nije dobar izbor, ali Notepad može da prođe). Ovaj kod se smešta u fajl koji treba nazvati tako da možemo iz imena da bar naslutimo o čemu se tu radi. Na primer, izvorni fajlovi koji su pisani u programskom jeziku "C" imaju na kraju tačku i iza nje slovo c. (ImeFajla.c)

Sledeće što je potrebno je da se programski kod iskompajlira (prevede na mašinski jezik). Kompajler će da pročita izvorni kod, uraditi neke analize i proveru da li ima grešaka u kodu. Ove analize su dosta složene, ali treba voditi računa da ih vrši mašina i da stoga može da se desi da se ne otkriju baš sve greške. Na primer, ako je greška da je umesto znaka "+" upotrebljen znak "#", kompajler će da prijavi grešku. Sa druge strane, Ako je umesto znaka "-" upotrebljen znak "+", kompajler neće prijaviti grešku, jer ne može znati koje su bile namere programera. Ne očekujte od kompajlera da misli za vas.

Ako kompajler ne otkrije greške u kodu, rezultat koji se dobije je fajl koji sadrži program koji je preveden na mašinski jezik - izvršni fajl (engl.executable file). Ime fajla koji se dobije zavisi od kompajlera i od operativnog sistema koji se koristi. Na primer, većina kompajlera na Unix ili Linix sistemu će da kreira izlazni fajl pod nazivom "a.out". Kompajleri koji se koriste na Microsoft Windows-u najčešće daju fajlu isto ime kao i izvorni fajl, samo mu sufiks promene sa ".c" na ".exe".

Ceo proces je u stvari dosta komplikovaniji. Izvorni kod može da bude dosta komplikovan i podeljen na više različitih izvornih fajlova. Može da se desi da program razvija više različitih programera, i svaki od njih da radi više različitih fajlova. U takvim slučajevima, kompajliranje se deli na dve faze - kompajliranje izvornog koda, u nameri da se prevede na mašinski jezik, a zatim povezivanja (lepljenje) izvršnih kodova od svih programera u cilju dobijanja krajnjeg proizvoda. Faza povezivanja različitih izvršnih kodova se obično naziva linkovanje, dok se program koji to radi naziva linker.

Last modified: Wednesday, 23 January 2019, 6:39 PM