tiistai 29. lokakuuta 2019

Toivon kirjallisuutta: solarpunk

Helsingin kirjamessuilla törmäsin uuteen kirjallisuuden lajiin: solarpunk. Siis, minulle se oli uusi, sillä sana on kuulemma ollut käytössä jo kymmenisen vuotta. Se tarkoittaa erästä spekulatiivisen fiktion tai tieteiskirjallisuuden lajia. Joskus tieteiskirjallisuus jaotellaan dystopia- ja utopiakirjallisuuteen. Solarpunk lukeutuu pikemminkin utopiagenreen. Se lähtee tosin uhkaavasta katastrofista eli oman aikamme ympäristökriisistä ja ilmastonmuutoksesta, mutta pyrkii tutkimaan fiktion keinoin positiivisia ratkaisuvaihtoehtoja. Tieteiskirjallisuuden perinteen mukaisesti tiede ja teknologia ovat nytkin vahvassa roolissa, mutta myös sosiaaliset ja yhteiskunnalliset innovaatiot ovat tärkeitä. 
 
Solarpunk muistuttaa tieteiskirjallisuuden vanhasta perinnöstä. Se on valistavaa, yhteiskunnallista ja poliittista. Toki tieteiskirjallisuuteen on aikaa myöten kehittynyt myös pulp-variaatioita, jotka ovat leimanneet lajin julkisuuskuvaa. Siihen kuuluvat tähtilaivat, sädepyssyt, mulkosilmäiset avaruushirviöt ja kirkuvat kaunottaret. Toistaiseksi solarpunk on aika vakavaa, koska se on uusi lajityyppi, ja koska sen taustalta löytyvä yhteiskunnallinen ja globaali missio ovat niin ahdistavia ja vakavia. 

Tosiasiassa solarpunk positiivisena ekofiktiona ei ole mikään uusi asia. Sen juuret ulottuvat aina 1800-luvulle asti. Ihmisen hämmästyttävä mielikuvitus on osannut ennakoida myös epämiellyttäviä tulevaisuuden maailmoja ja visioida myös ongelmien ratkaisuja. Erona on vain, että meidän maailmassamme luonnon tuhoutuminen ja ilmastokriisi eivät ole kuviteltuja tulevaisuuden uhkia, vaan päällemme vyöryvää todellisuutta. Uutta on kuitenkin tuo nimi, solarpunk.. Se on hauska esimerkki siitä, kuinka keksitty sana voi jäädä elämään ja päästä laajaan käyttöön. 
 
Solarpunk- sana esiteltiin blogikirjoituksessa vuonna 2008, ja se oli tavallaan osa ekologista heräämistä ja ympäristöliikettä. Ehkä termin menestys ei ole aivan sattumaa, sillä se kytkeytyy vahvasti sitä edeltäviin virtauksiin. Kyberpunk esitteli synkän, uusimpaan digitaalaiseen teknologiaan perustuvan dystooppisen ja anarkistisen tulevaisuuden. Termi esiteltiin maailmalle vuonna 1986 ilmestyneessä Bruce Sterlingin kyberpunk-antologiassa Mirrorshades (suom. Peililasit)

Kyberpunkista kehittyi pian uusi variaatio, steampunk. Sen eräänä liikkeellepanijana oli William Gibsonin ja Bruce Sterlingin vuonna 1990 julkaisema kirja Difference Engine. Kirjan ja koko tyylisuunnan innoittajana oli Charles Babbagen 1800-luvun puolivälissä kehittelemä mekaaninen laskukone, differenssikone (katso kirjoitus JosephJacquardin muotokuva). Koneen täysikokoisen versio olisi toiminut höyrykoneen voimalla, mutta konetta ei koskaan saatu valmiiksi. Steampunk kääntää kyberpunkin idean nurin. Se luo dystooppisen tulevaisuuden, jonka esikuvana on viktoriaanisen ajan Lontoo, ja jota hallitsevat elektroniikan ja tietokoneiden asemasta mekanismit ja höyryvoima. 
 
Tieteiskirjallisuus jaotellaan usein utopioihin ja dystopioihin. Toisenlainen jaottelu voisi olla: antiteknologinen tai äärimmäisen teknologinen. Hyvin yleinen antiteknologinen teema on enimmäkseen visio, jossa teknologinen yhteiskunta on syystä tai toisesta romahtanut. Seurauksena ei kuitenkaan ole onnellisuuden tila, vaan jatkuva kärsimys ja diktatorinen pakkovalta. Romahduksen syy voi olla ulkoinen, ydinsota tai ympäristömuutos, mutta romahdus voi aiheutua myös jäykästä harvainvallasta. Tällä viitataan selvästi viimeisiä aikoja eläneen Neuvostoliiton tilanteeseen. Siellähän oli havaittavissa teknologisen osaamisen ja infrastruktuurien taantuminen. 
 
Jos ajattelemme, että solarpunk on nimenomaan positiivista ympäristöfiktiota, se on kirjallisen dramaattisen rakenteen kannalta ongelmallista. On paljon helpompaa rakentaa koukuttavaa ja jännittävää fiktiota negatiivisen kautta: sodat, uhat, sorto, kärsimys ja katastrofit muodostavat helpon puitteen sankarilliselle toimintaviihteelle. Positiiviset utopiat ovatkin lähes aina kuolettavan tylsiä. Tavallisempi kirjallinen rakenne on lähteä utopiasta, ja paljastaa sen pimeä puoli, tai nostaa esiin ihanneyhteiskunnan sisäisiä kriisejä. Utopia ja dystopia näyttävät usein olevan saman kolikon kaksi puolta.

Johtuneeko lajityypin tylsyydestä, että en muista edes lukeneeni varsinaista 2000- luvun solarpunkkia. Toisaalta jonkun lajityypin puhtauden pohtiminen on jokseenkin joutavaa ja akateemiselta haiskahtavaa puuhastelua. Hyvä kirjallisuus ei anna määritelmien kahlita itseään eikä se piittaa genrerajoista. Kiinnostavampaa on minusta katsoa, millaisia tilanteita ja ratkaisuja villisti ideoita tuottava tieteiskirjallisuus voisi tarjota. 
 
Joten aloitan kirjallisuudesta, joka voisi olla solarpunkkia teemansa kautta. Iain M. Banksin kulttuuri- sarjan kirjat kertovat ääriteknologisesta yhteiskunnasta, joka on ratkaissut sekä ympäristökysymykset että sosiaaliset kysymykset teknologialla. Kulttuurin asukkaat elävät eräänlaisessa kommunistisessa utopiassa, jossa teknologia tyydyttää kaikki tarpeet, takaa äärimmäisen yksilönvapauden, tarjoaa jokaiselle lähes ehtymättömät resurssit ja suojelee kansalaisiaan vaaroilta. 
 
Miten voidaan toteuttaa samanaikaisesti näin ristiriitaisia tavoitteita? Banks vastaa,että kunhan teknologia on riittävän kehittynyttä, se kyllä onnistuu. Kuvatut ratkaisut ovatkin sekä loogisia että varsin viihdyttäviä. Kirjojen koukuttavuus johtuu kahdesta asiasta. Ensinnä, kaikki galaksimme asukkaat ja yhteisöt eivät ole kulttuurin jäseniä. Konfliktit ulkopuolisten kanssa ja niiden säätely ovat kirjan keskeisimpiä teemoja. Toinen näkökulma, jota kirja kirjalta varovasti raotetaan on, että kulttuurilla saattaa sittenkin olla myös pimeä puoli.

Miten realistisia Banksin ratkaisut ovat? Voidaanko teknologian tarjoamilla rajattomilla resursseilla ja kyvykkyyksillä ratkaista ihmiskunnan ympäristö- ja materiaalikriisi? Koetan vastata teknologian asiantuntijana ja parhaan ymmärrykseni pohjalta. Materiaalinen teknologia on vahvasti sidoksissa fysiikkaan ja luonnonvakioihin. Esimerkiksi aineen lujuus, sulamispiste ja kovuus on sidoksissa atomien elektroniverhoon ja sähkömagneettisten voimien suuruusluokkaan. Kentät, joilla Banksin kirjoissa on iso rooli, ovat hankalia hallita. Tässä on mukana sekö laskennallinen vaikeus että kenttien hallinnassa välttämättömät aineelliset struktuurit. Toisaalta esimerkiksi 5G- teknologia tulee yllättävän lähelle Banksin kuvaamaa globaalin kommunikaation toiminnallisuutta. 
 
Banks vastaa teknologiseen haasteeseen myös tekoälyn avulla. Monet asiat ovat vaikeita ja ymmärryksemme ulkopuolella, mutta tekoälyn avulla ongelmia voi ratkaista. Idean takana on teoria tekoälyn kaikkivoipaisuudesta. Kun tekoäly on pelkkää abstraktia matematiikkaa, sillä ei ole juurikaan rajoja. Tähän en kuitenkaan voi uskoa. Tekoälyn rajoitteet ovat loogisia ja todellisia, vaikka niitä ei ole sidottu materiaan. Lisäksi on myös materiaalisia rajoitteita: muistitila, tiedon käsittelynopeus ja valon nopeus. Ohitan nyt kvanttilaskennan. Kvanttitietokone on ennen pitkää totta, mutta sekään ei ole kaikkivoipa, sillä on vain hieman erilaisia rajoituksia, eräät hyvinkin jyrkkiä.

Banks toki ymmärtää teknologian rajoitukset. Hän ratkaisee ne siirtämällä tehoa, aikaa ja tilaa vaativat operaatiot tapahtumaan hyperavaruudessa. Pidän ratkaisua hyvin spekulatiivisena, vaikka se pelastaakin kirjojen logiikan. Kaiken kaikkiaan suhtaudun skeptisesti teknologian kaikkivoipaisuuteen, mutta en suinkaan teknologiaan sinänsä. Erityisesti materiaalitekniikka on todellinen runsaudensarvi, vain pieni osa sen mahdollisuuksista on käytössä. Myös sekä Iain M. Banks että kyberpunk-kirjailija William Gibson hehkuttavat materiaalitekniikan puolesta. 
 
Materiaalitekniikkaan nojaava teknologia tarjoaa riittävät resurssit ratkaista energian saanti, ilmaston lämpeneminen ja saastumisongelma, itse asiassa hyvinkin nopeasti. Tämä kysymys onkin lähinnä poliittinen - eikä se ole ollenkaan pieni ongelma. Tieteiskirjallisuus on käsitellyt tätäkin aihetta. Onko ratkaisun avain esteetön kapitalismi jossain muodossa - tai sitten jotain muuta,  oikealla tavalla toteutettu ja ehkä teknologisesti tehostettu pakkovalta tai demokratia. 
 
Walesilainen tieteiskirjailija Alastair Reynolds on tunnettu monipuolisesta kovan linjan tieteiskirjallisuudesta, jossa on myös fantastisia aineksia - mutta onneksi aika vähän. Solarpunkkia lähelle tulee kirja Muistoissa sininen maa (2012). Siinä ihmiskunnan polttavimmat ongelmat on ratkaistu, ja ratkaisu on lähtenyt liikkeelle Afrikasta. Yllättävää, mutta miksikä ei näinkin voisi käydä. Afrikalla on sekä runsaat luonnonvarat, että monikulttuurisena ja etnisesti kirjavana mantereena valtavat luovat resurssit. 

Reynolds ei tarkkaan selvitä, miten tällainen muutos voisi alkaa. Eräs tekijä voisi olla panafrikkalaisuus, ajatus, että afrikkalaiset ovat yhtä ja pitävät yhtä. Kun työskentelin jonkin aikaa Etelä-Afrikassa, jotenkin vakuutuin afrikkalaisten luovuudesta ja siitä, että panafrikkalaisuus on mielentilana ihan totta. Tieteellisessä konferenssissa afrikkalaisten väliset keskustelut alkoivat suunnilleen näin: "Terve, minä olen Keniasta, mistä sinä tulet?", "Hei, minä olen Ghanasta". "Sehän on hauskaa. Mitä kiinnostavaa te olette viime aikoina tehneet?"

Toinen kysymys, mitä Reynolds on käsitellyt, on siirtokuntien rakentaminen muualle avaruuteen. Tähtienvälinen avaruusalus on valtava ontoksi koverrettu asteroidi, jolla on riittävästi tilaa viedä mukanaan matkustajien lisäksi riittävän suuri ekosysteemi (Terästuulen yllä, 2014). Niin, viime vuosikymmeninä on yhä kirkkaammin alettu ymmärtää, että ihminen ei ole riippumaton kosminen vaeltaja, vaan kriittisesti riippuvainen ekosysteemistä. Se ei koske vain ravintoa. Kehossamme on määrätön määrä pieneliöitä, emmekä ehkä pitkän päälle tule toimeen ilman niitä. Nuo eliöt siirtyvät meihin ympäriltämme. Jopa immuunijärjestelmämme vaatii toimiakseen kunnolla ulkopuolelta tulevaa biologista ja biokemiallista ohjelmointia. Joten kysymys kuuluu: kuinka suuren ekosysteemin ihminen joutuu viemään mukanaan rakentaessaan siirtokuntaa avaruuteen? Ja voiko tuollainen supistettu ekosysteemi tulla toimeen omillaan, ilman kontaktia emoplaneettaan. Rinnakkainen kysymys kuuluu: miten paljon ekosysteemimme voi supistua ilmastonmuutoksen ja ihmiskunnan aiheuttaman kulutuksen takia, ennen kuin se alkaa uhata koko ihmisen olemassaoloa. 
 
Biosfääri 2 - koe tehtiin 1990- luvun alussa Arizonassa. Kahdeksan ihmistä sulkeutui kahdeksi vuodeksi tiiviisti suljettuun 12 000 m2 laajuiseen lasikupuun. Koe epäonnistui, keinotekoinen ekosysteemi joutui heti epätasapainoon. Kupu ei tuottanut riittävästi happea eikä elintarvikkeita, ja hiilidioksidin määrä nousi liian korkeaksi. Osa eliöistä kuoli, jotkut taas lisääntyivät ylen määrin. Ihmisetkin olisivat luultavasti menehtyneet ilman ulkopuolelta saatua happea ja elintarvikkeita. Koe epäonnistui myös tieteellisesti, se perustui liian yksinkertaisiin oletuksiin, eikä sen tuloksia voi yleistää. Ilmeisesti tällainen koe voisi jollain lailla jäljitellä suhteellisen lyhytaikaisen siirtokunnan toimintaa. Pysyväksi olotilaksi tällainen ekosysteemi on varmasti aivan liian pieni.

Jossain on varmasti raja. Liiaksi supistettu ekosysteemi ei mahdollista ihmisen eloonjääntiä. Luonnosta on turha huolestua. Se tulee jatkamaan kehitystään ilman ihmistä, monimutkaistuen uudelleen, ja ehkä aivan uuteen suuntaan.

torstai 17. lokakuuta 2019

Koodaus - kansalaistaito?

Koodaus- tai oikeastaan ohjelmointi on jotain uutta ja modernia. Se on digiaikaa, ohjelmat rakentavat tulevaisuuttamme - ja tekevät nykyisyytemme hankalaksi. Pitäisikö meidän tietää jotain ohjelmoinnista? Ainakin kouluihin on haluttu ohjelmoinnin opetusta. Ehkä se saa oppilaat jopa innostumaan koulunkäynnistä. Teollisuus valittaa koodaripulaa (koodari tarkoittaa siis ohjelmoijaa, koodivääntäjää, softanörttiä, koodiapinaa...). Huoli on herännyt. Miten meidän käy tulevaisuudessa? Pitäisikö maahanmuuttajista ja työttömistä metsureista kouluttaa koodareita? 

Hyvä. Aion nyt kertoa tosiasioita ohjelmoinnista. Istukaa tukevasti ja pidelkää hatuistanne.

Minulla on luultavasti riittävästi natsoja sanomaan asiasta jotain. Olen työssäni koodannut vuosien varrella kymmenillä erilaisilla ohjelmointikielillä. Ensimmäisen ohjelmani tein kesällä vuonna 1968, päästyäni juuri opiskelemaan teknilliseen korkeakouluun (nyk Aalto yliopisto, latojan huomautus). Opettelin käsikirjasta ALGOL - nimistä ohjelmointikieltä. Sitten "kirjoitin" ohjelman lävistämällä sen reikäkorteille. Korttinippu kiikutettiin laskentakeskukseen, josta seuraavana päivänä saattoi hakea ohjelman tuottamat tulosteet. Jännityksellä odotetut tulokset saattoivatkin olla vain pari sivua paperia, muutama harva rivi ja pölkkykirjaimilla tuomio: SYNTAX ERROR. Ahaa, ohjelmassa on virhe, pitää korjata. Uudelleen lävistetyt korjatut reikäkortit pakkaan viallisten tilalle, ja nippu uudelleen laskentakeskukseen. Ehkä se nyt toimii - tai sitten ei vieläkään. 

Tämähän on pelkkää teknologianostalgiaa! Tietokoneet ovat kutistuneet satojen kilojen painoisista kaapeista muutaman gramman siruiksi. Ohjelmia ei enää lävistetä pahvikorteille tai paperinauhoille, vaan ne sijaitsevat sähkövarauksien näkymättäminä kuvioina piisirujen pinnalla, tai ne pannaan pilveen (joka on kyllä ihan oikea sähköllä käyvä kone jonkin entisen tehdasrakennuksen konehallissa). Tietokoneiden valtavasta fysikaalisesta metamorfoosista huolimatta tosiasiat eivät ole puolessa vuosisadassa miksikään muuttuneet. Joten voin paljastaa salaisuuden: ohjelmointi on KOVAA TYÖTÄ. 

Oudompaa on, että ulkonaisesta metamorfoosista huolimatta myöskään tietokoneet eivät ole periaatteessa juurikaan muuttuneet. Samat ideat, samat periaatteet, samat arkkitehtuurit. Tietokoneet ovat syvällä sisimmässään edelleen Neumannin koneita, ja kaukaista sukua Turingin koneille*. En nyt mene pidemmälle tähän, etten eksy liikaa aiheesta.

Kun kuuntelee ohjelmoinnista käytävää keskustelua tai juttelee koodareiden kanssa, tulee mieleen, että asiat tehdään nykyään jollain lailla väärin, eri tavalla kun minulle on opetettu. Aletaan heti kirjoittaa koodia sellaisella oletuksella, että kyllä se siitä! Eli uskotaan että ennen pitkää ohjelma alkaa jollain lailla toimia. On olemassa myös toinen filosofia, jonka itse olen havainnut hyväksi. Ei pidä kirjoittaa pätkääkään koodia ennen kuin tietää tarkkaan, millainen ohjelmasta tulee. Ohjelma pitää ensin suunnitella ja analysoida tehokkailla abstrakteilla menetelmillä, ja vasta viimeiseksi rakentaa tarvittava koodi. 

Suoraviivaista koodista lähtevää ohjelman rakentamista sanotaan joskus ketteräksi ohjelmoinniksi. Myönnän ja tiedän, että menetelmällä on hyviä puolia. Mutta tuntuu myös siltä, että työyhteisö on joutunut karkean taylorismin** uhriksi. Henkistä työtä on erittäin vaikeaa mitata, mutta ohjelmointia mitataankin koodiriveillä. Joten niitä sitten tehtaillaan. Vanha normi on, että ohjelmoijan tulee tuottaa 20 koodiriviä päivässä. Ei tunnu paljolta, mutta lisään, että sillä tarkoitetaan dokumentoitua ja testattua koodia. Ei enää niin helppoa. En tiedä nykyistä normia, jos sitä onkaan. Tehokkuus riippuu ratkaisevasti ohjelman koosta ja mutkikkuudesta, ja myös työkaluista: käytössä on eri tasoisia kieliä, alustoja ja "koodigeneraattoreita". Kontekstianalyysi, tietovuoanalyysi tai tilasimulointi ei kumminkaan tunnu olevan järkevää työtä, koska se ei synnytä mitattavia koodirivejä vaan ainoastaan ymmärrystä!

Vuosikymmeniä olen odottanut, että teknologia kehittyisi ja ohjelmien tekeminen tulisi tehokkaammaksi. Oikeastaan pitäisi päästä niin korkealle abstraktiotasolle, että ohjelmoinnista sen perinteisessä merkityksessä ei edes puhuttaisi. Jostain syystä tämä visio ei ole toteutunut. Merkittävien ohjelmistojen kehitys, kuten sellaisten jotka helpottaisivat vaikka terveydenhuollon ammattilaisten työtä, on suunnattoman kallista, ja tulosten laatu on huono. Ulkoa katsoen, sillä en ole vähään aikaan koodannut, ison ohjelman tekeminen muistuttaa ensimmäisen maailmansodan sodankäyntiä. Yhä uusia pataljoonia koodareita marssitetaan uppoamaan mutaisiin juoksuhautoihin.

Minua kovemmat teknologiagurut ovat miettineet päänsä puhki, miten tämä asia pitäisi korjata. Joten ohjelmoinnin tuottavuus- ja laatuongelman täytyy olla hyvin vaikea. En minäkään osaa ehdottaa ratkaisua, jätän sen viisaammille. Jotain olen asiasta kyllä kirjoittanut, katso teksti Ohjelmointi - suurenmoista ja raivostuttavaa. Mutta yleisen ymmärryksen takia voisi asiasta jotain sanoa. Ohjelmoinnissa käytetään edelleen yleisesti ohjelmointikieliä, ja ne ovat matalan abstraktiotason työvälineitä. Suuren järjestelmän rakentaminen ohjelmointikielen lauseista on kuin rakentaisi pilvenpiirtäjää pulteista, muttereista ja kulmaraudoista, ja nekin olisivat osittain itse suunniteltuja. Kokonaisuuden hahmottaminen pienten osien tasolta on vaikeaa, ja koska osia on paljon, myös virheitä on paljon ja ne on vaikea löytää. Toinen ongelma on ohjelmistoteollisuuden suuri koko. Laajalle levinneet huonot työkäytännöt ovat muuttuneet kulttuuriksi, niitä on vaikea ruotia pois.

Onko ohjelmointi tai "koodaus" tulevaisuuden kansalaistaito, ja pitäisikö se saada kouluihin jo ala-asteelle? Ammatillisessa mielessä se ei sitä ole, koska oikeastaan ohjelmoinnista pitäisi päästä eroon. Mutta toisaalta ohjelmointi on vaativaa ja myös mukaansa tempaavaa toimintaa. Se on yleissivistävä aine, samalla lailla kun historia ja matematiikka. Joten tarkemmin ajatellen olen kuitenkin toista mieltä. Ohjelmointi pitäisi saada jossain muodossa kouluihin matematiikan rinnalle. Ohjelmointi opettaa keskittymään työhön, se on kiinnostavaa, ja se osoittaa konkreettisesti, kuinka helposti voi saada aikaan jännittäviä asioita.

Mistä koodaamisessa on sitten oikein kysymys, millaista työtä se on? Koetan selvittää sitä yleistajuisesti, siis ei-nörteille.

Koodauksessa laaditaan kirjoitusta muistuttavaa tekstiä, jonka tietokone pystyy lukemaan. Siis vaikkapa tietokoneeseen kytketyllä näppäimistöllä. Tämä on nykyään aika tuttua hommaa. Tekstin sisältö, koodi koostuu yksinkertaisista operaatioista eli käskyistä. Niiden avulla voidaan käsitellä symboleja, kuten kirjaimia, laskea, ja tutkia ja muuttaa muistipaikkojen arvoja. Esimerkiksi käsky SUB (A,B) voisi tarkoittaa, että muuttujan A arvosta vähennetään muuttujan B arvo. Käsky SET (A, 7) asettaa muuttujalle A arvon 7. Käskyjen kirjoittamiseen on tietyt säännöt, ja näitä sääntöjä sanotaan ohjelmointikieleksi. Kieliä on keksitty paljon, yleisiäkin on kymmeniä. Edellä mainitut SUB- ja SET- käskyt voidaan jossain toisessa kielessä kirjoittaa yksinkertaisemmin, vaikka (A-B) ja A=7.

Ohjelmakielessä käsitellyt muuttujat voivat tarkoittaa erilaisia asioita. Ne voivat olla dataa, niinkuin laskennassa tai käsiteltäessä tekstiä. Tai ne voivat tarkoittaa kuvaruudun tai tulostusalustan kuvapisteitä, jos käsitellään kuvia tai tehdään tietokonegrafiikkaa. Tai muuttujat voivat kytkeytyä sähkömekaanisiin komponentteihin, moottoreihin ja releisiin, jos tietokoneella haluaan ohjata robottia. 

Ohjelma on jono peräkkäisiä käskyjä, ja kun ohjelma käynnistetään, tietokone käy niitä läpi järjestyksessä. Erityisen tehokkaita käskyjä ovat loogiset operaatiot eli ehdolliset käskyt. Niiden avulla tietokone osaa tehdä yksinkertaisia päätelmiä ja valintoja. Esimerkki: käsky IF (A>B) tutkii, onko muuttujan A arvo suurempi kuin muuttujan B. Jos ei ole, ei asiasta välitetä, mutta jos on, tietokone siirtyy uuteen paikkaan käskyjonossa. Jossain kielessä tämä voidaan ilmaista käskyllä JUMP (A>B, 275), missä 275 on uusi paikka käskyjonossa.

Erityisen tehokas ohjelmoinnin niksi on nimeltään aliohjelma. Usein tietokone joutuu tekemään toistuvasti samoja asioita. Niitä ei tarvitse kuitenkaan ohjelmoida joka kerta erikseen, vaan voidaan tehdä ohjelma, johon tietokone voi hypätä aina tarvittaessa. Esimerkiksi laskemaan keskiarvon joukosta lukuja. Voidaan tehdä pieni ohjelma jolle annetaan helposti muistettava nimi, kuten KARVO. Tai ohjelma jonka saa robotin ojentamaan käsivarttaan, OJENNA. Niinpä käsky KARVO(A,1300, 4750) voisi laskea keskiarvon 1300 luvusta, lukujono alkaa muistipakasta 4750, ja tulos sijoitetaan muuttujan A arvoksi. Käsky OJENNA(380) saa robotin ojentamaan käsivarttaan eteenpäin 380 mm. Käsky CIRCLE (340, 120, 45) piirtää kuvaruudulle ympyrän, jonka keksipisteen koordinaatit ovat 340,120 ja säde on 45. 

Yllä käytin havainnollisuuden takia keksittyjä käskyjä, niin sanottua pseudokoodia. Mutta niitä vastaavat toiminnat löytyvät kaikista ohjelmointikielistä. 

Tällaista on ohjelmointi pähkinänkuoressa. Pitää suunnitella ja kirjoittaa käskyjonoja, jotka saavat tietokoneen tekemään haluttuja asioita. Ohjelmointi vaatii kurinalaisuutta ja keskittymistä. Tärkeintä on opetella tuntemaan ne säännöt joilla ohjelmaa tehdään, eli ohjelmointikieli. Mielestäni edellä kuvatuista esimerkeistä huomaa vahvan yhteyden matematiikan opetukseen. Ohjelmointi on abstraktia, siinä käsitellään numeroita, kirjaimia ja symboleja tiettyjen sääntöjen mukaan, ja se mitä siitä syntyy, tarkoittaa jotain. Tämä on tärkeä oivallus.

Koululaisille ehkä sopivin aloittelijan ohjelmointikieli lienee edelleen vuosikymmeniä vanha BASIC, jokin sen monista versioista. On olemassa myös graafisia lapsille suunnattuja ohjelmointialustoja, ne tekevät ohjelmoinnista vielä helpompaa. 

Toinen yleinen ohjelmoinnin muoto on nettisivujen tekeminen. Siinä perusmenetelmänä on HTML- niminen ohjelmointikieli. Sen avulla voidaan määritellä, miten tekstejä, kuvia ja multimediaa sisältävä tiedosto näkyy ja toimii tietokoneen ruudulla. Sivuja voi tuottaa myös sivueditoreilla, jotka piilottavat varsinaisen HTML- koodin. Koodia tarvitaan vain yksityiskohtien hienosäädössä.

Lapsetkin pääsevät helposti ohjelmoinnin makuun, sillä käskyt ovat varsin yksinkertaisia, ja kymmenkunta peruskäskyä riittä jo pitkälle. Ammattimainen ohjelmointi on toki paljon vaikeampaa. Siinä joutuu perehtymään johonkin tekniseen alakulttuuriin: konealustaan, tietorakenteisiin, ohjelmointikieliin ja ohjelmoinnin työkaluihin. Ja tietenkin ennen kaikkea ohjelmoinnin sovelluskohteen rakenteeseen ja toimintaan. Tästä kaikesta syntyy tiheä erikoistermien, käsitteiden ja lyhennysten viidakko. Siitä selviäminen on merkittävästi vaikeampaa kuin jonkun ohjelmointikielen käsikirjaan perehtyminen. 

Helposti ajatellaan, että ohjelmointi on jotain uutta, tietoyhteiskunnan ilmiöitä. Mutta sillä on pitkät juuret. Ohjelman ideana ja mallina on ajassa etenevä prosessi. Ja musiikkiesitys on juuri sellainen prosessi. Musiikin tekijät alkoivat jo yli tuhat vuotta sitten vuosia sitten merkitä sävellyksiä muistiin pergamentille ja paperille. 1600- luvulla oli jo kehittynyt nykyisen kaltainen merkintätapa. Tarkastelin jokin aika sitten aivan uutta nykymusiikkipartituuria, eli siis nuotinnettua sävellystä. Nuotinnus on edelleen laajassa käytössä, vaikka musiikki koostuisi laulajista, instrumenteilla soitetuista jaksoista, koneilla tuotetuista äänistä ja nauhaleikkeistä.

Insinöörin silmin tällainen partituuri edustaa modernia ja haastavaa reaaliaikaohjelmointia (se on tekniikka, jolla ohjelmoidaan esimerkiksi monimutkaisia koneita ja robotteja). Siinä erottaa heti rinnakkaiset prosessit, ajoituksen kontrolliin tarkoitetut merkinnät ja erilaiset synkronoinnit. Muusikot ovat olleet ohjelmoijina satoja vuosia insinöörejä edellä.

Varsinainen tekninen ohjelmointi on myös ikivanhaa. Ennen teollista aikaa automaatio ei ollut tuotantokäytössä, työvoimaa ja orjia kun on ollut helposti saatavissa. Sen sijaan insinöörit rakensivat erilaisia koneita ja laitteita huvittaakseen ja pelotellakseen ihmisiä. Renessanssinero Leonardo da Vinci rakensi muun muassa mekaanisen leijonan ja ritarin. Ohjelmalaitteena hän käytti erityisellä tavalla muotoiltuja kiekkoja, jotka pyöriessään liikuttivat hänen robottiensa ohjausvipuja.

Tärkeä ohjelmoitava kohde on ollut myös soittorasiat, musiikkiautomaatit ja jopa kokonaiset mekaaniset yhtyeet. Nyt otettiin käyttöön myös vaihdettavat ohjelmat. Ne oli valmistettu metallikiekoille, rummuille, paperinauhoille ja pahvikorteille. Nykyajan ihminen huomaa heti ainakin pinnallisen yhteyden tietokoneiden kanssa. Rumpuja, levyjä ja nauhoja on käytetty myös tietokoneiden ulkoisina muisteina. 
 
Ohjelmointi astui teollisuuden palvelukseen 1700-luvulla. Toisiinsa liitetyille pahvikorteille lävistetyillä rei'illä alettiin ohjata kutomakoneen loimien vaihtoja. Joseph Jacquardin keksimällä koneella alettiin valmistaa taidokkaita kuvakudoksia eli gobeliineja. Ne olivat aikanaan hyvin suosittuja ja arvokkaita, ohjelmointi oli nyt löytänyt taloudellisesti merkittävän sovelluksen. Jacquardin kone teki voimakkaan vaikutuksen aikalaisiin. Englantilainen matemaatikko Charles Babbage (1791–1871) oivalsi, että samaa periaatetta voisi käyttää laskukoneen ohjaukseen. Hänen analyyttinen koneensa oli nykyaikaisen tietokoneen suora edeltäjä. Babbage ei koskaan saanut konettaan valmiiksi. Se oli aivan liian monimutkainen mekaanisena laitteena rakennettavaksi. Olen kertonut tästä merkittävästä yrityksestä kirjoituksessani Joseph Jacquardin muotokuva
 
Ohjelmoinnin periaate oli nyt kypsynyt tietoa käsittelevien koneiden keskeiseksi tekniseksi ideaksi. Koska tietokoneet ovat hyvin joustavia, ohjelmoimalla voidaan nykyään tehdä niitä kaikkia asioita, joihin tätä periaatetta on yritetty vuosisatojen aikana käyttää. Tietokoneet ohjelmat ohjaavat androideja, robotteja ja teollisuuden koneita, ne laskevat, tuottavat kuvia ja tuottavat musiikkia. 

Nämä esimerkit paljastavat uuden kuvion. Ohjelmointi ei ole tietoyhteiskunnan kansalaistaito, vaan jotain sitä enemmän. Se on yleinen ja laaja-alainen abstraktin ajattelun muoto, jonka sovellukset vaihtelevat suunnattomasti. 
 
--
*) Nykyaikaisen tietokoneen isiä ovat unkarilainen matemaatikko John von Neumann (1903–1957) ja brittiläinen matemaatikko Alan Turing (1912–1954). Pioneereihin pitää vielä lukea informaatioteorian keksijä, amerikkalainen matemaatikko Claude Shannon (1916–2001). Hän oivalsi, että laskeva kone voi perustua Boolen logiikkaan ja elektronisiin loogisiin piireihin.

**) taylorismi tarkoittaa Frederic Taylorin kehittämää työnjohto-oppia sen karkeassa muodossa.