Revija Joker - Retrospektiva programiranja

ČLANKI
stranka » članki » vedež » Retrospektiva programiranja

Veliki modri
IBMjev prvi računalnik, 701, je imel dovolj velik pomnilnik (da ne omenjam strašljivih razsežnosti devetih kilobajtov trdega diska), da je lahko programe shranjeval v njem, v nasprotju s prejšnjimi stroji, ki so ukaze s kartic brali sproti. Toda vpisovanje programov je bilo kljub temu mukotrpno. Za vsak ukaz se je na kontrolni plošči s stikali nastavilo njegovo vrednost (različni ukazi so bili predstavljeni z različnimi šiframi v dvojiški obliki - torej z nekakšno kodo, iz česar sledi izraz kodiranje) ter naslov, na katerega naj se vrednost vpiše. 00101001 00101011 bi recimo pomenilo, naj se v enega od operandov naloži vrednost z naslova 43. Celo ko so program namesto s preklapljanjem stikal naložili s kartic, ni bilo nič bolje, saj so bile ob več sto ukazih napake pri luknjanju več kot pogoste. Poleg tega je bila tu pregovorna nerodnost programerjev, ki so se radi spotikali in stresali kartice, tako da je bil sortirnik, ki je kartice ponovno uredil po vrsti, del obvezne opreme. Vseeno, vrstice in stolpci lukenj na astronomskem kupu kartic so težko berljivi in izmislili so si marsikak pripomoček za lažje kodiranje. Na začetku so binarni zapis nadgradili v osmiškega in nato šestnajstiškega, saj je pretvarjanje v dvojiškega relativno preprosto. Naključni niz 1101000011010000 1111101011111010 recimo pomeni D0D0 FAFA (kar sicer ni naključno, je pa res). Tudi programerski humor je bil obarvan v tej smeri: 'Zakaj programerji ne ločijo med Božičem in Novim letom? Ker je 25 po desetiško ravno 31 po osmiško.' Bahahaha.
Čeravno so bili zmazki tipa F24B 50FE nemalo krajši od binarnega zapisa, niso pripomogli k boljši berljivosti. Ker so programerji med maličenjem računskih problemov v računalniku že sami uporabljali opisne besede za operacije (ADD, DIV, MOV) je bil naslednji korak računalniku naložiti prevajanje teh ukazov v strojno kodo. Tem prevajalnikom rečemo zbirniki, skupku besed pa zbirni jezik

Na kotrolni plošči IBMja 701 so s stikali vpisali program in začetne vrednosti pomnilniških naslovov.
(hekerji: assembler). Za vsako procesorsko jedro, ki je podpiralo drugačen nabor ukazov, je moral biti spisan svoj zbirnik. Razvoj še vedno poteka, saj procesorska tehnologija stalno napreduje (ena bolj odmevnih razširitev današnje arhitekture x86 je bil recimo nabor ukazov MMX iz srede devetdesetih). Zbirni jeziki se štejejo za nižje programske jezike, ker ponujajo popoln nadzor nad osrednjim procesorjem in se neposredno prevajajo v strojno kodo (ena vrstica zbirnika je ena vrstica strojne kode). Klamfanje v njih danes pomeni mokre sanje tistim programerjem, ki zagovarjajo stališče, da mora 'pravi' programer poznati vse osnove, od strojne kode naprej. To sicer še vedno velja za pisce prevajalnikov iz višjih jezikov, a za ostalih 99 % in več programerjev je zgodovina poskrbela za razvoj v nasprotno smer - približanje tega posla množicam.
V petdesetih je bil programer skoraj tako čislan in strahospoštovan kot vrači v prazgodovini. Njegova sposobnost komuniciranja z računalnikom je bila neukemu laiku in večini stroke jasna toliko kot sporazumevanje z nezemljani. IBM je bil primoran morebitne hekerje pobirati z vseh mogočih področij. Matematike, elektronike, kriptograferje in mojstrske šahiste so pošiljali na specializirana izobraževanja in tako širili nabor geekov. Eden od njih, John Backus, je veliko razmišljal o olajšanju programiranja. Programer v zbirnem jeziku je še vedno pisal program vrstico za vrstico, ki so sovpadale s posameznimi ukazi procesorju. Ker so določeni postopki vedno uporabljali isto zaporedje ukazov, bi lahko le-te združil v nove ukaze na višji ravni. Ti bi bili veliko bližji samim problemom in laže razumljivi. Recimo, če bi hotel seštevek števil Y in Z shraniti v X, bi bilo treba napisati zgolj X = Y + Z, za kar bi v zbirniku potreboval štiri ukaze (dva, ki naložita X in Y v seštevalne registre, en ukaz za seštevek in ukaz za shranitev rezultata na pomnilniško lokacijo X). Backus je tako z vedno bolj rastočo skupinico zanesenjakov jel razvijati jezik, ki bi bil čimbolj podoben opisu matematičnih formul, ter prevajalnik zanj, ki bi iz take izvorne kode vse skupaj prevedel v enako hitro strojno kodo. Procesorski čas je bil takrat še izjemno drag in neučinkovita koda, ki bi se izvajala dlje od neposredno napisane, ne bi opravičila krajšega časa programiranja. Projekt je pri večini naletel na dvomljive poglede, saj naj bi bilo kaj takega nemogoče ustvariti. Prav taka mnenja so grupico še bolj podžgale k ustvarjanju in v roku treh let so dosegli vse zastavljene cilje, tudi hitrostnega. Jezik je dobil ime fortran (FORmula TRANslator) in je luč sveta ugledal leta 1957 na računalniški konferenci v Los Angelesu, kamor so večinoma prihajali kupci IBMjevih računalnikov. Vprašali so jih, naj opišejo tipične programerske probleme, s katerimi se srečujejo, nakar sta jih dve ekipi rešili, ena direktno v strojni koderji, druga v fortranu. Vsi so tekli skoraj enako hitro in navdušenje je bilo nepopisno. Backusova ekipa je tako zatrla nejeverne Tomaže in začel se je čas višenivojskih programskih jezikov.

Retrospektiva programiranja objavljeno: Joker 136
november 2004


sorodni članki