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 zapuščina -- poudaril naj bi razliko v primerjavi z nižjimi programskimi jeziki. Slednjo skupino sestavljajo samo zbirni jeziki za različne procesorje. Zbirni jezik je 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 izvirna koda programa, torej tisto, kar programer napiše in je mogoče popravljati, tako ali drugače prevedena v strojni jezik, ki ga lahko računalnik edinega izvaja.

12.1 Prevajani programski jeziki

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

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

Programski jezik C, v katerem je napisan tudi sam Unix, 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, sodi tudi med prevajane jezike, vendar je dosti starejši in manj popoln od C. Drugih prevajanih jezikov v Unixu tako rekoč ne najdemo, drugod pa je ponekod za finančne in bančne programe zelo priljubljen cobol.

Svojčas so bili prevajani jeziki pogostejši, vendar 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 izvirno 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 kakor prevedeni in so pri dostopu do funkcij operacijskega sistema in strojne opreme pogosto omejeni. Na drugi strani pa je v njih laže programirati in so do napak v programu navadno bolj prizanesljivi od prevajanih jezikov.

Veliko pripomočkov v Unixu, tudi ukazna lupina, 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 številne 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. Izvirna 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