Naprej Nazaj Kazalo

12. Kako delujejo programski jeziki?

Ogledali smo si že, kaj se zgodi, ko poženemo program?. Vsak program se na koncu izvede kot zaporedje bajtov, ki so ukazi v strojnem jeziku procesorja. Vendar pa se ljudje ne znajdemo najbolje v strojnem jeziku - zadnje čase je to postalo redko celo med hekerji.

Skoraj vsi programi, pisani za Unix, so dandanes napisani v enem od višjih programskih jezikov. Izjema je le nekaj malega programov v jedru, napisanih za podporo strojni opremi. (Izraz višji programski jezik je bolj ali manj zgodovinska ostalina - poudaril naj bi razliko od nižjih programskih jezikov. Slednjo skupino sestavljajo izključno zbirni jeziki za različne procesorje. Zbirni jezik predstavlja zgolj človeku razumljiv zapis strojnega jezika.)

Višjih programskih jezikov je več vrst. Da bi razumeli razlike med njimi, se moramo najprej zavedati, da mora biti izvorna koda programa, torej tisto, kar programer napiše in je mogoče popravljati, na tak ali drugačen način prevedena v strojni jezik, ki ga lahko računalnik edinega izvaja.

12.1 Prevajani programski jeziki

Najpogostejši so prevajani programski jeziki. Izvorno kodo prevede v strojni jezik poseben program, ki mu pravimo - logično - prevajalnik. Ko ta enkrat ustvari ustrezno strojno kodo, ne prevajalnika, niti izvorne kode ne potrebujemo več. Program lahko poganjamo na drugem računalniku, kjer ne eden ne drugi nista na voljo. Večina programja se razpečuje kot prevedeni programi, in izvorne kode zanje nikoli ne vidite.

Prevedeni programi tečejo zelo hitro in navadno ponujajo najpopolnejši dostop do operacijskega sistema, je pa relativno težko programirati v njih.

Programski jezik C, v katerem je napisan tudi Unix sam, je skupaj s svojo izpeljanko C++ brez dvoma najpomembnejši med prevajanimi programskimi jeziki. Fortran, programski jezik, ki se uporablja predvsem v znanosti in tehniki, spada tudi med prevajane jezike, vendar pa je dosti starejši in manj popoln od C. Drugih prevajanih jezikov v Unixu takorekoč ne srečamo, drugod pa je ponekod za finančne in bančne programe zelo priljubljen cobol.

Svojčas so bili prevajani jeziki pogostejši, vendar pa jih je večina zamrla, ali pa so ostali omejeni na raziskovalna okolja. Če ste novopečeni programer v Unixu in uporabljate prevajan programski jezik, je dandanes to zelo verjetno C ali C++.

12.2 Tolmačeni programski jeziki

Tolmačeni programski jeziki med svojim tekom potrebujejo poseben program, tolmač, ki izvorno kodo programa sproti prevaja v izračune in sistemske klice. Koda je tako raztolmačena vsakič znova, ko program poženemo, za delovanje programa pa potrebujemo tudi tolmača.

Tolmačeni jeziki tečejo počasneje kot prevedeni, in so pri dostopu do funkcij operacijskega sistema in strojne opreme pogosto omejeni. Po drugi strani pa je v njih lažje programirati, in so do napak v programu navadno bolj prizanesljivi od prevajanih jezikov.

Veliko pripomočkov v Unixu, vključno z ukazno lupino, bc(1), sed(1) in awk(1) so manjši tolmačeni jeziki. Tudi basic je navadno tolmačen, in TCL tudi. Zgodovinsko gledano je bil najpomembnejši tolmačeni jezik lisp, ki je uvedel mnoge nove zamisli in izboljšave. Dandanes sta verjetno najpomembnejša čista tolmačena jezika v Unixu ukazna lupina in v urejevalnik Emacs vgrajeni lisp.

12.3 Jeziki, prevajani v psevdokodo

Po letu 1990 se čedalje bolj uveljavlja hibridna oblika jezikov, ki so tako prevajani kot tolmačeni. Izvorna koda programov, napisanih v enem od teh jezikov, je prevedena, vendar ne v strojni jezik, temveč v kompakten strojno berljiv zapis, imenovan psevdokoda ali p-koda. Ko program poženemo, poženemo tolmač za psevdokodo, ki tolmači program.

Psevdokoda je tolmačena skoraj tako hitro kot program, preveden v strojni jezik, obenem pa ti jeziki ohranjajo prožnost in moč, ki jo dajejo tolmačeni jeziki.

Med jezike, prevajane v psevdokodo, spadajo python, perl in java.


Naprej Nazaj Kazalo