Saisinko tietokoneen rakennettua muinaisuudessa?
Artikkeli on alun perin julkaistu Skrollissa 2013.2.
Kuvitellaan, että joudut yhtäkkiä satoja vuosia ajassa taaksepäin. Saat jotenkin järjestettyä itsellesi suhteellisen mukavan elämän, mutta elämän tarkoitus puuttuu — nimittäin tietokone. Saisiko sellaisen rakennettua?
Nykyaikaiset tietokoneet ovat mikropiireihin perustuvia sähkölaitteita. On siis turhankin helppo olettaa, ettei tietokonetta pysty rakentamaan, ellei ensin ole kehitetty valtavaa määrää erilaisia välineitä ja tekniikoita eri elektroniikkakomponenttien valmistamiseen. Näin lohduttomasti asiat eivät sentään aikamatkaajalle ole. Ohjelmoitavan tietokoneen pystyy nimittäin aivan hyvin rakentamaan myös karkeammilla tekniikoilla, joita on ollut käytössä jopa vuosituhansien ajan.
Saksalaisinsinööri Konrad Zuse rakensi 1930-luvulla vanhempiensa olohuoneeseen ohjelmoitavan laskukoneen, joka tunnetaan nykyisin nimellä Z1. Se luki käskynsä reikänauhalta ja teki niitä noudattaen peruslaskutoimituksia 22-bittisille liukuluvuille. Lukuja pystyi tallentamaan työmuistiin, lukemaan käyttäjältä ja tulostamaan. Kaikki tietokoneen perusedellytykset siis löytyivät. Aikamatkaajan kannalta mielenkiintoinen piirre Z1:ssä on se, että se oli täysin mekaaninen: ainoa sähköinen osa oli sähkömoottori, joka piti koneistoa käynnissä.
Zuse rakensi Z1:n koneiston 30 000 ohuesta metalliliuskasta, jotka hän leikkasi kuviosahalla. Erimuotoisia liuskoja yhdistämällä hän pystyi rakentamaan loogisia portteja, joiden osat liikkuivat kahden mahdollisen asennon välillä muiden osien asennoista riippuen. Monimutkaisinkin binäärilogiikka perustuu pohjimmiltaan muutamaan erilaiseen loogiseen porttiin, joten liikkuvilla metallilevyillä pystyisi periaatteessa toteuttamaan mekaanisen vastineen mistä tahansa tietokoneesta.
Pikkutarkkaa mekaniikkaa osattiin rakentaa jo antiikin Kreikassa. Tähtitaivaan liikkeitä mallintanut Antikytheran kone perustui kolmeenkymmeneen pronssiseen rattaaseen, joista suurimmassa oli peräti 223 hammasta. Kreikkalaiset rakensivat myös automaattiteattereita, itseavautuvia ovia, kolikkoautomaatteja, höyrykoneita ja muita taianomaisia laitteita. Etenkin ensimmäisellä vuosisadalla elänyt Heron Aleksandrialainen kunnostautui hyödyttömien mutta hyvin kekseliäiden vempaimien luomisessa. Vaikuttaa siis selvältä, että kreikkalaiset olisivat pystyneet rakentamaan Z1:n, jos heille olisi annettu sen piirustukset. Koneen suunnittelu ei sen sijaan olisi onnistunut ilman symbolista algebraa ja binäärijärjestelmää, jotka saapuivat Eurooppaan vasta toisella vuosituhannella.
Rattailla vai vivuilla?
Metalliliuskoilla toteutettu binäärilogiikka on vain yksi monista tekniikoista, joiden varaan aikamatkaaja voi rakentaa tietokoneensa. Esimerkiksi pyöriviä rattaita ja askelrumpuja kannattaa myös harkita alkeisosiksi, sillä useimmat mekaaniset laskimet perustuvat niihin. Askelrummun (Staffelwalze) kehitti alkujaan Gottfried Leibniz 1600-luvulla omaa laskintaan varten.
Rattaita olisi käyttänyt myös englantilaismatemaatikko Charles Babbagen 1830-luvulla suunnittelema Analyyttinen kone, joka olisi valmistuessaan ollut maailman ensimmäinen ohjelmoitava tietokone. Se voisi periaatteessa toimia myös aikamatkaajan koneen mallina, kunhan sen rakennetta ei jäljittele turhan orjallisesti. Projekti kärsi nimittäin suuruudenhulluudesta: esimerkiksi muistiin olisi pitänyt mahtua peräti tuhat 40-numeroista desimaalilukua, kun Zusellekin riitti vaivaiset 64 muistipaikkaa.
Vaikka Analyyttinen kone ei valmistunutkaan, Babbagen vaatimattomampi idea eli differenssikone muotoutui toimiviksi laitteiksi jo 1800-luvulla. Ruotsalainen Per Georg Scheutz rakensi differenssikoneestaan puisen prototyypin vuonna 1843 ja sai kaupaksi myöhemmin kaksi metallista versiota. Differenssikoneet eivät kuitenkaan ole ohjelmoitavia tietokoneita, vaan ne sopivat vain funktiotaulukoiden tuottamiseen. Toinen samalla vuosisadalla kehitetty tietokoneen esi-isä oli reikäkorttikone, jota käytettiin Yhdysvaltain vuoden 1890 väestönlaskennassa.
Tietokoneen fyysisenä perustana voi käyttää myös esimerkiksi köysiä, vieriviä kuulia tai pneumatiikkaa. Jos aikamatkaaja päättää keksiä sähkön, hän voi rakentaa releitä, elektroniputkia ja ehkä jopa puolijohdediodeja ja -transistoreita. Optisen tietokoneen toteuttamiseen tarvitsee sen sijaan melko varmasti laseria, joten sen voinee suosiolla unohtaa.
Ne, jotka haluavat kuivaharjoitella mekaanisen tietokoneen rakentamista ennen varsinaista aikamatkaa, voivat käyttää vaikkapa Lego-palikoita. Edellä mainitut Antikytheran kone ja Babbagen differenssikone on saatu toteutettua legoilla, ja brittiläinen legoharrastaja ”Random Wraith” on rakentanut niistä myös loogisia portteja. Kokonaista ohjelmoitavaa tietokonetta ei sen sijaan kukaan liene vielä saanut aikaiseksi.
Yksinkertaisesta monimutkaiseen
Oli tietokoneen fyysinen ja teoreettinen perusta millainen hyvänsä, kannattaa se aina rakentaa abstraktiotaso kerrallaan. Ensimmäisessä vaiheessa kehitetään riittävä valikoima yksinkertaisia ja luotettavia alkeiselementtejä, esimerkiksi loogisia portteja. Toisessa vaiheessa näistä alkeiselementeistä rakennetaan hieman monimutkaisempia kokonaisuuksia, esimerkiksi muisti- ja yhteenlaskuelementtejä. Taso tasolta monimutkaisempiin yksiköihin edeten saadaan lopulta kokoon ohjelmaa suorittava kone, minkä jälkeen mahdolliset korkeammat abstraktiotasot voidaan toteuttaa ohjelmallisesti.
Yksinkertaisin looginen portti on NOT-portti, joka ottaa sisään yhden bitin (0 tai 1) ja antaa ulos vastakkaisen bitin (1 tai 0). Kuvassa 1 on esitetty Zusen Z1:n käyttämän NOT-portin toiminta. Porttiin sisään menevä bitti määräytyy sen mukaan, onko ylin levy ylä- vai ala-asennossa. Vasemmanpuoleisen levyn asento osoittaa ulostulevan bitin. Oikeanpuoleinen levy on tarkoitettu tahdistukseen, jota ilman portti ei anna tulosta. Mekaaniset osat vaativat huolellista tahdistusta toimiakseen kunnolla yhdessä, joten tahtibittiä ei missään nimessä kannata optimoida pois.
Toinen Zusen käyttämä portti oli OR (kuva 2), joka ottaa kaksi bittiä. Ulos tulee nolla, jos molemmat sisään tulevat bitit ovat nollia, ja muussa tapauksessa ykkönen. Binäärilogiikan toteuttamiseen riittää periaatteessa yksi ainoa porttityyppi (NAND tai NOR), mutta valikoiman kannattaa olla hieman laajempi, jotta koneen saa pienemmäksi. Esimerkiksi XOR-portti on hyvin käyttökelpoinen yhteenlaskupiireissä.
Jos halutaan laskea yhteen kaksi mielivaltaista binäärilukua, tarvitaan summaimeksi kutsuttu elementti (kuva 3), joka ottaa kolme bittiä (A, B ja C) ja antaa niiden summan kaksibittisenä (D ja E). Summan ylemmän bitin (D) voi ohjata toisen summaimen sisääntuloon, jolloin esimerkiksi kahdeksasta rinnakkaisesta summaimesta voidaan ketjuttaa kahden 8-bittisen luvun yhteenlaskupiiri (kuva 4).
Kuva 3: Summain, joka laskee yhteen kaksi binäärilukua.
Kuva 4: Summainketju, joka laskee yhteen kaksi 8-bittistä lukua.
Pitkä summainketju ei kuitenkaan ole välttämätön. Esimerkiksi ensimmäinen suomalainen tietokone, ESKO (Elektroninen SarjaKOmputaattori), suoritti yhteenlaskut bitti kerrallaan yhtä summainta käyttäen. Myös PDP-8 -minitietokoneen pienin ja hitain malli toimii näin. Zuse ei kuitenkaan lähtenyt edes Z1:ssä tällaiseen nuukailuun.
Alkeet voi toteuttaa liikkuvien levyjen sijaan myös pyörivillä akseleilla ja rattailla, mikä saattaa olla jopa kannattavampi ratkaisu. Pyörimiseen perustuvassa logiikassa kannattaa Random Wraithin havaintojen mukaan käyttää alkeisoperaatioina pyörimismäärän summaa, erotusta, puolitusta ja itseisarvoa. Näistä analogisista operaatioista voi rakentaa melko yksinkertaisesti digitaalisia piirejä – niin loogisia portteja kuin binäärisummaimiakin.
Muistit ja puskurit
Toimiva tietokone tarvitsee laskentaelementtien lisäksi tallennustilaa laskutuloksille. Z1:ssä oli tätä varten kaksi rekisteriä, R1 ja R2, ja 64 muistipaikan RAM-muisti. Laskutoimitukset tehtiin aina kahden rekisterin välillä, ja tulos tallennettiin jompaankumpaan. Muistin käsittelyyn oli omat käskynsä, jotka kopioivat dataa rekistereistä muistiin ja takaisin.
Z1:n RAM-muistissa kutakin bittiä vastasi pieni metalliliuska, jonka asentoa muutettiin. Liuskat oli asetettu ruudukoksi, jota ympäröi valitsinmekaniikka. Kolme valitsimelle annettua bittiä valitsi tasolta yhden kahdeksasta rivistä ja toiset kolme yhden kahdeksasta sarakkeesta. Näin luku ja kirjoitus saatiin kohdistettua yhteen tason liuskaan kerrallaan. Muisti rakennettiin 22:sta tällaisesta bittitasosta, joita käytettiin samanaikaisesti.
Nykyaikaiset tietokoneet ajavat ohjelmansa RAM-muististaan, mutta Z1 luki käskynsä suoraan reikänauhalta, joka oli melko suosittu tallennusväline varhaisvuosikymmenten tietotekniikassa. Sekä reikänauhaa että reikäkorttia on kuitenkin käytetty erilaisten mekaanisten laitteiden toiminnan ohjaamiseen jo 1700-luvulta alkaen. Posetiiveissa ja soittorasioissa on käytetty myös mekaanista rumpumuistia, jolle voisi tietokonekäytössä tallentaa esimerkiksi mikro-ohjelman, joka toteuttaa koneen varsinaisen käskykannan.
Käskykanta
Z1:n käskykantaan kuuluivat aritmeettiset käskyt, muistinkäsittelykäskyt ja lukujen syöttö- ja tulostuskäskyt. Ongelmana oli kuitenkin hyppykäskyjen puute. Silmukat piti toteuttaa joko kirjoittamalla ne auki tai teippaamalla nauhan alku- ja loppupää yhteen. Oman koneen käskykantaa ei siis kannata suunnitella Z1:n kaltaiseksi, sillä kehittyneempiäkin esikuvia on tarjolla.
Yleiskäyttöisen tietokoneen saa periaatteessa jopa häkellyttävän yksinkertaiseksi. Esimerkiksi monet soluautomaatit ovat Turing-täydellisiä. Tietokoneeksi riittäisi siis teoriassa laite, joka kelaa muistinauhaa ympäri loputtomiin ja muuttaa kunkin muistipaikan tilaa edellisten solujen tilojen pohjalta. Käytännössä tällainen kone olisi etenkin mekaanisena äärimmäisen hidas ja vaivalloinen, eikä siitä olisi paatuneimmallekaan idealistille kuin teoreettista iloa.
Monet alkeiskomponenteista asti tietokoneita rakentaneet harrastajat ovat päätyneet käyttämään PDP-8-minitietokoneen käskykantaa sen yksinkertaisuuden vuoksi, joten se voisi olla hyvä lähtökohta myös mekaaniselle tietokoneelle. Muita mahdollisia esikuvia voisivat olla Data General Nova, TMS1000, RCA 1802 ja MOS 6502. Korkeamman tason eleganssia kaipaavat voivat kehittää vaikkapa Forth-tyylisen pinopohjaisen käskykannan.
Keksisinkö sittenkin sähkön?
Mekaanisilla tietokoneilla on omat rajoitteensa. Vaikka sellaisen pystyisikin saamaan täysin luotettavaksi, on se moniin mielenkiintoisiin tehtäviin toivottoman hidas. Nopeimmat sähkömekaaniset tietokoneet ovat pystyneet noin kymmeneen yhteenlaskuun sekunnissa, joten tämän kummempaa suorituskykyä ei voi odottaa täysmekaanisiltakaan. Jo elektroniputkiin siirtymällä saadaan nopeus kuitenkin jopa monituhatkertaistettua.
Sähkön keksiminen voi olla aikamatkaajalle muutenkin kannattavaa. Sähkö mahdollistaa esimerkiksi lennättimen ja radion, jotka voivat antaa yhdelle jos toisellekin sotahullulle muinaishallitsijalle huomattavan etuaseman naapureihinsa nähden. Kun aikamatkaaja on viestintätekniikkaa myymällä päässyt hallitsijoiden suosioon, on hänellä hyvät edellytykset myös tietokoneen rakentamiseen.
Ensimmäinen sähkölaite, jonka aikamatkaaja ehkä haluaa tehdä, on paristo. Hänellä saattaa nimittäin hyvinkin olla mukanaan esimerkiksi matkapuhelin, joka on jo taustavalonsa vuoksi muinaisihmisille aivan uskomaton taikaesine. Sitä on siis hyvä päästä lataamaankin välillä, jotta taikavoiman eduista pääsee nauttimaan mahdollisimman pitkään. Elektrolyyttinä voi käyttää esimerkiksi hapankaalia, pihlajanmarjoja, sitrushedelmiä tai etikkaa. Lisäksi tarvitaan kahta erilaista metallia anodiksi ja katodiksi. Johdinten ja liittimen askarteluun kannattaa pyytää taitavan sepän apua.
Generaattorien, muuntajien ja releiden rakentamiseen riittävät käsityötaidot ovat olleet olemassa jo satoja vuosia, mutta fysiikan ymmärrys ei riittänyt laitteiden keksimiseen ennen 1800-lukua. Elektroniputken valmistaminen taas onnistunee lasin, metallin ja eristyksen osalta perinteisillä käsityötaidoilla, mutta riittävän tyhjiön saaminen putken sisään voi koitua ongelmaksi. Jonkinlaisia tyhjiöpumppuja tunnettiin jo antiikin aikaan, mutta putkitietokoneita havitteleva aikamatkaaja joutuu todennäköisesti kehittämään paremman tyhjiöntekotavan. Puolijohdekomponenteista kiinnostunut saattaa puolestaan joutua käyttämään jopa vuosikymmeniä tarvittavien prosessien kehittämiseen ennen kuin pääsee rakentamaan tietokonetta.
Kuinka oikeutan luomukseni?
Riittävän kyvykäs ja onnekas aikamatkaaja pystyisi siis todennäköisesti rakentamaan tietokoneen keskiajalla tai aiemminkin. Mutta kuinka muu maailma suhtautuisi moiseen vekottimeen?
Tekniikan ja taikuuden rajat olivat melkoisen häilyvät ennen valistusaikaa. Antiikin Kreikassa monimutkaisista koneista olivat kiinnostuneet lähinnä temppelit, jotka kilpailivat keskenään ja tarvitsivat siksi erilaisia ”ihmeitä” vetonauloikseen. Italialaistiedemies Giambattista della Porta taasen vakuutteli 1500-luvulla teoksessaan Magiae Naturalis, että oikea kunnon magia perustuu luonnontieteisiin eikä sisällä mitään henkiolentoihin liittyvää. Aikamatkaajan on siis varauduttava siihen, että tiede, teknologia ja sarvipäisten pirujen kutsuminen ovat yhtä ja samaa noituutta valtaosalle ihmisistä.
Tietotekniikan tärkeyttä ei myöskään kannata yrittää perustella järkiperäisesti. Suurin osa nykyihmisistäkään ei tajua yleisen tietojenkäsittelyn ideaa, sillä tietokoneet ovat heille pelkkiä sovelluskokoelmia. Idean vaikeutta kuvaa sekin, että alan pioneerien on aina ollut vaikea saada ideoilleen hyväksyntää. Leibnizin rakennettua toimivan laskukoneen kukaan ei jatkanut hänen työtään sataan vuoteen. Babbagen ideaa aivotyön automatisoinnista ei tajuttu, vaikka ruumiillista työtä automatisoitiin jo kovaa vauhtia. Edes 1970-luvulla tietokonefirmojen pomot eivät uskoneet, että kotitietokoneille olisi markkinoita.
Aikamatkaaja tuskin siis tapaa elämänsä aikana kovinkaan monia, joille pystyisi suurella vaivallakaan selittämään tietokoneen ideaa. Jotta tietokone ei jäisi pelkäksi henkilökohtaiseksi salaprojektiksi, on aikamatkaajan yritettävä myös muokata kulttuuria vastaanottavaisemmaksi sille. Yksi ratkaisu voisi olla filosofiksi ryhtyminen. Oppirakennelmiin voi ujuttaa viittauksia ”ajatteleviin koneisiin” ja tietojenkäsittelyn teoriaan. Mikäli aikakauden ilmapiiri on turhan ahdasmielinen, ei radikaaleimpia ajatuksiaan kuitenkaan kannata kirjoittaa julki vaan tuoda ne esiin vain salaseurojen kokouksissa.
Mikäli aikamatkaaja joutuu menneisyyden sijaan tulevaisuuteen, jossa ihmiskunta on ottanut huiman teknologisen takapakin, on hänellä yksi oleellinen etu. Jos ihmisiä nimittäin on vielä olemassa, heillä on nykytekniikasta jäljellä ainakin jonkinlaista perimätietoa ja sitä kautta edellytyksiä sen hahmottamiseen. Uuskivikauden heimosoturi saattaa siis hyvinkin olla vastaanottavaisempi tietokoneen idealle kuin antiikin filosofi.
Tietotekniikan historiaa kerrotaan usein insinöörinäkökulmasta: mekaanisista osista on siirrytty tyhjiöputkien kautta transistoreihin ja niistä aina vain tiheämpiin mikropiireihin. Ajatusleikkimme osoittaa kuitenkin, että kulttuurin kehitys on ollut vähintäänkin yhtä tärkeää. Ihmiskunnan on pitänyt käydä läpi monta ajattelun murrosta, ennen kuin tietokoneen idea pääsi edes muodostumaan. Tietokone olisi siis ollut keskiajalla täysin anakronistinen käsittämättömyys riippumatta siitä, olisiko se rakennettu puusta vai kaukaisen tulevaisuuden komponenteista.
Ajatusleikin voi myös kääntää ympäri: jos keskuuteemme tulisi aikamatkaaja satojen vuosien päästä tulevaisuudesta, millaisina hän kokisi 2010-luvun tekniikan mahdollisuudet? Saisiko hän jo siitä aikaiseksi jotain meille täysin käsittämätöntä ja mullistavaa, vai katsoisiko hän viisaammaksi kehittää esimerkiksi nanoteknologiaa tai kvanttitietotekniikkaa eteenpäin ennen ihmekeksintönsä toteuttamista?
Teksti: Ville-Matias Heikkilä
Kuvat: Ville-Matias Heikkilä, Oona Räisänen, Wikimedia Commons (Bruno Barral)