M'MO: ZadnjiÄ smo govorili o sintaksi zbir- nega jezika, o pisanju pro- gramov v zbirnem jeziku in spoznali smo, kako zbirnik prevaja zbirni jezik v stroj- no kodo. Ogledali smo si primere programov in nji- hovih prevodov. Omenili smo razlike v strojni kodi, ki jo generirata zbirnik in prevajalnik visokega zbir- nega jezika. Zato danes po- vejmo kaj ĹĄe o viĹĄjih pro- gramskih jezikih in struktu- riranem programiranju. ViĹĄji programski jeziki Doslej smo se Ĺže lahko prepriÄali o tem, da en sam stavek zbirnega jezika kaj malo pove. Na primer Âťse- ĹĄtej dve ĹĄteviliÂŤ ali pa Âťsko- Äi na naslov ta-in-taÂŤ je do- kaj malo vsebine za veliko pisanja. Posebno se zaplete zadeva, Äe Ĺželimo obdelo- vati kompleksne podatkov- ne strukture. Ker so progra- merji pogosto rabili za opi- sovanje kompleksnih pro- OSNOVE ââ OO RAÄUNALNIĹ TVA Teleksov teÄaj za zaÄetnike â- gramov bolj izrazno orodje, obenem pa so Ĺželeli svoje programe hitreje: sestavlja- ti, so priĹĄli na dan viĹĄji pro- gramski jeziki. Za nekatere ste gotovo Ĺže sliĹĄali: BA- SIC, FORTRAN, COBOL, ALGOL, PASCAL, FORTH... Komplikatorji in interpretorji ViĹĄji programski jezik ima prevajalnik, ki prevede program, napisan v tem je- ziku, v strojno kodo. Name- sto prevajalnika ima lahko poseben program, ki stavke jezika ÂťinterpretiraÂŤ enega za drugim, sproti in oprav- lja Ĺželene funkcije. Vidimo torej, da obstajata dva naÄi- na priprave programov v viĹĄjih jezikih. Prevajanje in poznejĹĄe izvajanje ali pa sprotno prevajanje in sprot- no izvajanje. Prvemu naÄi- nu pravijo kompiliranje (prevajanje celotnega pro- grama v strojno kodo). Pro- gramu, ki izvede prevaja- Nova knjiga: ABC raÄunalniĹĄtva 1 Ljubiteljem mikroraÄunalniĹĄtva in hiĹĄnih raÄunalnikov se obeta nov vir informacij. Zveza organizacij za tehniÄno kulturo Slovenije je v sodelovanju z avtorjem Ivanom GerliÄem pripravila knjigo ABC raÄunalniĹĄtva. Trenutno teÄejo zadnje priprave pred izdajo in imeli smo priloĹžnost, da si ogledamo besedilo med vnaĹĄanjem v raÄunalnik. Knjiga pa ne bo samo pisala o raÄunalnikih, ampak jo bo raÄunalnik tudi oblikoval. Celotna oblika knjige z vsem vnaĹĄanjem besedila vred bo narejena v treh dneh. Ko berete te vrstice, je knjiga Ĺže v tisku. IzĹĄla bo 25. maja. In vsebina? Zelo zanimiva. Po uvodnih razmiĹĄljanjih nam avtor predstavi zgodovino raÄunalniĹĄtva od Pascalo- vega raÄunskega strojÄka do najnovejĹĄih mikro tehnologij in Josephsonovega spoja. Sledi poglavje o anatomiji raÄu- nalnika, kjer so predstavljeni glavni sklopi raÄunalnika, kot so pomnilnik, procesna enota, vhodno-izhodne enote itd. V poglavju o mikroprocesorjih in mikroraÄunalnikih so po- dani glavni gradniki mikrojev in nekaj dodatne periferne opreme. Opisani so tudi hiĹĄni raÄunalniki. Avtor nato omeni najvaĹžnejĹĄe programske jezike in opiĹĄe najbolj po- goste stavÄne konstrukte. V zadnjem, a obseĹžnem poglavju, je predstavljen jezik BASIC, ki je tako priljubljen med lastniki hiĹĄnih raÄunalnikov. Podanih je tudi precej prime- rov kratkih programov. Na koncu sta ĹĄe dva dodatka. V prvem je seznam raÄunalniĹĄkih ukazov (BASIC), v drugem pa ĹĄe izÄrpen slovarÄek raÄunalniĹĄkih pojmov. Knjiga naj bi v prodaji stala okrog 400 din, kar je gotovo izredno ugodna cena Ĺža bogato vsebino. 1. E. Teleksov teÄaj za zaÄe... nje, pravijo prevajalnik (kompilator), v angleĹĄÄini COMPILER. Strojna koda takega programa je pravza- prav precej podobna kodi, kakrĹĄno bi generiral zbirnik ob.. prevodu programa v zbirnem jeziku, ki bi oprav- ljal enako nalogo. Drugi naÄin je interpreti- ranje programa. Namesto da bi ga v viĹĄjem jeziku pre- vedli v strojno kodo, ga predamo kakemu drugemu progamu, ki bere njegove stavke ter jih izpolnjuje enega za drugim v skladu s pravili, zapisanimi za vsak moĹžen programski stavek posebej v obliki manjĹĄih podprogramov. Takemu programu, ki interpretira uporabnikov program v viĹĄ- jem jeziku, pravimo inter- pretor (angl. INTERPRE- TER). Vsakdo Ĺže pozna BASIC, ki ga uporabljajo popularni hiĹĄni raÄunalniki (npr. Sinclair). BASIC je najbolj razĹĄirjen interpre- tor. ZnaÄilno pa je ĹĄe, da ima skoraj vsak BASIC po- vsem svoj ÂťdialektÂŤ in da se Zanima me programski jezik PROLOG. Prijatelj trdi, da je prolog jezik naj- novejĹĄe generacije inteli- gentnih raÄunalnikov. B.ÄÄ. Ljubljana RaÄunalniĹĄka inteligenca je ĹĄe dokaj nejasna zadeva, ki ni povsem enoliÄno defi- nirana. Lahko reÄemo, da je to sposobnost raÄunalni- ka, da posnema logiÄno ra- zmiĹĄljanje in odloÄanje Älo- veka. To pomeni, da se mo- ra znajti v novih in nepre- dvidenih situacijah. Na osnovi podobnih situacij in znanih dejstev se mora nato odloÄiti za ustrezno ukrepa- nje. Prolog je programski jezik, ki temelji na matema- tiÄni logiki, in omogoÄa programiranje raÄunalnika za reĹĄevanje problemov, "amaanmem med seboj tako razlikujejo, da programov z enega raÄu- nalnika ni mogoÄe uporabiti na drugem. Glavni razliki med obe- ma naÄinoma sta hitrost in naÄin izvajanja. Izvajanje kompiliranih programov je neprimerno hitrejĹĄe kot in- terpretiranih. Stvar je pre- prosta. Prevajanje je dolgo- trajno (relativno). Npr. kompiliranje srednje dolge- ga programa (1000 stav- Kov) traja nekaj minut, zato pa program potem izredno hitro poteka, saj stroj Ĺže na- tanko ve, kaj mora delati, ko Äita strojno kodo. Pri interpretaciji progra- mov pa mora stroj najprej razvozlati, kaj mora v na- slednjem stavku narediti in nato ĹĄe izpeljati zahtevano. Zato traja izvajanje mnogo dalj Äasa. Prednost pa je v tem, da lahko program izmeniÄno popravljamo in nato takoj izvajamo, ali pa izvedemo samo en del, na- mesto da bi vsakiÄ za vsako malenkostno spremembo prevajali ves program, kot kot so pomoÄ zdravniku pri diagnostiki bolezni, analiza biokemiÄnih struktur, sim- boliÄno reĹĄevanje enaÄb in podobno. Prolog se Ĺže v zasnovi ra- zlikuje od jezikov kot so pascal, fortran ali basic, kjer programiramo na pod- lagi toÄno doloÄenega algo- ritma, ki bo iz vhodnih po- datkov izraÄunal rezultate. V prologu opisujemo dej- stva in relacijo med objekti, ki se pojavljajo v doloÄe- nem problemu. Ne opisuje- mo pa naÄina, kako bo ra- Äunalnik problem reĹĄil. Na- Äin reĹĄevanja je pogojen s semantiko (to je veda o po- menu besed) prologa, dalje s tem, kakĹĄna nova dejstva lahko prolog ÂťpotegneÂŤ iz Ĺže znanih in le deloma z zahtevami programerja. V prologu loÄimo tri PiĹĄe: Tom Erjavec 7 bi to morali storiti s kompi- latorjem. Z viĹĄjimi programskimi jeziki smo dobili stavÄne konstrukte, ki so omogoÄali priroÄne odloÄitve, ponav- ljanja pod doloÄenimi po- goji, izraÄunavanje mate- matiÄnih funkcij, definira- nje in obravnavanje kom- pleksnih podatkovnih struktur ipd. Uveljavilo se je tudi strukturirano pro- gramiranje, ki si je zastavilo za cilj, da bi bili programi grajeni iz manjĹĄih zaklju- Äenih enot, da bi bili logiÄni, razumljivi in da v njih ne bi bilo dolgih .preskokov na drige dele programa. Naj- hujĹĄi nasprotnik strukturi- ranega programiranja je stavek GOTO, ki se pojav- lja v mnogih jezikih, a ga moderni programerji skuĹĄa- jo izloÄiti, ker povzroÄa skakanje na poljubno me- sto v programu zaradi Äesar lahko nastane silna nepre- glednost. StarejĹĄi viĹĄji jeziki niso bili strukturirani, Äe- prav se je v njih vseeno dalo drĹžati pravil strukturirane- VaĹĄe vpraĹĄanje, strokovnjakov odgovor V naĹĄi rubriki bomo nekaj prostora namenili tudi vpraĹĄa- njem bralcev. PiĹĄite nam. na naslov UredniĹĄtvo Teleksa, Titova 35, 61000 Ljubljana (z oznako: Za osnove raÄunal- niĹĄtva), izbrali bomo najzanimivejĹĄa vpraĹĄanja, takĹĄna, ki bi utegnila zanimati zlasti najĹĄirĹĄi krog zaÄetnikov. VpraĹĄanja so lahko teoretiÄna, skuĹĄali pa bomo posredovati tudi druge informacije, npr. naslove klubov, specializiranih revij. osnovne stavke. To so: de- klaracija doloÄenih dejstev o objektih in njihovih med- sebojnih relacijah, definira- nje pravil in Vogel pe k vpraĹĄanj. Na primer: Äe bi hoteli v prologu povedati, da ima Jana knjigo, Janez pa denar, bi to zapisali ta- kole: ima (jana, knjiga). ima (janez, denar). Besedica ÂťimaÂŤ pomeni relacijo, ÂťjanaÂŤ, ÂťknjigaÂŤ, ÂťjanezÂŤ in ÂťdenarÂŤ pa so objekti, ki jih relacija opi- suje. S tema stavkoma smo opisali podatkovno bazo. Zdaj lahko postavimo vpra- ĹĄanja. Na primer: ?â ima (jana, knjiga). ?â ima (janez, knjiga). Prvo vpraĹĄanje pomeni Âťali ima jana knjigo?ÂŤ Pro- log pogleda v bazo podat- kov in odgovori ÂťyesÂŤ. Na drugo vpraĹĄanje Âťali ima ja- nez knjigo?ÂŤ, pa bi odgovo- rili z ÂťnoÂŤ. Zakaj pa to, saj nismo nikjer dejali, da Ja- nez nima knjige? Ugotovi- mo torej eno od pravil pro- loga: velja samo tisto, kar smo opisali v podatkovni