10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Nick Montfort et al., MIT Press 2012
Kelpaisiko kirja, jonka nimi on BASIC-kielinen ohjelma? Jos kavahdit heti, tämä on juuri sinulle.
10 PRINT, kuten tekijät kirjansa nimen lyhentävät, edustaa digitaalisen kulttuurin tutkimusta, joskaan ei aivan tavanomaista sellaista. Massachusettsin teknillisen korkeakoulun digitaalisen median professori Nick Montfort ja kumppanit nimittäin uskaltautuvat alueelle, jota ei yleensä pidetä lainkaan sopivana humanisteille. Ohjelmakoodihan on yleisen käsityksen mukaan pelkkää insinöörien näpertelyä, joka on parasta sulkea mustiin laatikoihin, pois näkyvistä. Tällä kertaa tutkimuskohde on kuitenkin tarkoituksella valittu niin, ettei teknisiä perusteita pääse pakoon.
Kirjan nimenä ja aiheena on siis yli kolmekymmentä vuotta vanha yksirivinen BASIC-ohjelma, josta käytetään samaa 10 PRINT -nimeä kuin kirjastakin. Commodoren 8-bittisillä tietokoneilla ajettuna 10 PRINT piirtää näytölle loppumattoman sokkelon, jota vierii esiin aina vain lisää. Ensimmäinen versio ohjelmasta julkaistiin VIC-20:n ja C-64:n ohjekirjossa, minkä jälkeen myös eri tietotekniikkalehdet ovat julkaisseet siitä lukuisia versioita.
Sokkelo-ohjelman suosion salaisuus on sen yllättävyydessä. Se nimittäin tekee jotain, mitä ei niin lyhyeltä ohjelmalta äkkiseltään odottaisi. Ohjelma yllättää samalla tavoin myös tutkimuskohteena: ei helposti uskoisi, että se tarjoaisi riittävästi käsiteltävää kolmesataasivuiselle kirjalle, mutta se onnistuu siinäkin yksinkertaisuudestaan huolimatta.
Aluksi ohjelman toiminta käydään läpi merkki ja avainsana kerrallaan. Todetaan, että se todellakin vain tulostaa näytölle loppumattomana satunnaissarjana kahta erilaista grafiikkamerkkiä, jotka muistuttavat ASCII-merkkejä / ja \. Länsimaisessa kulttuurissa kasvanut tulkitsee syntyvän kuvan kartaksi sokkelosta, jonka käytävien poikki hän mielessään juoksentelee yrittäen päästä ulos. Sokkeloiden ja labyrinttien kulttuurihistoriasta kertoo oma lukunsa.
Sokkelo-ohjelman algoritmitason rakenteita ovat toisto, sattuma ja ruudukkoon asetetut kuviot. Rakenteiden kulttuurihistoriat käydään läpi keskittyen etenkin abstraktiin kuvataiteeseen, jossa niitä käytettiin ja yhdisteltiin jo kauan ennen kotimikroja. Toisaalta kirjassa selvitellään myös BASIC-kielen ja Commodore 64:n taustat etenkin 10 PRINT -ohjelmassa näkyvien piirteiden kannalta: Miksi rivit numeroidaan kymmenen välein? Millaisista lähtökohdista PETSCII-merkistö syntyi? Mihin näennäissatunnaisuutta tarvitaan ohjelmointikielissä? Eikä myöskään GOTO-käskyä vastaan 1970-luvulla aloitettua ristiretkeä unohdeta.
Kirjan varsinaisten lukujen välissä on ”REM-lukuja”, joissa keskitytään etenkin muuntelemaan ohjelmaa ja kääntämään sitä eri ohjelmointikielille ja laitealustoille. Tällä havainnollistetaan sitä, kuinka kullakin kielellä ja alustalla on omat ominaispiirteensä, joista riippuu, millaisia ohjelmia niille syntyy. Kirjan salatiedemäisintä antia edustaa luku, jossa ohjelma sovitetaan Atari VCS:lle, jonka ominaisuudet eivät sovellu vaadituntyyppiselle grafiikalle alkuunkaan. Porttausten osalta kirja lähenee alustatutkimusta (Platform Studies), joka on kirjoittajien aiemmin alulle panema tutkimusala.
10 PRINT pyrkii rakentamaan siltaa ihmiskeskeisen ja tekniikkakeskeisen ajattelun välille todistamalla, ettei raja ole niin jyrkkä kuin voisi kuvitella. Ohjelmakoodikin on kulttuuria, joka syntyy aiemman kulttuurin pohjalle ja synnyttää uutta. Ohjelmointi voi paljastaa mielenkiintoisia näkökulmia kulttuurintutkijalle samoin kuin kulttuurintutkimus ohjelmoijalle.
Vaikka 10 PRINT lieneekin tarkoitettu etupäässä ihmiskeskeisemmälle porukalle johdatukseksi ohjelmakoodin maailmaan, saavat ohjelmointia ja mikrotietokoneita ennestään tuntevat luultavasti kirjasta paljon enemmän irti. Etenkin kirjan REM-luvut ovat täynnä viehättävää koodin parissa näpräilyä, joka ei suinkaan pitäydy pelkissä aloittelijaystävällisissä tempuissa. Koodia on esillä paljon, eikä sitä peitellä. Innostuneen harrasteohjelmoinnin lippua pidetään niin korkealla, että oikein sydäntä lämmittää.
Yksi rönsy, jonka kirja jostain syystä sivuuttaa kokonaan, on display hack -perinne. Sokkelo-ohjelma nimittäin on hyvin selkeästi näyttöhäkki samaan tapaan kuin vaikkapa ”Munching Squares” ja muut 60-luvun minitietokoneille tehdyt muutaman käskyn mittaiset grafiikkaohjelmat. Tekstistä ei pikaisella haulla löytynyt sanoja ”display hack” tai ”hack value” kertaakaan, ja ”hacker”-sanaakin käytetään vain mikrotietokoneaikakauden kontekstissa. Tämä on outoa, onhan kirja peräisin hakkerikulttuurin synnyinsijoilta MIT:stä. Näyttöhäkkien kautta etenemällä olisi myös demoskenen saanut luontevammin mukaan kirjaan. Nyt kirja käsittelee skeneä vain Commodore 64 -luvun loppuun ympätyssä osiossa, jossa tekijät laajentavat 10 PRINTin konekielikäännöksen 31-tavuiseksi demoksi.
Kirjassa on myös joitakin asiavirheitä. Useimmat eivät ole kovin vakavia, mutta yksi on omiaan viemään pohjaa koko muulta sisällöltä. 10 PRINT -ohjelma nimittäin julkaistiin VIC-20:n käyttöoppaassa ennen kuin C-64:n. Luultavastikaan kirja ei olisi muotoutunut kovin erilaiseksi, vaikka ohjelman VIC-20-ajoa oltaisiinkin pidetty siinä ”kanonisena” C-64-ajon sijaan, mutta onhan tämän tason lipsahdus silti aika nolo.
Muutamasta mokastaan huolimatta 10 PRINT on mukavaa luettavaa. Maailmassa saisi olla enemmänkin tällä asenteella väsättyjä tietotekniikkakirjoja, jotka tuovat esiin ohjelmointiteknisten perusteiden tärkeyttä nykymaailmassa ja käsittelevät tietotekniikan kulttuurihistoriaa juuttumatta menneeseen aikamuotoon.
10 PRINT on Creative Commons -lisenssin alainen ja saatavilla nettisivultaan PDF-muodossa. Ostetuista kappaleista saadut tulot lahjoitetaan NES-pohjaisia opetusohjelmia kehitysmaiden oloihin tuottavalle Playpower-säätiölle.
Teksti: Ville-Matias Heikkilä