Back to all Post

Prvi računalniki v Sloveniji, dodatek A – programiranje z ožičenjem

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

Pregled vsebine:

  • Razvoj računskih strojev
  • Strojna oprema računskih strojev
  • Nadzorna plošča in programiranje z ožičenjem
  • Programiranje na IBM 421 in IBM 602-A
  • Programiranje na UNIVAC 60/120

V tokratni objavi se bomo še za trenutek ustavili pri računskih strojih in bomo namenili nekaj pozornosti programiranju teh naprav, še posebej programiranju pri nas najbolj razširjenih računskih strojev IBM 421 in IBM 602-A, ter programiranju prvega elektronskega računskega stroja UNIVAC 60/120, ki so ga imeli v kranjski Iskri.

Sodobne programske metode so se sicer razvile s pojavom prvih splošno dostopnih elektronskih računalnikov na principu vakuumskih elektronk v začetku petdesetih. Prve programske koncepte pa so sprejeli že njihovi predhodniki, programabilni računski stroji za obdelavo podatkov na principu luknjanih kartic. Ti računski stroji so se razen redkih izjem programirali s pomočjo ožičenja nadzornih plošč. Kot vir podatkov in način shranjevanja podatkov so uporabljali zapis na luknjanih karticah, sami stroji pa so imeli zelo omejen notranji spomin v obliki elektromehanskih števcev in akumulatorjev namenjen izključno hranjenju številk omejene dolžine med računanjem.

Tabulatorji ali tabelirke

Prvi računski stroji na principu luknjanih kartic so bili izrecno sestavljeni in strojno programirani z namenom obdelave podatkov popisa v Združenih državah leta 1890 in 1900. Reprogramirati jih brez strojnih sprememb ni bilo možno, izvajali pa so samo eno osnovno aritmetično operacijo seštevanja. Po letu 1906 je določen segment knjigovodskih računskih strojev postopno postajal bolj prožen, modularen in univerzalen. Ti stroji so se imenovali tudi tabulatorji ali tabelirke in so se uporabljali v garniturah z drugimi stroji za obdelavo podatkov. (W/01, W/02, W/09, WIKI/06)

Replika prvega holleritovega tabulatorja iz leta 1890. Museo Nazionale della Scienza e della Tecnologia Leonardo da Vinci, Milano (CC BY-SA 4.0)

Razvoj programabilnih tabelirk

V dvajsetih so se pojavile prve tabelirke, ki so lahko odštevale in tiskale rezultate na obrazce. Vse do štiridesetih so tabelirke tradicionalno opravljale le aritmetični operaciji seštevanja in odštevanja, ter primerjavo vrednosti. Imele so vgrajen čitalnik kartic in tiskalnik, pogosto pa so jih uporabljali tudi v kombinaciji z avtomatskim luknjalnikom, ki je lahko naluknjal rezultate za nadaljno obdelavo. Uporabniki so na tabelirki prek za ta namen razvitih nadzornih plošč lahko določili/programirali kako naj stroj po korakih obdeluje podatke zapisane na karticah in v kakšni obliki naj rezultate zapiše. Vsak nov stroj pa je imel nekoliko drugačno nadzorno ploščo prilagojeno njegovemu ustroju.

Ti programabilni računski stroji, ki so večinoma opravljali zelo rutinsko in ponavljajoče delo na principu enostavnih operacij, so s trudom spretnega programerja lahko opravljali tudi bolj kompleksne računske in matematično logične operacije. Prvič so bili na primer uporabljeni za bolj kompleksen znanstven izračun/program že leta 1928 in sicer za izračun prihodnjega gibanja Lune. Za tak izračun je bilo takrat uporabljenih kar 500.000 kartic. Potreba po podobnih matematičnih in tehničnih tabelah je bila v tem času zelo velika. (W/01, W/08, W/09, W/20a, WIKI/01, WIKI/07)

Tabelirka IBM 407 in dodatni luknjalnik IBM 519 v računskem centru Nokia. (CC Public domain)

Računski stroji IBM serije 600

Glavna usmeritev IBM, daleč največjega proizvajalca računskih strojev, so bile vse do petdesetih še vedno izključno njihove klasične knjigovodske garniture s tabelirkami serije 400, ki so se uporabljale že po vsem svetu in so podjetju prinašale velike dobičke. V štiridesetih je IBM oddajal že več kot 10.000 tabelirk in 25.000 luknjalnikov. Sprva zato v podjetju ni bilo soglasja glede razvoja univerzalnih računalnikov.

V sredini štiridesetih so najprej poskusno začeli v okviru svojih klasičnih garnitur izdelovati ločene računske enote serije 600 na principu različnih novih tehnologij. V razponu petnajst let so v posameznih modelih serije uporabili sprva releje, potem vakuumske elektronke in naposled tranzistorje. Ti dodatni stroji, pogosto imenovani tudi kalkulatorji, so bili namenjeni bolj kompleksnim izračunom. Rezultate so naluknjali na kartice za nadaljno oziroma končno obdelavo na tabelirki.

Prvi računski stroj, ki je lahko množil, IBM 601, je bil predstavljen leta 1931, njegov naslednik IBM 602, ki je lahko tudi delil, pa je bil predstavljen leta 1946. Istega leta je bil izdelan tudi prvi IBM-ov elektronski računski stroj IBM 603. Leta 1949 sta sledila še izredno uspešni IBM 604 in njegova modificirana različica IBM 605. Leta 1954 pa je bila izdelana prva eksperimentalna tranzistorizirana različica tega računskega stroja.

IBM serija 600 na ta način predstavlja izredno zgoščen prenos znanja in novih tehnologij iz znanstveno raziskovalne dejavnosti v uporabno poslovno in industrijsko dejavnost. Trg je za te naprave takoj pokazal precej zanimanja, kljub temu, da stroji serije 600 še niso bili univerzalni računalniki in je bila njihova uporabna in programska zmogljivost še zelo omejena. (W/01, W/08, W/09, W/10b, W/11, W/20a, WIKI/01, WIKI/07)

Računski stroj za množenje IBM 601 iz leta 1933. Museo Nazionale della Scienza e della Tecnologia Leonardo da Vinci, Milano (CC BY-SA 4.0)

Strojna oprema računskih strojev

Temeljni ustroj računskih strojev je bil bolj ko sodobnim računalnikom podoben nekakšnemu modularnemu tekočemu traku. Poleg samih elektromehanskih relejskih števcev, ki so bili osnovna gradbena enota stroja, so bili stroji sestavljeni iz velikega števila mehanskih vzvodov in zobnikov, imeli pa so še posebej prilagojene enote za izvajanje aritmetičnih operacij množenja in deljenja, enote za shranjevanje in prenašanje vmesnih seštevkov imenovane akumulatorji, ki so bili sicer izdelani po enakem principu kot števci, ter vodila, mehanizme prek katerih so se vmesni seštevki prenašali do končnega rezultata.

Na skoraj enak način so bili v tem času zgrajeni tudi prvi elektronski računski stroji na principu vakuumskih elektronk, kot na primer računski stroj Remington Rand 409 uporabljen v garnituri UNIVAC 60/120 in IBM-ova modela 604 in 605 uporabljena v garniturah CPC. Oboji so v delovanju še vedno oponašali mehanske tekoče trakove in so se programirali prek ožičenja nadzornih plošč.

Na tak način pa so se programirali tudi prvi pravi univerzalni elektronski računalniki izdelani v štiridesetih, kot na primer britanski Colossus izdelan med vojno in uporabljen za dešifriranje nemških kod, ali pa ENIAC, prvi elektronski programabilni računalnik izdelan leta 1945, do neke mere pa tudi nekateri kasnejši računalniki. (W/09, W/10b, W/11, WIKI/01, WIKI/11)

Relejski akumulator računskega stroja IBM 602-A. Museo Nazionale della Scienza e della Tecnologia Leonardo da Vinci, Milano (CC BY-SA 4.0)

Zgradba nadzorne plošče

Podobno kot pri telefonski centrali, so imele nadzorne plošče teh strojev in računalnikov množico vtičev/kontaktov, ki jih je uporabnik moral ustrezno ožičiti za določitev operacije v vsakem posameznem koraku obdelave.

Nadzorne plošče računskih strojev so imele ponavadi po dve seriji vtičev z enako razporeditvijo kot ustrezne luknjane kartice, na katerih so bili podatki. To so bile običajno standardne kartice IBM z 80×12 polji, v nekaterih primerih pa starejše izvedbe kartic IBM z 45×12 polji, oziroma dvojne z 90×12 polji v primeru kartic Univac. Prva serija vtičev je predstavljala kartico z vhodnimi podatki, druga serija pa kartico z izhodnimi podatki. Poleg teh dveh serij je bila na nadzorni plošči še serija vtičev, ki so predstavljali možne operacije, faktorje oziroma konstante, razvode glede na rezultat in podobno.

Ko so bila na vhodnih karticah določena polja s podatki, ki jih je bilo potrebno obdelati, so odgovarjajoče vtiče iz prve serije ožičili z vhodnimi vtiči za ustrezne operacije, ki naj bi se na podatkih izvedle, izhodne vtiče operacij pa z naslednjim korakom oziroma ustreznimi vtiči iz druge serije, kjer naj bi se naluknjali ali izpisali dobljeni rezultati. Stroj je s pomočjo tega mehanizma lahko po poljubnem programu izvajal ustrezne operacije na prebranih podatkih, rezultate pa po končani obdelavi naluknjal na iste ali dodatne kartice, če je bilo to potrebno za nadaljno obdelavo. Običajno se je program izvajal serijsko, v novejših elektronskih strojih pa je bilo že možno omejeno pogojno izvajanje. (W/10a, W/10b, W/10bb, W/11, WIKI/32)

Tabelirka IBM 421 z ožičenimi nadzornimi ploščami. National Museum of Science and Industry of Catalonia, Terrassa (CC BY 2.0)
$> V muzeju hranimo dve takšni nadzorni plošči IBM računskega stroja. Žal še ne vemo odkod sta prišli, zagotovo pa pripadata enemu izmed prvih računskih strojev v Sloveniji.

Diagrami in vnaprej ožičene nadzorne plošče

Programiranje na način ožičevanja je bilo zelo zamudno in zapleteno opravilo. Za vsako obdelavo je bilo potrebno na novo ožičiti povezave, zato so imeli računski stroji sčasoma možnost menjave celotnih nadzornih plošč. Operaterji so tako lahko imeli več nadzornih plošč z vnaprej ožičenimi programi, ki so jih po potrebi lahko priklopili na stroj, na primer za izvajanje določenih rutinskih ali pogostih opravil in obdelav. Običajno pa so obstajali kompleksni diagrami na katerih je bila prikazana natančna konfiguracija nadzorne plošče za določen program in določene vhodne podatke. To sta bili, poleg ročnega zapisa na papirju, prvi dve obliki na katere so bili programi sestavljeni in shranjeni.

Poleg računskega stroja in tabelirke so imele tudi druge enote v garnituri svoje nadzorne plošče preko katerih se je programiralo njihove operacije, zato je bilo, razen pri zelo enostavnih opravilih, za celotno obdelavo potrebno programirati tudi operacije teh strojev. Celoten tok obdelave, tok podatkov, oziroma kartic, od enega stroja do drugega, pa je bilo prav tako potrebno načrtovati in zapisati v obliki včasih zelo kompleksnih diagramov. Le vsi ti diagrami skupaj so predstavljali celoten program, ki je ob določenih vhodnih podatkih proizvedel določene končne rezultate/podatke. (W/10a, W/10b, W/10bb, W/11, WIKI/32)

Primer diagrama za ožičenje nadzorne plošče tabelirke IBM 407. Columbia University computing history. Fotografiral Frank de Cruz (Z dovoljenjem)

Primer programiranja z ožičenjem

Za vsak konkreten problem je bilo najprej potrebno sestaviti načrt v obliki tabele, kjer se je določilo po kakšnih logičnih korakih, s katerimi ukazi, bo rešitev problema izvedena najbolj učinkovito in predvsem v okviru omejitev uporabljenega stroja. Nato je bilo potrebno načrtovane korake kot ustrezna ožičenja izrisati na diagramu nadzorne plošče, nakar se je šele dejansko ožičilo nadzorno ploščo.

Za preprosto seštevanje na primer, je bilo najprej potrebno ožičiti odčitavanje obeh vrednosti in njuno hrambo v števcu in akumulatorju, nato je bilo v prvem koraku programa potrebno ožičiti odčitavanje druge vrednosti iz akumulatorja in prenos v števec, v katerem je bila že prej shranjena prva vrednost. Števec je tako obe vrednosti avtomatično seštel. V naslednjem koraku je bilo potrebno ožičiti prenos rezultata seštevanja v drug akumulator in od tu ožičiti ustrezno polje na izhodni kartici ter konec programa, zato da je stroj prebral in naluknjal rezultat takoj, ko je bil ta korak izvršen. Stroj je nato avtomatično sprejel naslednjo kartico in začel izvajati isti program od začetka.

Medtem je na prvih računalnikih tega časa, kot je bil ENIAC, načrtovanje bolj kompleksnih programov za reševanje konkretnih problemov pogosto zahtevalo tedne ročnega dela, preden se je program sploh lahko prenesel iz sheme/diagrama na papirju na nadzorno ploščo računalnika in že sam proces ožičenja je pogosto trajal več dni. Poleg vsega tega je lahko ena sama pokvarjena dioda ali pokvarjen rele preprečil pravilno izvajanje teh programov. (W/10a, W/10b, W/10ba, W/11)

Tipična ožičena nadzorna plošča tabelirke IBM 402. Fotografiral Chris Shrigley. (CC BY 2.5)

Osnovna shema koraka programa

Programi so se na računskih strojih izvajali serijsko. Vsak korak je potekal v obliki enostavnega računa s tremi vrednostmi. Te so bile povezane z eno operacijo in enim končnim razvodom koraka glede na dobljeni rezultat po vzorcu:

Prva vrednost (operacija) druga vrednost = rezultat (razvod).

Vrednosti sta bili lahko bodisi podatek prebran/ožičen iz določenega polja, bodisi konstanta posebej ožičena na nadzorni plošči, bodisi rezultat iz katere izmed prejšnjih operacij. Razvod koraka je bil lahko naslednji korak ali pa konec programa. Šele pri bolj naprednih računalnikih na principu vakuumskih elektronk so bili mogoči pogojni razvodi glede na določene lastnosti rezultata, s čimer se je postopno odprla možnost za sekvenčno in zankasto programiranje. (W/10b)

Omejitve programiranja

Glavni omejujoči dejavnik teh strojev so bile sprva spominske zmožnosti. Stroji so imeli na začetku le zmogljivost deset in postopno do več deset korakov v katerih se je program moral zaključiti. Prav tako je bilo zelo omejeno število elementov, ki jih je sistem lahko hkrati uporabljal v posameznem programu. Ti elementi so bili na primer vsa hkrati prebrana/ožičena polja na karticah, vse vnaprej določene konstante in vsi rezultati, ki jih je moral sistem hraniti in prenašati. Vsak element je imel tudi omejeno dolžino. (W/10a, W/10b, W/11)

Relejski akumulator tabelirke IBM 421. Museo Nazionale della Scienza e della Tecnologia Leonardo da Vinci, Milano (CC BY-SA 4.0)

Specifika množenja in deljenja

Relejski računski stroji IBM so za množenje in deljenje morali uporabljali metode prilagojene elektromehanskim števcem s katerimi so računali. Računski stroj IBM 602-A je na primer množil na način, da je uporabljal le faktorje 1, 2, 5 in 10, za vsa druga števila pa je uporabljal kombinacijo teh faktorjev v dveh ali več korakih. V stroju so bile vnaprej strojno ožičene/shranjene tabele za množenje s temi števili, na katere se je stroj pri računanju nanašal za prenašanje ostankov. Na ta način je stroj lahko v okviru omejitev izvršil vse operacije množenja.

Deljenje je stroj izvajal po metodi primerjave najvišjega in najnižjega skupnega imenovalca. Tudi za to operacijo je imel vnaprej strojno ožičene tabele. Taki stroji so lahko množenje in deljenje izvajali samo v ločenih programih. Že prvi računalniki na principu vakuumskih elektronk pa so po drugi strani množili in delili po metodi ponavljajočega prištevanja in odštevanja faktorja in so v programih vse štiri operacije svobodno uporabljali v kombinaciji z drugimi. (W/10b)

Programer pripravlja program na nadzorni plošči računskega stroja. Järnvägsmuseet, Stockholm fotografiral J.N.Gylldorf (CC Public domain)

IBM 421 + 602-A

Na opisan način se je programiranje izvajalo v TAM-u, Železarni Jesenice, Litostroju, Rogu, EMO Celje in drugje, kjer so imeli IBM garniture s tabelirko 421 in računskim strojem 602-A.

Tabelirka je izvajala aritmetične operacije seštevanja in odštevanja, primerjave vrednosti, na koncu pa izpisala številčne in črkovne podatke na vnaprej določene tabele in obrazce. Dodatni računski stroji serije 600 so omogočali še hitrejše in bolj kompleksno računanje z vsemi osnovnimi aritmetičnimi operacijami, rezultate katerih so naluknjali na kartice.

V enem ciklu je računski stroj IBM 602-A lahko izvršil 12 programskih korakov, v eni minuti pa 200 ciklov. Lahko je množil največ 22-mestna števila z 8-mestnimi števili in delil največ 15-mestna števila z 8-mestnimi. Vse aritmetične operacije so se izvajale na šestih elektromehaničnih števcih, treh 4-mestnih in treh 6-mestnih, ki so se bodisi uporabljali ločeno ali združeno kot največ 30-mestni števec. Števci so rezultate lahko tudi hranili, kar je pomembno dejstvo ob izredno omejenem številu akumulatorjev. IBM 602 je imel namreč le šest 12-mestnih akumulatorjev, v katerih sta se lahko hranili tudi po dve 6-mestni številki. Vse to so bile omejitve, ki jih je programer moral upoštevati pri načrtovanju programa.

Tako strojna obdelava kot samo zajemanje podatkov sta bila zelo kompleksna in naporna. Zaposleni v podjetju so določene podatke najprej zajemali v obliki obrazcev, ki so jih nato luknjači in luknjačice naluknjali na kartice. Ti so menda morali na mesec zluknjati do 300.000 kartic po normi 8700 udarcev na uro. Zelo naporno delo so dodatno oteževali nečitljivo ali nepravilno izpolnjeni obrazci, zaradi velike količine podatkov pa je bila tudi kvaliteta končnih podatkov pogosto dvomljiva. (PKZ/01, W/10b, W/10ba, WIKI/31, WIKI/32)

Računski stroj IBM 602. National Museum of Science and Industry of Catalonia, Terrassa. Fotografiral Antonio Moreno Sans (Z dovoljenjem)

UNIVAC 60/120

V Iskri, kjer so leta 1960 namestili enega izmed prvih elektronskih računskih strojev na principu vakuumskih elektronk pri nas UNIVAC 60/120, je delo potekalo podobno.

To je bil sistem sestavljen iz dveh strojev, računskega stroja Remington Rand 409 in enote za branje in luknjanje kartic. Uporabljal je Univac-ovo različico kartic, ki so imele 90×12 polj. Računska enota je imela za razliko od IBM-ove dve nadzorni plošči, ki ju je bilo možno preprosto zamenjati. Na eni se je določalo vhodno-izhodne operacije branja in luknjanja kartic, na drugi pa se je določal program obdelave na prebranih podatkih.

Enota za branje in luknjanje je omogočala napredno branje vseh polj kartice hkrati in izvajanje operacij na prebranih podatkih brez hkratnega hranjenja v akumulatorju računske enote. Računski stroj je lahko izvršil kar 40 programskih korakov, to število pa je bilo možno še občutno povečati z uporabo pogojnih programskih tehnik. Izvajal je vse štiri osnovne aritmetične operacije, hkrati pa je bilo v programu lahko uporabljenih kar 36 10-mestnih vrednosti. Rezultati operacij so se hranili v 12 akumulatorjih, ki so prav tako hranili 10-mestne vrednosti vključno s predznakom.

Programski koraki na tem računskem stroju so se za razliko od IBM 602-A že lahko izvajali po poljubnem vrstnem redu. Glede na določene lastnosti rezultata je na primer računalnik lahko nadaljeval program na poljubnem koraku, kar pomeni, da je bilo možno programirati pogojne korake in izvajati tudi nekakšne programske zanke. UNIVAC 60/120 je vsak rezultat tudi avtomatično preveril pred nadaljevanjem na naslednji korak. (65/08, W/10bb, WIKI/33)

.. zbral in sestavil Miha Urh

Sledi

Preden nadaljujemo obravnavo prvih računalnikov v Sloveniji s prispevkom o prvem velikem elektronskem računalniku v Jugoslaviji in prvem elektronskem računalniku jugoslovanske izdelave, bomo z naslednjo objavo še za trenutek spomnili na kratko a pomembno vmesno stopnjo prvih relejskih računalnikov in na edinstven način njihovega programiranja, ki predstavlja prvi korak v smeri modernih programskih praks.

Viri

W/01 : Columbia University Computing History (LINK) | W/02 : Herman Hollerith An electric tabulating system (LINK) | W/05 : The Computer museum reports 1975-1988 (LINK) | W/08 : CHM Computer History museum timelines (LINK) | W/09 : Bit by bit (LINK) | W/10 : Bitsavers (LINK) | W/10a : Introduction to IBM punched card data processing, IBM Flowcharting techniques, Joseph Levy Punched card cata processing, Robert Van Ness Principles of punched card data processing, IBM 80 column cards | W/10b : IBM 402, 403, 419, IBM 602, IBM CPC | W/10ba : IBM Functional wiring principles | W/10bb : Univac 60/120 Operating instructions, Univac 60/120 Programming | W/11 : Computer Collector | W/20a : Creatures of thought-The switch (LINK) | WIKI/01 : Unit record equipment, Tabulating machine, History of computing hardware | WIKI/06 : Herman Hollerith, List of IBM products, Puched card, Unit record equipment | WIKI/07 : Timeline of computing hardware -1950.. 1950-1960, Zuse Z22 | WIKI/10 : Digital computer, Digital signal, Digital data, Digital electronics, Binary data | WIKI/11 : Vacuum tube, ENIAC | WIKI/31 : IBM 402, 407, 421 + IBM 602 | WIKI/32 : Plugboard, Accumulator | WIKI/33 : Remington Rand Univac 60/120 | PKZ/01 : Prispevek k zgodovini uvajanja računalniških obdelav podatkov (LINK) | 65/08 : Iskra (1965, letnik 4, številka 1) (LINK)

Add Your Comment