Programski jezici

        Računari su napravljeni tako da koriste samo binarnu azbuku (0 i 1), a jezik koji se gradi nad ovom azbukom i na kojem računar izvršava naredbe naziva se mašinski jezik. Pošto mašinski jezik nije pogodan za čoveka konstruisani su veštački jezici koji se nazivaju programski jezici.

        Podela progamskih jezika:

        

        Mašinski jezik je interni jezik svakog računara. Programi napisani na mašinskom jeziku izvršavaju se brže od programa napisanog na nekom drugom programskom jeziku, što je njihova osnovana prednost. Naredba napisana u mašinskom jeziku može imati sledeći oblik:

            1110 0010 1110 0111

        Prvih osam bita (niži bajt) predstavlja adresu, a drgih osam bita (viši bajt) samu naredbu. Ovakvi programi su nerazumljivi i dugi, tako da je pisanje programa na mašinskom jeziku podložno greškama. Pored toga mašinski jezici različitih računara (tj. procesora) su različiti, što znači da se programi pisani za jedan procesor ne mogu izvršavati na drugom procesoru.

         Simbolički (asemblerski) jezici nastali su iz mašinskih jezika zamenom koda naredbe odgovarajućim simboličkim oznakama. Takođe su binarne adrese zamanjene simboličkim adresama. Tako npr. predhodna naredba mašinskog jezika u simboličkom jeziku ima sledeći oblik:

            add a

Program napisan na simboličkom jeziku ne može se direktno izvršavati, već je predhodno potrebno da se prevede na mašinski jezik. Program koji vrši prevođenje sa jednog na drugi jezik naziva se prevodilac. Prevodilac koji prevodi sa simboličkog na mašinski jezik naziva se asembler, pa se često i simbolički jezici nazivaju asemblerski jezici.

        Osnovne naredbe makro jezika su iste kao kod simboličkih jezika. Međutim, pored ovih naredbi ovi jezici poseduju makronaredbe pomoću kojih je moguće zameniti niz naredbi simboličkog jezika samo jednom naredbom. Prevodilac za makrojezik naziva se makroasembler.

        Ovi mašinski zavisni jezici oslanjaju se na hardver računara, tako da je za pisanje programa neophodno poznavanje računara za koji se piše program. Pored toga neprenosivost programa sa jednog računara na drugi predstavlja takođe problem.

        Zbog svega ovoga konstruisani su mašinski nezavisni jezici koji se odlikuju prenosivošću i ne zahtevaju poznavanje hardvera računara za pisanje programa. Prevodioci sa ovih jezika nazivaju se kompilatori i interpretatori. Kompilator prevodi ceo program na mašinski jezik pa se tek onda izvršava. Interpretatori prevode naredbu po naredbu programa i odmah je izvršavaju.

        Proceduralno orjentisani jezici opisuju proceduru ili algoritam za rešavanje nekog problema na način razumljiv računaru.

        Programi napisani na problemski orjentisanom jeziku opisuju problem koji treba rešiti i potrebne podatke za rešavanje problema. Procedura ili algoritam za rešavanje problema ugrađen je u prevodilac za ove jezike. Prevodilac se naziva generator, jer generiše odgovarajući program koji će rešiti problem.