Džungla u računaru

Čak i najskuplji računar, sam po sebi, ne ume da radi ništa korisno. Da bi se upotrebio za rešavanje problema od značaja za njegovog vlasnika, računar mora da bud eopremljen odgovarajućim programima. Ako je vlasnik računara dobar programer, on će te programe moći da sastavi samostalno, čime će na najbolji mogućni način da zadovolji svoje potrebe. Dosta je, međutim, onih koji nemaju znanja ili vremena da pišu programe koji su im potrebni. Za njih rade grupe inženjera organizovanih u kompanije za proizvodnju programa (softvera). Ovakve kompanije procenjuju potrebe korisnika i sastavljaju programe koji mogu da ih zadovolje. Komercijalni programi se uvek odlikuju velikim mogućnostima i ogromnim brojem opcija koje treba da ih učine prilagodljivim potrebama najšireg kruga ljubitelja računara. Kupujući ovakav program, plaćamo i za ono što nam nije potrebno, ali i obezbeđujemo neke buduće potrebe koje još ne možemo da predvidimo.

Sistemski programi

Maternji i ostali kompjuterski jezici

Svaki računar je opremljen jednim ogromnim sistemskim programom na koji vlasnik obično ne obraća pažnju: bejzik interpretatorom. Ovaj program je smešten u ROM računara i omogućava njegovo normalno funkcionisanje. Kada, na primer, uključimo računar, on izvršava nekoliko desetina naredbi koje omogućavaju da se na ekranu pojavi dobro poznati kurzor. Bejzik interpretator se provlači kroz sve što radimo.

Računar, ipak, može da funkcioniše i bez bejzik interpretatora. On se "isključuje" unošenjem programa koji omogućava upotrebu nekog drugog programskog jezika, rad sa tekstom, mašinskim jezikom ili upotrebu računara u neke druge svrhe. Programi koji daju računaru neke potpuno nove mogućnosti spadaju u kategoriju sistemskog softvera.

Sistemski programi su u najvećem broju slučajeva izuzetno složeni. Pisani su na mašinskom jeziku i prostiru se na desetak kilobajta memorije. Kada govorimo o sistemskim programima u širem smislu, u njih ubrajamo i neke male programe koji dodaju računaru neku novu mogućnost ili naredbu, kao i programe koji kontrolišu periferijske uređaje. Ipak, prvi deo ovog poglavlja je posvećen novim programskim jezicima.

Bejzik je, u najvećem broju slučajeva, sasvim dovoljan za svakog korisnika. Njegove mogućnosti, pogotovo ako se radi o boljem bejziku, dovoljne su za sve ono što korisniku može da "padne na pamet". Ipak, bejzik je programski jezik koji se interpretira, što znači da se programi pisani na njemu izvršavaju srazmerno sporo. Neki ovakve probleme rešavaju pišući programe na mašinskom jeziku, ali je takvo rešenje previše komplikovano za neke neiskusne vlasnike. Za njih je izlaz nabavka sistemskog programa koji računaru omogućava rad sa nekim bržim programskim jezikom kao što su paskal ili fort.

Jezik za matematičare

Paskal je viši programski jezik namenjen uglavnom matematičarima. Nastao je kao sinteza nekih svojstava algola, fortrana i bejzika (prva dva programska jezika su daleko starija od bejzika i koriste se mahom na većim računarima). Svaki programer koji zna bejzik lako će da piše programe na paskalu: paskal poseduje praktično sve bejzik naredbe, iako su neke od njih preimenovane (CALL umesto GOSUB i slično). No, paskal ima i mnoštvo naredbi koje su bejziku nepoznate: deklarisanje promenljivih i nizova, pozivanje potprograma uz prenošenje argumenata, rekurzivno pozivanje potprograma i slično. Za neiskusnog vlasnika poslednja rečenica nije previše jasna. Za njega je jedino bitno da je paskal programski jezik koji se prevodi. To znači da korisnik najpre kuca čitav program, ispravlja greške pri kucanju i smešta program napisan na paskalu na kasetu. Zatim koristi posebnu naredbu koja naređuje računaru da ovaj program prevede na mašinski jezik. Posle nekoliko trenutaka od korisnika se zahteva da uključi kasetofon na koji se snima mašinski program. Taj program može kasnije da se koristi kao svaki drugi mašinski program, što znači da se izvršava 10-100 puta brže od odgovaorajućeg bejzik programa. Paskal, dakle, predstavlja izvanrednu alternativu bejziku za one koji žele da sastavljaju programe koji će se brzo izvršavati. Iako je namenjen matematičarima, ovaj jezik pruža velike mogućnosti za sastavljanje igara. Ipak, ukoliko se odlužite na nabavku paskal kompajlera, treba da pripazite na nekoliko sitnica.

Paskal kompajler je veliki program koji zauzima dobar deo memorije računara. Ukoliko vaš računar ima memoriju od 16 kilobajta, vrlo je verovatno da čitav program ne može da stane u nju. Zato su se autori programa pobrinuli da ga podele u nekoliko delova. Da biste uneli program, na primer, morate da učitate takozvani "editor". Po unošenju programa treba učitati "kompajler" kako bi program bio preveden na mašinski jezik. Sledi testiranje programa i, naravno, pronalaženje grešaka. Kada pronađete grešku, ponovo učitavate editor da biste je ispravili i kompajler da prevedete ispravljenu verziju. Ukoliko je program složen, neprekidno unošenje različitih programa odnosi toliko vremena da se rad sa paskal kompajlerom ne isplati. Pre nego što, dakle, kupite ovakav program, raspitajte se da li je memorija računara dovoljna da ga primi.

Osim toga, neki programi ne prevode paskal na mašinski jezik, nego na takozvani "p kod". Program preveden na "p kod" se izvršava gotovo jednako brzo kao i mašinski, ali je pre njegovog startovanja sa kasete neophodno uneti poseban program koji kontroliše njegov rad. To praktično znači da se napisani program nikada ne može izvršavati samostalno, što ga često čini neprimenljivim.

"Pascal kompajler" za ZX Spectrum je isplativa investicija. Programi prevedeni pomoću njega izvršavaju se, zavisno od operacija koje se koriste, četrdesetak puta brže od odgovarajućih bejzik programa. Primera radi, program koji generiše hiljadu slučajnih brojeva, a zatim ih ređa u rastući niz koristeći Šelovu sortirku, na bejziku radi dvadeset, a u paskalu jedva pola minuta. Cena ovog programa u originalnoj verziji je čitavih 25 funti, dok se od domaćin preprodavaca može nabaviti za 800 dinara.

Fort, fortran i kobol

Fort je relativno novi programski jezik. Znatno je nižeg nivoa od bejzika (što je jezik "primitivniji", razumljiviji je kompjuteru i manje pristupačan korisniku) i po mnogo čemu je sličan RPN notaciji koju koriste Hewlett-Packardovi džepni računari. Ovaj jezik je znatno brži od bejzika i poseduje neke nove mogućnosti, kao što je samostalno definisanje naredbi (korisnik može da oformi specijalne naredbe koje rešavaju neke njegove probleme). Ovaj jezik je namenjen mahom računarima manjih mogućnosti kao što je ZX81. I pored činjenice da se fort daleko lakše prevodi od paskala, u 16 kilobajta memorije ZX81 ne može da stane čitav program za korišćenje ovog jezika. Zato se u toku rada neprekidno unosi editor, kompajler i drugi uslužni programi što, kada se uzme u obzir mala brzina kojom ZX81 učitava programe sa kasete, čini čitav jezik teško upotrebljivim. I pored toga, fort interpretator se prodaje za čitave 32 funte, verovatno zato što je uz njega priključena i knjiga uputstava od sedamdesetak strana. Kod domaćih preprodavaca fort može da se nabavi za 300 dinara - dovoljno malo da se odlučite na kupovinu.

Za računare veće memorije i boljih karakteristika teško možemo da preporučimo fort: njegovo razumevanje zahteva dosta napora, a primena teško pruža nešto više od paskala. Fort je, ipak, preporučljiv za one koji još nemaju smelosti da se upuste u programiranje na mašinskom jeziku, ali bi želeli da upoznaju jezike nižeg nivoa, kao i za one koji su nekada posedovali Hewlett-Packardove džepne računare i žele da se podsete "starih vremena".

Za računare opremljene jakom periferijskom opremom (najvažnije su disk-jedinice) pišu se fortran i kobol kompajleri. Fortran je programski jezik velikih kompjuterskih sistema. Kao što mu ime govori (FORmula Translation ili prevođenje formula), namenjen je matematičarima i poseduje moćne naredbe za rad sa kompleksnim brojevima, povećanu tačnost, obilje matematičkih funkcija i druge pogodnosti. Za igre je sasvim nepogodan jer ne omogućava praktično nikakvu kontrolu ekrana. Dobri fortran kompajleri koštaju više stotina funti i, za sada, nisu prilagođeni Spectrumu.

Kobol je programski jezik namenjen poslovnoj obradi podataka. Programi pisani na njemu su vrlo slični eseju pisanom na engleskom - umesto standardnih znakova matematičkih operacija koriste se reči i slično. Ovaj jezik je izuzetno dobro opremljen naredbama za rad sa periferijskim uređajima i formiranje datoteka. Nema svrhe nabavljati kobol kompajler ako vaš računar nema bar stotinak kilobajta memorije i nije opremljen dobrim štampačem i disk-jedinicama. Cena kobol kompajlera prevazilazi sve pomenute i može da dostigne 1000 funti. Ovakav program nije napisan za Spectruma, a vrlo je verovatno da nikada neće ni biti!

Šta radi asembler...

Sa posebnih programskih jezika preći ćemo na korišćenje onoga što je skriveno u samom računaru - mašinski jezik. Unošenje mašinskih programa na način koji je pomenut u delu posvećenom iskusnim programerima je teško prihvatljivo za ozbiljan rad. Pri pisanju programa i ispravljanju neizbežnih grešaka mnogo je lakše operisati sa mnemoničkim skraćenicama nego sa heksadekadnim (ili, još gore, binarnim) brojevima. Probleme ovog tipa rešavaju takozvani asembler programi.

Dobar asembler omogućava korisniku da, najpre, unese mašinski program pomoću mnemoničkih skraćenica i snimi ga u izvornom obliku na kasetu. Zatim korisnik kuca specijalnu naredbu kojom otpočinje prevođenje programa na mašinski jezik i unošenje prevoda u memoriju računara počevši od proizvoljno odabrane lokacije. Ukoliko u toku prevođenja računar naiđe na neku skraćenicu koja ne postoji ili čiji je adresni deo pogrešan, korisnik može jednostavno da je ispravi. Kada je čitav program preveden na mašinski jezik, primenom nove naredbe prevod se smešta i na kasetu za docniju upotrebu. Mašinske programe je teško pisati i greške su česte. Dobar asembler program treba da omogući korisniku da sa trake ponovo učita izvorni program, unese ispravke i ponovo ga prevede na mašinski jezik. Asembler program se, dakle, nalazi u memoriji računara dok mašinski program ne bude potpuno testiran i ispravljen, posle čega se rezultat snima na traku, a asembler-program briše.

Neki asembler-programi pružaju i dodatnu mogućnost: izvršavanje mašinskog programa nredbu po naredbu. Na ovaj način korisnik je u mogućnosti da locira i ispravi greške u mašinskom programu na razmerno bezbolan način: izvršavanjem programa naredbu po naredbu pronalazi se mesto na kom registri procesora imaju neočekivani sadržaj, proučava se taj sadržaj, pogađa njegov izvor i - greška je nađena.

... a šta disasembler

Disasembler je program koji obavlja inverznu funkciju. Često, naime, kupujete neke druge komercijalne programe pisane na mašinskom jeziku. Ako želite da ih analizirate i prilagodite nekim svojim posebnim potrebama, neophodno je da program koji se nalazi u memoriji prevedete na jezik mnemoničkih skraćenica i nađete mesta u programu gde dolazi do grananja kako biste uveli nove opcije. Ovakve probleme rešavaju disasembleri. Najpre se u memoriju unese disasembler, a zatim mu se naloži da sa kasete prihvati mašinski program koji treba analizirati. Računar najpre utvrđuje na koje se memorijske adrese unosi ovaj program, unese ga i počinje njegovu analizu. Na ekranu (i štampaču, ako je potrebno) pojavljuje se program prikazan preko mnemoničkih skraćenica, a zatim i tabele sa naredbama uslovnog i bezuslovnog grananja. Disasembler obično prevodi program na takav način da se prevod može snimiti na kasetu i kasnije prepravljati pomoću asembler programa. Zato je važno kupiti asembler i disasembler od iste firme - na taj način se ostvaruje kompatibilnost.

Zašto je DEVPAK najbolji?

Kod ZX81 i ZX Spectruma asembleri i disasembleri se unekoliko razlikuju od uobičajenih. ZX 81 ne raspolaže mogućnošću smeštanja mašinskih programa na kasetu, pa je neophodno da se mašinski program "maskira" u bejzik. To se najčešće postiže pomoću REM naredbi koje su za druge vlasnike računara sasvim nepotrebne - u okviru njih se, normalno, smeštaju komentari kao što je naziv programa, ime njegovog autora i slično. Uz malo veštine, međutim, u okviru REM naredbi može se smestiti čitav mašinski program, koji bejzik kasnije jednostavno poziva. Ovo smeštanje na sebe preuzima asembler, dok disasembler obavlja inverznu funkciju - "čita" REM naredbe i prevodi ih u oblik prihvatljiv za korisnika. Disasembler, osim toga, omogućava i traženje određenog niza znakova kroz čitavu memoriju, postavljanje takozvanih "prekidnih tačaka" u programu (kada računar, u toku izvršavanja mašinskog programa, naiđe na "prekidnu tačku" on umesto da nastavi sa izvršavanjem programa prestaje sa radom i na ekranu prikazuje sadržaje procesorskih registara), kao i disasembliranje ROM-a računara. Asembler i disasembler za ZX81 koštaju dvadesetak funti, a u Jugoslaviji mogu da se nabave za oko 1000 dinara. Postoji više verzija semblera i disasemblera za Spectrume. Preporučili bismo vam, ipak, DEVPACK. Ovaj paket obuhvata dva programa i mnogbrojne opcije koje uključuju sve ono što je spomenuto u tekstu (izvršavanje programa naredbu po naredbu, mešanje programa u memoriju sa programom na kaseti i slično). DEVPACK je nešto što svaki ozbiljniji vlasnik Spectruma treba da nabavi; cena od 14 funti je umerena, a program, zajedno sa uputstvima, može da se nabavi i od jugoslovenskih preprodavaca za svega 500 dinara.

Mi smo vam, dakle, preporučili DEVPACK, ali koji DEVPACK? Da bi stvar bila složena, isti autori su pripremili tri verzije koje su numerisali brojevima I do III. Ne, razume se, iz inata, nego da poboljšaju svoj program. Sva tri programa slede istu koncepciju i sva tri su dobra, ali su novije vrezije opremljene kompletnijim spiskom komandi i, što je najvažnije, imune su na "greščice" kojih je bilo u programu DEVPACK I. Reklo bi se da je najbolje kupiti DEVPACK III? Ne možemo da budemo sasvim sigurno u to jer program nismo videli, ali je DEVPACK II imao jednu nepogodnost za početnika: uputstvo se sastojalo od skripti za upotrebu programa DEVPACK I i dodatka namenjenog programu DEVPACK II. Početnik, kome je dovoljan program da razume termine kao što su "source filme", "object filme", "origin" i slični mora najpre da čita jedno uputstvo, a onda da zaboravlja nešto od onoga što je pročitao ili, da stvar bude gora, da menja upravo stečene navike. Ukoliko sada nabavljate program, kupite DEVPACK III, ali ako ste se već navikli na DEVPACK I ili DEVPACK II - ne trošite novac. Program koji imate je dovoljno moćan za vaše potrebe.

Jednostavne rutine

Ima i mnogo manjih sistemskih programa. Zadržaćemo se na dva pisana za Spectrum. Jedna od mana ovog računara je što ne omogućava da se prenumeriše program. Brojevi naredbi, naime, najčešće nemaju linijske brojeve koji su pravilno raspoređeni i koji omogućavaju jednostavno kucanje programa. Zato su korisnici sastavili programe poznate pod imenom "renumber" (prenumetator) koji ređaju linije tako da njihovi brojevi budu 10, 20, 30 i tako dalje. Neki preprodavci programa za male sume prodaju neke ovakve programe, često ne ističući njihovu veliku manu: oni ne menjaju adrese u GOTO i GOSUB naredbama, čime prenumerisani program psotaje potpuno beskoristan. Postoje, međutim, i kompletni programi za prenumerisavanje ali, nažalost, samo na stranom tržištu. Jedan takav program prodaje Malva Ltd. za 7 funti.

Za ZX81 napisano je zaista mnogo programa, od kojih su neki izuzetno zanimljivi. Bejzik programi pisani za ZX81 mogu bez problema da rade na Spectrumu, ali je za njihovo unošenje potreban listing i dosta vremena za kucanje. Kao pomoć onima koji na kasetama poseduju mnogo programa za ZX81, napisan je program "Slow loader". Pomoću njega se automatski unosi prevodi svaki program pisan za ZX81 - dovoljno je uneti kasetu i startovati program. Nekoliko minuta kasnije program će biti preveden i smešten u memoriju ZX Spectruma. Čini nam se da je 10 funti (400 din kod preprodavaca) previše novca za ovaj program. Naime, ZX81 je spor računar, pa su dobri programi pisani uglavnom na mašinskom jeziku, sa kojim "Slow-loader" ne može da izađe na kraj.

Sa bejzika na mašinac

Za kraj poglavlja posvećenog sistemskim programima ostavili smo one najpotrebnije: poznati su kao "M-Coderi", "Code Translatori", "MCC programi" ili, kratko, bejzik kompajleri. Ovi programi omogućavaju automatsko prevođenje bejzik programa na mašinski jezik. Time je razvijanje samog programa olakšano jer se bejzik lako ispravlja, a izvršavanje ubrzano prevođenjem na mašinski jezik. Bejzik kompajleri na prvi pogled ukidaju svaku potrebu za drugim programskim jezicima, učenjem mašinskog jezika i drugim razmišljanjima o ubrzavanju računara. No, to nije uvek tako. Pre svega, da bi se sastavio savršen kompajler (tj. kompajler koji će moći da prevede sve bejzik programe na mašinski jezik), potreban je računar solidne memorije opremljen disk jedinicama. Bejzik kompajler za TRS 80, na primer, prevodi sve programe na mašinski jezik, čime se njihovo izvršavanje ubrzava 10-40 puta, ali zahteva memoriju od 48 kilobajta, dve disk jedinice i - 500 maraka za kupovinu programa!

Većina bejzik kompajlera, međutim, ne može da prevede sve naredbe. Veliki problem nastaje kod prevođenja naredbi koje zahtevaju rad sa brojevima koji nisu celi, pa se ove naredbe često izostavljaju. FOR-NEXT petlje izazivaju nove probleme, pa se i od njih često odustaje. Naredbu po naredbu, bejzik postaje sve siromašniji, da bi se kod kompajlera prilagođenih računarima skromnijih mogućnosti (prvenstveno ZX81 i Spectrum) sve završilo na relativno malom broju naredbi. Kompajler za Spectruma, nazvan "Super C Compiler", prevodi svega 42 naredbe i omogućava rad jedino sa celim brojevima. Dakle, nema govora o tome da se ovaj program koristi za prevođenje svih bejzik programa. Međutim, može da se dopusti jedan kompromis: ukoliko nam je potreban program koji treba brzo da radi, odreći ćemo se mnogih bejzik naredbi i pisati program tako da bude pogodan za kompajliranje. Kada ga napišemo, testiramo i ispravimo sve greške, prevešćemo program i dobiti mašinsku verziju daleko jednostavnije nego da smo odmah pisali program na mašinskom jeziku.

Sa Super C Compilerom, međutim, ima problema drugog tipa. Njegovi autori su se toliko uplašili mogućnosti da neka od njihovih mušterija počne da komercijalizuje programe prevedene uz pomoć njihove rutine da su kompajler sastavili tako da dobijeni mašinski kod smesti u memoriju i omogući njegovo izvršavanje ali ne i snimanje na kasetu. Ograničenje je za dobrog programera besmisleno, ali autori Super C Compilera verovatno računaju s tim da je dobar programer dobro upućen u tajne mašinskog jezika pa mu ovaj program nije ni potreban. Za početnika je bolje da kupi program M Coder (cena je otprilike ista), koji ima neke prednosti i nedostatke u odnosu na Super C Compiler, ali je manje "zaštićen".

Kompjuterske poliglote

Teško je izabrati dobre sistemske programe. U svakom slučaju treba kupovati samo ono što nam je potrebno. Ako počnemo da se opremamo svim postojećim jezicima, verovatno je da ćemo bacati novac, jer nećemo naći vremena da ih sve naučimo, a ako ih i budemo naučili, videćemo da ne pružaju mnogo više od bejzika. Asembler i disasembler su, kao što smo rekli, nužni za svakog boljeg programera i treba ih dopuniti nekim monitor-programom ako takav postoji. Monitor program će nam omogućiti da steknemo uvid u ono što se dešava u samom računaru, svhatimo raspored sistemskih promenljivih, čitamo zaštićene programe i slično.

Postoje mnogobrojni uslužni sistemski programi koji predstavljaju proširenje bejzika nekim novim naredbama. Ovi programi mogu da budu neobično korisni, ali najčešće ostaju sasvim neupotrebljeni: onima koji ne poseduju disk-jedinice zamorno je da svaki put kada uključe računar učitavaju proširenje bejzika; osim toga, programe pisane na "proširenom bejziku" ne mogu da daju prijateljima koji nemaju potreban sistemski program. Sve u svemu, sistemski programi su prilična investicija bez koje može da se prođe. Ipak, sigurno je da će uvek biti neobično popularni. Poznajući psihologiju vlasnika računara, dolazimo do zaključka da je najteže odoleti iskušenju pri kupovini sistemskih programa: njihove mogućnosti, bar na papiru, predstavljaju upravo ono što je našem "elektronskom ljubimcu" preko potrebno.

Uslužni programi Moja home strana