Kävin
katsomassa Alan Turingin elämästä kertovan elokuvan ”Imitation
game”. Sen innostamana luin lopultakin Andrew Hodgesin maineikkaan
elämäkerran ”Alan Turing: arvoitus” (Terra Cognita, 2000).
Elokuva oli hyvä, vaikka se vetikin niin sanotusti mutkat suoriksi.
Joten siitä ei sen enempää (paitsi että on syytä korostaa, että
elokuvassa rakennettu koodeja murtava kone,"Bombe" ei ole maineikas ”Turingin
kone” - eikä Turing ole edes keksinyt sitä, vaan puolalaiset
matemaatikot). Sen sijaan tuo kirja, joka on kyllä raskasta
luettavaa, lumosi minut. Ja aivan erityksestä syystä.
Tähän
lumoukseen on kaksi syytä. Ensin se yksinkertaisempi. Kirjassa
Turing kohtaa urallaan, useimmiten henkilökohtaisesti, ne samat
legendaariset tiedemiehet, joiden ajatuksiin tutustuin itse
opiskellessani teknillisessä korkeakoulussa tietokonetekniikkaa,
säätötekniikkaa ja niihin liittyviä aineita 1970- luvun alussa.
Näitä henkilöitä olivat Ludwig Wittgenstein, David Hilbert, Kurt
Gödel, Bertrand Russell, Claude Shannon, Norbert Wiener ja John von
Neumann. Turingin uran aikana, karkeasti ottaen vuosina 1932- 1952 luotiin se
teoriapohja, jonka varaan syntyi meidän uusi aikamme, tietokoneiden,
automaation, viestinnän ja internetin aika. Turing ei suorastaan
tuottanut teorian läpimurtoja, mutta oli innokkaasti mukana, ja
julkaisi myös itse lukuisia teorioihin vaikuttaneita artikkeleita.
(Turingin koneeseen liittyvä teoria on kuitenkin poikkeus, ja siitä
kohta lisää). Tieteen edistykseen Turing toki vaikutti. Toisin kun
luullaan, tiede ei voi edistyä vain nimekkäiden tiedemiesten
oivallusten varassa. On olennaista, että samoista asioita
kiinnostuneet tutkijat kommentoivat, korjaavat, vastustavat ja
täydentävät heidän teorioitaan.
Kun itse
opiskelin samoja asioita noin 30 vuotta myöhemmin, kohtasin nuo
samat tutkijat ja heidän ajatuksensa. Jouduin siihen samaan
taikamaailmaan, jossa Turing vaikutti itse mukana, toimijana ja
pohtijana. Ja kun nyt luin Hodgesin kirjaa, sama lumouksen ja ihmeen
maailma palasi elävänä mieleeni.
Turingin
keskeinen saavutus, Turingin koneiden teoria, ei liittynyt niinkään
tietokoneisiin, vaan puhtaaseen matematiikkaan ja matematiikan
filosofiaan. Vuonna 1936 hän julkaisi artikkelin ”On computable
numbers...” (Luvuista, jotka voidaan laskea). Sen tausta on asioita
rankasti yksinkertaistaen seuraava. Hilbert tavoitteli matematiikan
täydellistä ja ristiriidatonta järjestelmää, ja uskoi, että
sellainen voidaan luoda. Gödel osoitti, että sellaista ei voi
olla. Aritmetiikka ei voi olla samalla sekä ristiriidaton että
täydellinen. Toinen kysymys on matemaattisten väittämien todistettavuus (Entscheidungsproblem). Todistuksessaan Gödel rinnasti väittämät reaalilukuihin. Avoimeksi jäi, voidaanko matemaattisen väitteen
mahdollinen todistettavuus osoittaa jollain mekaanisella prosessilla,
joka muodostuisi sarjasta täsmällisesti kuvattuja operaatioita,
vähän samoin kuin shakkipelissä noudatetaan tarkkoja sääntöjä
.**
Todistettavuusongelman ratkaisemiseksi Turing kuvitteli
mielessään yksinkertaisen koneen, joka laskisi väittämiä vastaavia reaalilukuja.
Sitten hän osoitti, että ei voida etukäteen päätellä, saadaanko
laskennasta jokin täsmällisesti määritelty tulos. Se tarkoittaisi, että kone ryhtyy tuottamaan reaalilukua eli päättymätöntä desimaalilukua. Entä miten voidaan havaita, että kone tulostaa reaalilukua, eikä tee jotain muuta? Riittää, että voidaan ajatella näin tapahtuvan: konehan on matemaattinen olio, eikä mikään oikea kone. Itse koneen
konstruktio, jota en lähde nyt selittämään, on täysin looginen ja aukoton - eikä se edes ole kovin mutkikas. Sen toimivuudesta ei siten jää mitään epäilystä.
Hyvin
harva pystyi aikanaan ymmärtämään Turingin artikkelia, mutta
vähitellen se herätti kasvavaa huomiota. Hänen kuvitteellista
laitettaan alettiin sanoa Turingin koneeksi. Artikkelissa oli myös
sivujuonne, joka herätti vähintään yhtä paljon huomiota.
Pitäisikö jokaista tutkittavaa väitettä varten rakentaa juuri
sitä tutkiva kone? Turing totesi, että voidaan rakentaa kone, joka
aluksi lukee sisäänsä ongelmaa ratkaisevan koneen kuvauksen, ja
alkaa sitten jäljitellä sitä. Tällaista konetta alettiin nimittää
universaaliksi Turingin koneeksi. Turingin artikkelin tiivistetty
tulos on siis: kaikki mitä ylipäätään voidaan laskea tarkasti, voidaan
laskea universaalilla Turingin koneella***.
On
toinenkin syy, miksi Hodgesin kirja lumosi minut. Se tuntuu kertovan
kummallisesta lainalaisuudesta, teorian ja käytännön mutkikkaasta
suhteesta. Tietokoneen kehitys ei nimittäin saanut vauhtia Turingin
tekemästä kehitystyöstä. Turing ajautui mukaan kehittämään ensimmäisiä
tietokoneita aivan toisesta syystä. Hänen sodan aikainen työnsä
salakirjoituskoodia murtavien koneiden parissa oli perehdyttänyt
hänet konkreettisella tavalla sähkömekaaniseen elektroniikkaan, ja
viimeisissä murtamiskoneissa (Colossus) kokeiltiin jo
elektroniputkia. Niistä saatiin hyviä kokemuksia, joten pian sekä
Britanniassa että Yhdysvalloissa alettiin suunnitella putkilla
toimivia laskukoneita, muun muassa tykistön ballististen taulukoiden
ja atomipommilaskelmien jouduttamiseksi.
Edellä kerroin, kuinka Turing
oli 10 vuotta aikaisemmin esittänyt universaalin koneen idean, se olisi laskeva kone,
jonka muistiin luettaisiin ensin sen toimintaa ohjaava koodi. Idean
toteuttamista tietokoneessa ei kuitenkaan esittänyt Turing, vaan toinen nero,
John von Neumann****. Siksi nykyisen kaltaisia tietokoneita sanotaan
joskus von Neumannin koneiksi. Turing alkoi suunnitella ACE- nimistä
elektronista tietokonetta, mutta hanke joutui vaikeuksiin. Hän
siirtyi turhautuneena Manchesterin yliopiston tietokoneprojektiin,
joka oli jo pitkällä. 500 elektroniputken demonstraatiokone (1948)
oli maailman ensimmäinen toimiva elektroninen ”von Neumann”
tietokone. Siitä kehittyi Mark I malli, jossa putkia oli jo 4000.
Turingissa yhdistyi abstrakti teoreettinen ajattelu ja hyvin
konkreettinen työtapa. Turing ei osallistunut vain teorian tasolla,
vaan laatimalla ja testaamalla konekielisiä ohjelmia, ja
rakentamalla ja korjaamalla elektronisia piirejä.
Teorian ja
käytännön mutkikkailla suhteilla on historiansa. Mekaaninen
laskukone voitaisiin helposti rakentaa hyvin konkreettista laskemisen
tarvetta varten pelkästään käsityötaidon varassa. Kuitenkin
varhaisen mekaanisiin hammaspyöriin perustuvan laskukoneen rakensi
matemaatikko Blaise Pascal vasta 1600-luvulla. 1700- luvulla
matemaatikko Gottfried Leibniz suunnitteli ehkä ensimmäisen
mekaanisen laskukoneen, joka pystyi kertolaskuun. Ehkäpä
konkreettinen työ ja mekanismien kanssa leikittely ei välttämättä
olekaan abstraktin ajattelun vastakohta, vaan jopa oudolla tavalla
sille sukua.
Teorian ja
käytännön suhde on kirjassa vieläkin monimutkaisempi. Turingin
koneen idealla on lähes käsittämätön matemaattinen voima - mutta
se vaikuttaa periaatteellisella tasolla, sillä ei ole juuri mitään
roolia arkipäiväisten ongelmien parissa. Ehkä tuon voiman
sokaisemina Turing ja hänen kollegansa antautuivat laajoihin
kybernetiikkaa ja tekoälyä koskeviin spekulaatioihin. He tuntuivat
olevan uskomattoman tietämättömiä edes kielitieteen tai
psykologian alkeista. Turing tosin selvitteli aivojen
neuronien määrää, ja päätyi jopa 10 miljardin solun arvioihin -
valtava kontrasti verrattuna sen aikaisten laskentakoneiden
kapasiteettiin: muutama tuhat muistipaikkaa tai elektroniputkea.
Siitä
huolimatta Turing uskoi tietokoneiden supervoimiin. Hän muotoili
kuuluisan Turingin testin. Ajatellaan suljettua huonetta, jossa on
joko tietokone tai ihminen, ja joka kommunikoi koneella
kirjoitettujen viestien kautta. Jos huoneen ulkopuolelta ei voida
päätellä, onko huoneessa tietokone vai ihminen, Turingin mukaan
voidaan sanoa että tietokone pystyy ajattelemaan. Turingin testiin
on vaikea suhtautua, mutta harva yhtyisi päätelmään tietokoneen
ajattelukyvystä, vaikka se onnistuisikin huijaamaan ulkopuolella
olijoita. Testin muunnelma on ”Searlen kiinalainen huone” (John
Searle on amerikkalainen filosofi). Nyt huoneessa istuu henkilö,
joka lukee huoneeseen sujautettuja kiinan kielellä kirjoitettuja
lappuja. Hän ei osaa kiinaa, vaan valitsee vastaukset suuresta
koodikirjasta. Kirja on niin laaja ja hyvin laadittu, että
vastaukset ovat järkeviä. Kysymys kuuluu: osaako tuo huone kiinaa?
Filosofiaan
taipuvat lukijat voivat huvitella pohtimalla, ovatko nämä testit
syvällisiä vai lapsellisia.
Palaan
vielä Turingin lumottuun maailmaan, sillä jouduin sinne uudelleen
ensimmäisessä työpaikassani Strömbergillä 1970- luvun
loppupuolella. Yhtiössä vallitsi suuri innostus tietokoneisiin. Se
oli jo suunnitellut ja rakentanut pienen sarjan järeitä Selco-1000
teollisuustietokoneita (kone muistutti pioneeriajan tietokoneita, se
käsitti useita kahden metrin korkuisia instrumenttikaappeja, joiden
etupaneelissa oli riveittäin värillisiä vilkkuvia lamppuja). Sen jälkeen siirryttiin niin sanottuihin minitietokoneisiin (sellainen painoi
kymmenkunta kiloa ja mahtui vaikka kirjoituspöydälle). Toteutimme
näillä koneilla teollisuuden automaatiojärjestelmiä. Laadimme
konekielisiä ohjelmia (tarkemmin sanoen symbolista konekieltä eli
assembleria). Alkuaikojen tietokoneiden tapaan ohjelmat syötettiin
koneisiin paperisilla reikänauhoilla. Työ oli laiteläheistä,
toisin sanoen tiesimme ja ymmärsimme pienintä yksityiskohtaa
myöten, mitä tietokoneessa ja sen oheislaitteissa sekä ohjattavissa
teollisuusprosesseissa tapahtui.
Mielenkiintoisin
vaihe alkoi, kun siirryimme käyttämään mikroprosessoreita - ne
olivat varsinaisiin tietokoneisiin verrattuina halpoja, pieniä ja
luotettavia. Tässä vaiheessa tapahtui useita kertoja, että teoria
ja käytäntö joutuivat ristiriitaan - ja useimmiten käytäntö
voitti. Ensimmäisen kerran se tapahtui, kun ehdotin esimiehelleni,
että myös oma ryhmäni alkaisi käyttää mikroprosessoria.
Strömberg oli jo valmistautunut, sillä se oli kehittämässä
mikroprosessoreihin perustuvaa teollisuusjärjestelmää
(tarvittaisiin mm. laskentayksiköitä, muistiyksiköitä ja
prosessisignaalien liittämiseen tarvittavia yksikköjä). Mutta
esimieheni selitti minulle, että mikroprosessori sopii vain hyvin
yksinkertaisiin tehtäviin, se olisi vähän niinkuin taskulaskimen
kaltainen laite. Sitä ei voisi käyttää vaativissa
automaatiosovelluksissa. En uskonut. Tutkin teknisiä dokumentteja ja
tein laskelmia. Huomasin, että mikro olisi jopa tehokkaampi kuin
käyttämämme minitietokone. Joten pienen väännön jälkeen sain
luvan käyttää mikroprosessoria. Ja käytäntö osoitti, että olin
oikeassa.
Seuraava
kriisi koski käyttöjärjestelmää. Minikoneissa oli yksinkertainen
reaaliaikakäyttöjärjestelmä, joka helpotti merkittävästi
ohjelmointia ja mahdollisti useiden ohjelmaprosessien samanaikaisen
ajon. Mutta mikroihin sellaista ei ollut saatavilla. Ehdotin taas
esimiehelleni, että tekisimme sen itse. Tällä kertaa hän oli
suorastaan kauhuissaan. Hän selitti, että se olisi lähes mahdoton
asia, se vaatisi vuosien työn, eikä ehkä edes onnistuisi
(tietokonetekniikan historiassa tunnettiinkin katastrofeiksi
muuttuneita käyttöjärjestelmäprojekteja). En saanut hänen
mieltään muuttumaan, joten menin takaisin toimistooni ja aloin
koodata sitä itse, ilman lupaa. Muutamassa viikossa se oli koodattu
ja testattu - muun työn ohessa. Se oli hyvä ratkaisu, ilman
käyttöjärjestelmää olisimme olleet todella pulassa.
Oli
toinenkin syy miksi käyttöjärjestelmä saattoi arveluttaa.
Akateemisessa tietokoneteoriassa prosessien vaihto-ongelma tunnettiin
niin sanottuna pahana ongelmana, sen mutkikkuus kasvoi rajusti
prosessien lisääntyessä. Mutta tiesin, että tarvitsisimme
enintään parikymmentä samanaikaista prosessia. Näin pienessä mittakaavassa prosessien vaihto ei vaatinut paljoakaan ylimääräistä laskentaa. Saatoin jättää
akateemisen tieteen ennustaman riskin huomiotta.
Viimeinen
kriisi liittyi muistin riittävyyteen. Tunnetun lainalaisuuden mukaan
ohjelmien koko pyrkii kasvamaan jatkuvasti. Siihen aikaan se ei ollut ongelma
ohjelmien kirjoittajille, mutta käyttämämme 8 bitin
mikroprosessorin muistialue oli rajoitettu. Olisimme voineet siirtyä
tehokkaampiin prosessoreihin, mutta siihen ei vielä ollut valmiutta.
Joten päätin tehdä virtuaalimuistin - ja tällä kertaa en edes
yrittänyt kysyä lupaa esimieheltä. Akateeminen tietokoneteoria
liitti virtuaalimuistiin ns. roskienkeruun, jota pidettiin niin ikään potentiaalisesti pahana ongelmana. Tarvittiin ohjelma, joka vapautti
käyttöön aiemmin varattuna olleita muistilohkoja. Toisaalta meidän
ohjelmiemme piti reagoida prosessista tuleviin signaaleihin lähes
välittömästi, ei ollut mahdollista jonottaa esimerkiksi muistin
vapautumista. Keksin kuitenkin toisenlaisen tavan tehdä virtuaalimuisti. Kävelin laitekehityksestä vastaavan Kari Matilaisen
toimistoon, ja selitin, että tarvitsemme muistiyksiköitä, jotka
voidaan aktivoida ja passivoida ohjelmakäskyllä. Samalle
muistialueelle voitaisiin silloin latoa rajattomasti muistia. Hän
piti ajatusta hyvänä, ja lupasi toimittaa tällaisia
muistiyksikköjä siihen mennessä kun me saamme niitä tarvitsevan
ohjelman valmiiksi. Lopuksi tein käyttöjärjestelmään pienen
muutoksen, joka vaihtoi prosessia vaihdettaessa myös sen käyttämän muistiyksikön. Ohjelmoijan ei tarvitsisi koskaan murehtia muistin riittävyyttä. Riitti, kun ohjelmistoa koottaessa tietokoneelle "kerrottiin", missä lohkossa kukin ohjelmaprosessi sijaitsee.
Koetan vetää yhteen, mitä olen
koettanut havainnollistaa. Teknologia ei välttämättä kehity
tieteellisen teorian vaikutuksesta. Usein teorioissa esiintyvät
periaatteelliset rajoitukset saattavat jopa hidastaa teknologian
kehitystä****. Toisaalta, kuten esimerkit mekaanisista laskukoneista
ja tietokoneiden alkuajoista osoittavat, teoria voi myös rohkaista
ja oikeuttaa käytännön kehitystyötä. Teknologiaan liittyvä
keskeinen teoriatausta myös muuttuu kehityksen myötä.
Tietokoneiden alkuaikoina tarvittiin Alan Turingin kaltaisia
matemaatikkoja löytämään ja muokkaamaan tietokoneiden
ratkaistaviksi soveltuvia tehtäviä. Tällä hetkellä
laskentateoriat ovat jääneet taustalle, ja tilalle on tullut
esimerkiksi koodausteoriaa, tiedon pakkauksen teoriaa ja
salakirjoituksen teoriaa.
Kohtasin työssäni vielä yhden Turingin taikamaailman piirteen. Koodeja murtava ryhmä toimi täysin autonomisesti, siinä ei ollut hierarkiaa eikä esimiessuhteita, vaan työt jaettiin kykyjen mukaan ja kaikki auttoivat toisiaan. Oma työympäristöni oli samanlainen, Samalla kun taistelimme teknisten ongelmien kimpussa, koetimme pitää huolta, että keksimämme uudet ratkaisut sopivat yhteen ja hyödyttivät koko yritystä. Johtajat eivät motivoineet eivätkä kannustaneet, vaan pysyttelivät poissa tieltä.
Hodgesin kirjan nimessä on sana
”arvoitus”. Selvästi se liittyy saksalaisen salakirjoituskoneen
koodin murtamistyöhön, missä Turingin rooli oli aivan keskeinen.
Koneen nimi ”Enigma” tarkoittaa arvoitusta. Mutta se voi viitata
myös Turingin persoonallisuuteen, joka oli vähintään
poikkeuksellinen. Myös Turingin itsemurha on arvoitus. Hän ei
vaikuttanut masentuneelta eikä itsetuhoiselta, mutta toisaalta hän
puhui itsemurhan mahdollisuudesta huolettomasti. On totta, että
Yhdysvalloissa levisi sodan jälkeen moraalinen paniikki, ja he
painostivat myös brittejä puhdistamaan homoseksuaalit ja muut
epäilyttävät henkilöt valtion palveluksesta. Turing suhtautui
avoimesti ja luontevasti seksuaalisuuteensa. Mutta epäilemättä
painostus tuntui, ja hän sai myös poikkeuksellisen kovan tuomion "seksuaalisesta perversiosta".
On myös mahdollista, että hänet murhattiin, vaikka selviä
viitteitä ei ole. Jostain syystä Turingin sodanaikainen työ
luokiteltiin myös sodan jälkeen äärimmäisen arkaluontoiseksi. Se
pidettiin täysin salassa 20 vuotta, ja kirjan mukaan se on edelleen
osittain salaista. Turingin homoseksuaalisuus, hänen
persoonallisuutensa, hänen älyllinen kapasiteettinsa ja lukuisat kontaktit ”epäilyttäviin”
henkilöihin saattoivat tehdä hänestä uhkaavan turvallisuusriskin.
Elokuvan
nimi ”Imitation game” eli ”jäljittelypeli” voisi viitata
ainakin kolmeen asiaan. Ensinnä se tuo mieleen Turingin testin,
missä tietokone yrittää jäljitellä ihmistä. Toiseksi, se voisi
viitata universaalin Turingin koneen toimintaan. Tuo konehan lukee
minkä tahansa muun koneen rakennekuvauksen, ja ryhtyy sitten
jäljittelemään sitä. Ja sitten sillä voidaan viitata siihen,
miten homoseksuaali selviytyy vihamielisessä ympäristössä. Pitää
jäljitellä ”tavallisia” ihmisiä. Mutta tällaisesta elämästä
Alan Turing ei itse piitannut. Hän oli avoimesti vain oma itsensä.
Jälkikirjoitus
Alan Turing oli harvinaisen monipuolinen ajattelija. Hänen ideansa "universaalista Turingin koneesta" vaikutti ratkaisevasti nykyaikaisen tietokoneen keksimiseen. Hän vaikutti vahvasti tekoälyn (AI) tutkimuksen käynnistämiseen 1950- luvulla. Hän pohti myös, miten kemialliset prosessit voisivat saada aikaan epäorgaanisten aineiden järjestäytymisen symmetrrisiksi muodoiksi, kuten tähdiksi, nauhoiksi ja spiraaleiksi. Vuonna 1952 hän julkaisi artikkelin "The chemical basis of morphogenesis" (muotojen syntymisen kemiallinen perusta). Sitä pidetään yhtenä teoreettisen biologian perusteoksena.
*) Jos
lukija ei ole perehtynyt matematiikkaan ja logiikkaan, voi olla
valaisevaa lukea hieno sarjakuvaromaani ”Logicomix” - se on myös
suomennettu (Avain 2010). Siinä seikkailevat nämä Alan Turingin
tärkeät kollegat - myös Turing mainitaan sen liiteosassa.
**) Tämä
kuvaus on epätarkka, eikä se pysty valaisemaan hyvin vaikeaa ja
syvällistä ongelmaa. Yllä mainittu ”Logicomix” johdattelee
siihen kansantajuisesti.
***)
Nykyiset tietokoneet ovat pääasiassa niin sanottuja von Neumann-
koneita ja sen muunnelmia. Loogisesti ne vastaavat täysin
universaalia Turingin konetta - paitsi että jälkimmäisessä on
ääretön muisti. Oikeassa tietokoneessa sellaista ei tietenkään
voi olla.
****) John von Neumann kirjoitti vuonna 1945 raportin "First Draft of a Report on the EDVAC", jossa kuvataan yleiskäyttöisen tietokoneen rakennetta. Turingin nimeä ei siinä mainita, mutta raportin keskeinen idea oli peräisin Turingin vuoden 1936 artikkelista "On computable numbers". Von Neumannin raporttia ei julkaistu, mutta sen kopiot kiersivät asiantuntijoiden keskuudessa. Sen takia tietokonetta ei koskaan voitu patentoida.