Odprto ob četrtkih in petkih od 16h-20h, ob sobotah od 10h-16h. Muzej je zaprt ob nedeljah in vseh praznikih.
Back to all Post

Prvi računalniki v Sloveniji, dodatek B – programiranje s karticami in trakovi

Nadaljujemo s serijo objav iz zgodovine računalništva v Sloveniji, ki je rezultat izvirnih raziskav kustodiata Računalniškega muzeja.

Pregled vsebine:

  • Računalniki z zunanjim programom
  • Prvi programi na karticah in trakovih
  • Zuse Z3, Stibitz Model 1-6, Harvard Mark 1&2
  • Charles Babbage in Analitični mehanizem
  • Programiranje na IBM CPC
  • Programiranje na Univac 1004

Preden nadaljujemo obravnavo prvih računalnikov pri nas s prispevkom o prvem velikem elektronskem računalniku v Jugoslaviji in prvem elektronskem računalniku jugoslovanske izdelave, se bomo s tokratno objavo še za trenutek spomnili na kratko vmesno stopnjo prvih relejskih računalnikov in na edinstven način njihovega programiranja.

Pred pojavom modernih elektronskih računalnikov z notranjim programom kot jih poznamo danes, namreč nekateri računalniki programskih navodil niso hranili v sebi, v notranjem spominu, temveč so jih sproti brali in izvajali iz medija, na primer iz luknjanih kartic ali trakov. Na tak oziroma podoben način pa je bilo možno programirati tudi nekaj računskih strojev, kot na primer UNIVAC 1004, ki so ga imeli v ljubljanski centrali SDK in je bil v začetku šestdesetih zelo razširjen v Jugoslaviji. Te naprave se imenujejo tudi računalniki z zunanjim programom in predstavljajo prvi korak v smeri univerzalnih programabilnih računalnikov.

Računalniki z zunanjim programom

Razen nekaterih zgodnjih elektronskih računalnikov, so bili računalniki z zunanjim programom skoraj izključno izdelani v elektromehanski relejski tehniki. Na njihovo zmogljivost in programabilnost so tako kot pri računskih strojih še vedno predvsem vplivale omejene spominske kapacitete. Določena vrednost je bila zaradi omejenega spomina namreč med izvajanjem programa na voljo samo določen kratek čas, preden jo je nadomestila druga vrednost. To je seveda zelo oteževalo programiranjem, zato je v štiridesetih prihajalo do različnih poskusov sprostitve teh omejitev.

Okornost prvih računalnikov so načrtovalci presegli s konceptom kontrolnega mehanizma, ki je-poenostavljeno rečeno-povezal več računalnikov oziroma računskih enot v enoten sistem in jim s tem podelil več dinamike in sposobnosti izvajanja bolj kompleksnih programskih konceptov z več različnimi spremenljivkami in pogojnimi podrutinami.

Največja prednost računalnikov z zunanjim programom pred klasičnimi računskimi stroji je bila predvsem ta, da so bili njihovi programi naluknjani na karticah ali traku. Na ta način so bili shranjeni in vedno na voljo za ponovno uporabo. Uporabniki so lahko imeli zbirke različnih podrutin, ki so jih poljubno vključili v svoje programe. Tudi popravljanje in spreminjanje programov je bilo tako lažje. Takšno programiranje je bilo sicer še vedno zelo težavno, zamudno in nepraktično v primerjavi z današnjim, a vendar dosti bolj učinkovito kot ožičevanje nadzornih plošč in je tako predstavljalo prvi korak v smeri sodobnih programskih praks. (W/01, W/09, W/12a, W/22, WIKI/03, WIKI/13, WIKI/34)

Replika relejskega računalnika Zuse Z3. Deutsches Museum, Munich. (CC BY-SA 3.0)
$> V muzeju hranimo različne primerke osnovnih gradnikov računalnikov, med njimi releje telefonskih central. Tudi Zuse-jevi prvi računalniki so bili izdelani kar iz telefonskih relejev.

Zuse Z3

Računalnik, ki je deloval po principu zunanjega programa je prvi izdelal Konrad Zuse leta 1941. To je bil tudi prvi uporabni programabilni računalnik. Z3 je bil elektromehanični računalnik v celoti zgrajen iz telefonskih relejev. Uporabljal je 600 relejev za aritmetično enoto, 1500 za spominsko enoto in 400 za kontrolno enoto. To je bil 22-bitni binarni sistem, ki je vse interne operacije izvajal kot seštevanje in odštevanje. Centralna enota računalnika je imela nabor devetih strojnih navodil/ukazov, od tega pet navodil za izvajanje osnovnih aritmetičnih operacij vključno s kvadratnim korenom, dve navodili za branje in pisanje v spomin in dve navodili za prevajanje števil iz decimalnih v binarne in obratno.

Zuse-jev sistem je bil v tem času in glede na uporabljeno tehnologijo izredno napreden v smislu konceptov in zasnove, menda pa je bil tudi zelo zanesljiv in je programe lahko izvajal čez noč in brez nadzora, kar je bilo v tem času nepredstavljivo. Zuse je že takrat teoretično razvil koncept višjega programskega jezika imenovanega Plankalkul, ki pa ni bil realiziran, so pa Zuse-jevi koncepti dosti prispevali k razvoju višjega programskega jezika Algol konec petdesetih. Računalnik Z3 je omogočal za ta čas zelo kompleksne izračune, ni pa še omogočal pogojnih navodil. Programi zanj so bili naluknjani kar na odpadnih filmskih trakovih. (W/09, W/12a, WIKI/07, WIKI/35)

Relejski računalnik George-a Stibitz-a Model 5. Ballistics Research Laboratories, Aberdeen, ZDA. (CC Public domain)

George Stibitz Model 1-6

George Stibitz je v tridesetih sicer prvi vpeljal uporabo relejev v računalniške sisteme. Do leta 1939 so pod njegovim vodstvom pri Bell labs sestavili prvi relejski računalnik, ki je lahko računal s kompleksnimi števili, do leta 1945 pa so izdelali še več drugih modelov v seriji, med njimi Model 5, ki je bil že prvi povsem programabilni relejski računalnik za splošno uporabo. Stibitz je tudi prvi kot vnosno sredstvo uporabil teleprinter in takrat celo demonstriral daljinski vnos navodil v računalnik. Na podlagi njegovih relejskih računalnikov so tudi na naši FE Fakulteti za elektrotehniko konec petdesetih razvijali lasten relejski računalnik, vendar so se nato na pobudo Iskre usmerili v razvoj elektronskih komponent(več o tem pa v četrtem delu). (W/09, W/12a, WIKI/36)

Analitični stroj Charles-a Babbage-a in prvi programi

Na tem mestu je morda smiselno omeniti prvi, izvorni koncept programabilnega računalnika z večino bistvenih elementov modernega računalnika. To je bil koncept Analitičnega mehanizma, ki ga je v devetnajstem stoletju ustvaril Charles Babbage in naj bi bil po njegovem načrtu realiziran izključno z mehanskimi sredstvi. Zaradi obsežnosti projekta in težav s financiranjem ta ni bil zaključen, je pa vzbudil zanimanje mnogih inženirjev, teoretikov in intelektualcev, zato je presenetljivo, da je do prve realizacije podobnega koncepta preteklo skoraj sto let.

Babbage je za mehanizem sestavil več kot dvajset programov, ki bi avtomatizirali izračune nekaterih matematičnih tabel in problemov takratnega časa, zelo znan pa je tudi program Ade Lovelace, ki ga je sestavila za ta mehanizem in na podlagi katerega jo nekateri imenujejo tudi ‘prva programerka’. Analitični mehanizem je kot vir podatkov predvideval luknjane kartice po zgledu tistih, ki jih je v tem času uporabljal Joseph Jacquard na svojih predilnicah. Kot vir/register sistemskih navodil mehanizma pa je predvideval nekakšen mehanski sistem vtičev. (W/09, W/12a, WIKI/38)

Replika dela analitičnega mehanizma Charles-a Babbage-a. Science Museum, London. (CC BY-SA 2.0)

Harvard Mark 1

Iz načrtov za analitični mehanizem Charles-a Babbage-a neposredno izhaja računalnik Harvard Mark 1 izdelan v začetku štiridesetih na Harvardski univerzi. To je še en zgodnji primer relejskega elektromehaničnega računalnika, ki je deloval po principu zunanjega programa. Leta 1944 so na tem računalniku že izvajali prve programe za določitev primerne metode za detonacijo atomske bombe in programe za izračun matematičnih in astronomskih tabel po zgledu tistih, ki jih je predvidel tudi Babbage.

Konec štiridesetih so izdelali še en naprednejši model elektromehaničnega računalnika Harvard Mark 2. Oba modela sta bila sestavljena z dvema ločenima trakovoma. Z enega sta prebirala podatke iz drugega pa navodila programa, imela pa sta podobne omejitve v količini hkrati uporabljenih vrednosti kot IBM računski stroji tega časa. Model računalniške arhitekture z ločenimi spominskimi kapacitetami za podatke in navodila se imenuje tudi Harvardski model.

Programske zanke so na teh računalnikih izvajali kar tako, da so zlepili začetek in konec luknjanega traku, pogojne korake pa so prav tako izvajali na roke. Prve relejske računalnike so v tem času razvijali tudi v Angliji (Bombe), na Japonskem (Facom), Švedskem (BARK), Nizozemskem (ARRA) in Češkem (SAPO). (W/09, W/12a, WIKI/37)

Del programa na luknjanem traku z vidnimi popravki za računalnik Harvard Mark 1. U.S. Navy. Fotografiral Arnold Reinhold (CC BY-SA 3.0)
$> V našem oddelku za shranjevanje podatkov hranimo različne primerke luknjanih kartic in trakov. Vidite pa lahko tudi luknjalnik traku.

IBM CPC

Tudi v okviru serije klasičnih garnitur prve generacije IBM 600 so v Watsonovem laboratoriju konec štiridesetih razvili nov sistem imenovan CPC (Card programmed calculator), ki je predstavljal prvi odmik od programiranja klasičnih računskih strojev na način ožičenja. Tu je šlo za vezavo več strojev garniture v združeno enoto. Ta združena enota je lahko poleg običajnega delovanja, za namene kompleksnih znanstvenih izračunov prek čitalnika sprejemala navodila/program za izvajanje operacij iz samih luknjanih kartic.

Zaradi spominskih omejitev takšni izračuni na strojih IBM dotedaj niso bili možni, sistem CPC pa je lahko izvršil kakršnekoli vnaprej načrtovane aritmetične operacije. To je bil prvi dostopen sistem s takimi zmogljivostmi zato je bil tudi daleč najbolj popularen sistem pred prihodom prvih elektronskih računalnikov začetek petdesetih. Izdelanih je bilo kar 700 enot. Sistem je bil običajno sestavljen iz enega izmed takrat naprednih računskih strojev IBM 604 ali 605, ene izmed klasičnih tabelirk serije 400 in hitrega čitalnika/luknjalnika serije 500. (W/01, W/10b, W/11, W/22, WIKI/39)

Računski stroj IBM 604 v sredini. Kot izgleda bi bil lahko povezan v garnituro IBM CPC s tabelirko na levi in hitrim luknjalnikom za stebrom. Norsk Teknisk Museum, Oslo (CC BY-SA 4.0)

Programiranje IBM CPC

Sistem programiranja prek kartic je deloval tako, da se je na nadzorni plošči stroja najprej ožičilo vse osnovne operacije, ki jih je določen program uporabljal, potem pa so se na kartice naluknjale posebne kombinacije, ki so delovale kot ukazi stroja in so še najbolj primerljive neke vrste decimalnemu strojnemu jeziku. Vsako navodilo je bilo naluknjano na svoji kartici, program pa je bil sestavljen iz serije takih kartic. Ukaz posamezne kartice je naslavljal operacijo, lokacijo podatkov za obdelavo in lokacijo, kjer so se shranili ali naluknjali rezultati izvedene operacije. Čitalnik je po vrsti prebiral kartice in izvajal vsako navodilo posebej.

Četudi so bile omejitve v številu korakov programa na ta način sproščene, pa je še vedno predstavljala resno omejitev količina vrednosti, ki jih je program lahko hkrati hranil in uporabljal, zato so za ta sistem razvili še dodatne spominske enote IBM 941. Po želji se je v enoto lahko vključilo do 3 takšne dodatne spominske enote. Bile so približno en kubični meter velike, vsaka izmed njih pa je kljub temu lahko hranila le 16 10-mestnih vrednosti. (W/10b)

Sperry Rand UNIVAC 1004

Pri nas računalnikov z zunanjim programom kot kaže ni bilo. Še najbližje njihovemu delovanju je bil v SDK in Zavodu za statistiko leta 1964 nameščeni elektronski računski stroj UNIVAC 1004, ki je bil v tistem času en izmed zadnjih in najbolj naprednih računskih strojev na trgu. Poleg glavne enote za procesiranje kartic in luknjalnika so imeli v SDK menda tudi sortirko UNIVAC 1001, ki je poleg zelo naprednih funkcij za razvrščanje kartic neodvisno lahko izvajala določene operacije na podatkih.

Obe enoti sta se običajno programirali z ožičenjem nadzorne plošče, s posebnim ožičenjem pa je bilo možno izvajati tudi programiranje prek kartic. Vendar pa tu ni šlo za klasičen princip računalnika z zunanjim programom, temveč princip že bližje računalniku z notranjim programom. Takšno delovanje je stroju UNIVAC 1004 omogočal napreden delovni spomin na principu magnetnih jeder s kapaciteto 961 spominskih mest in dolžino 6 bitov. Procesna enota je v tem pomnilniku lahko hranila tako podatke prebrane iz kartic, kot tudi vmesne podatke tekočih operacij, z omenjenim ožičenjem pa tudi navodila programa, ki jih je nato lahko izvajala iz spomina. (VB/01, W/10bc, WIKI/40)

Program ‘Emulator’ za računski stroj UNIVAC 1004. Museums Victoria, Australia. (CC BY-SA 4.0)
$> V muzeju hranimo tako primerke nadzornih plošč kot tudi različne primerke spomina na principu magnetnih jeder.

Programiranje UNIVAC 1004

Prek nadzorne plošče je bilo mogoče določiti kar 62 korakov dolg program, obenem pa je vsak korak lahko vseboval več hkratnih operacij. V enem samem koraku je bilo na primer možno izvesti operacijo na podatku, izpisati vrstico na tiskalniku, zluknjati kartico in prebrati naslednjo kartico, ali pa izvesti v enem koraku aritmetično operacijo na podatku in pogojni skok na poljuben korak programa glede na rezultat aritmetične operacije.

UNIVAC 1004 je sicer izvajal le osnovni tabulacijski funkciji seštevanja in odštevanja, ter primerjavo vrednosti. Z uporabo posebnega načina ožičenja nadzorne plošče, ki so jo uporabniki imenovali kar ‘Emulator’, pa je sistem lahko prejemal ukaze želenega programa obdelave tudi iz serije luknjanih kartic. ‘Emulator’-ja ni bilo mogoče uradno kupiti pri proizvajalcu, zato so ga uporabniki morali zvezati sami. Izvedba programa je bila, kot lahko vidite na sliki, izredno zapletena in je uporabljala skoraj vse vtiče nadzorne plošče, zato je ta pogosto na stroju ostal kar trajno, programiranje pa se je potem izvajalo izključno prek programov naluknjanih na karticah.

Uporaba ‘Emulatorja’ na teh računskih strojih naj bi bila zelo pogosta, vendar ni znano, če so ga uporabljali tudi v ljubljanski podružnici SDK ali našem Zavodu za statistiko. Računskih strojev UNIVAC 1004 naj bi bilo v Jugoslaviji pred letom 1965 sicer kar precej, okrog 15. V prvi polovici šestdesetih so ga naročili tudi v Iskri, vendar so kasneje nakup morali preklicati zaradi finančnih težav. (W/10bc, WIKI/40)

.. zbral in sestavil Miha Urh

Sledi

Z naslednjo objavo se vračamo k obravnavi prvih računalnikov pri nas. Preberete si lahko nekaj o tehnologiji prve generacije elektronskih računalnikov, o prvem velikem elektronskem računalniku v državi, ki je bil nameščen leta 1960 v Zveznem zavodu za statistiko v Beogradu in o izdelavi lastnega elektronskega računalnika, ki so se je že leta 1956 lotili strokovnjaki iz Inštituta IBK Vinča in Inštituta Mihajlo Pupin. Pišemo pa tudi o posebnem elektronskem analognem računalniku M-1, ki so ga zgradili na našem Nuklearnem inštitutu Jožef Stefan leta 1958.

Viri

VB/01 : Vladimir Batagelj – 60 let računalnika Z-23 (LINK) | W/01 : Columbia University Computing History (LINK) | W/09 : Bit by bit (LINK) | W/10b : IBM CPC | W/10bc : Univac 1004, Card processor 80 column reference | W/11 : Computer Collector | W/12a : Computing before computers | W/22 : Punched cards collection at University of Iowa Department of computer sciences | WIKI/03 : George Stibitz, Howard Aiken, Konrad Zuse | WIKI/07 : Timeline of computing hardware -1950.. 1950-1960, Zuse Z22 | WIKI/13 : Data processing, Punched card, Digital media, Computer data storage | WIKI/34 : Computer programing in the punched card era, Punched card, Punched tape, Electro-mechanical computers, Mechanical computers, ENIAC | WIKI/35 : Zuse Z3, ALGOL 60, Plankalkul | WIKI/36 : George Stibitz, Model V | WIKI/37 : Howard Aiken, Harvard Mark I, Harvard Mark II | WIKI/38 : Charles Babbage, Ada Lovelace, Difference engine, Analytical engine | WIKI/39 : IBM CPC, IBM 604 | WIKI/40 : UNIVAC 1004

Add Your Comment