Toys-logo

Puheenjohtajan puheenvuoro

Ohjelmointiko taidetta?

Taisit nauraa, kun kuulit Taiteellisen ohjelmoinnin ystävien seurasta ensimmäisen kerran? (Useimmat tekevät niin - emme lue sitä sinua vastaan; mutta jos et nauranut, sen parempi!) Usko pois, olemme tosissamme.

Minä pidän ohjelmointia sanataiteen lähialana. Sanataiteessa - jonka tuotoksia ovat mm. romaanit, novellit ja runot - on tärkeässä asemassa toisaalta kielitaito ja toisaalta tekninen kirjoitustaito (miten teksti on syytä rakentaa, jotta lukija ymmärtäisi sen sanoman) mutta myös luova panos: sanataiteilija haluaa herättää yleisössään ajatuksia ja tunteita. Myös ohjelmoinnissa on tärkeää kielitaito ja tekninen kirjoitustaito. Tärkeintä on kuitenkin vaikutus, johon ohjelmoija pyrkii. Tavallisesti pyritään saamaan haluttu vaikutus tietokoneessa, joka teoksen lukee, mutta myös halutaan vaikuttaa toiseen ohjelmoijaan, joka ohjelmateokseen tutustuu. Ainakin ohjelmoija haluaa vakuuttaa vertaisensa siitä, että ohjelma tekee sen, mitä sen pitäisi. Mestarillinen ohjelmoija tekee teoksestaan lisäksi miellyttävän lukea (tai kehittää siihen jonkin muun tunnevaikutuksen, joka saa hänen yleisönsä haukkomaan henkeään). Eikö tämä ole jo taidetta!

Kuulen vastaväitteen: ohjelmoija ei todellakaan halua vakuuttaa vertaistaan, häntä vertaisensa kritiikki ei kiinnosta tippaakaan. Tämä on toisinaan totta, mutta tällainen ohjelmoija arvostellaan yleensä huonoksi jo tekniikan kriteereillä, sillä tällaisen ohjelmoijan tuotos ei ole ylläpidettävä, ja usein se on rikki (vaikka sitä ei heti huomaisikaan).

Ohjelmoinnista taiteenlajina on puhuttu niin kauan kuin ohjelmoinnista ylipäätään on puhuttu. Varhaiset ohjelmoijat tunsivat itsensä taiteilijoiksi. Sellaiset ohjelmointialan suurmestarit kuin Donald W. Knuth ja Edsger W. Dijkstra ovat puhuneet omissa kirjoituksissaan ohjelmointitaiteesta.

Tietokoneen ohjelmointi on taidetta, koska se vaatii taitoa ja kekseliäisyyttä, koska se soveltaa kertynyttä tietoa käytännössä ja erityisesti koska sen tuotokset ovat kauniita. Ohjelmoija, joka alitajuisesti pitää itseään taiteilijana, nauttii työstään ja tekee sen mainiosti.
- Donald E. Knuth Turing-esitelmässään "Computer Programming as an Art", Communications of the ACM, 17(12), 1974
Tarkoitukseni on välittää hyvän maun ja tyylin tarpeellisuus ohjelmoinnissa - esitän tyylinäytteitä vain kuvatakseni, mitä hyötyjä voidaan "tyylistä" ylipäätään saada. Tässä suhteessa tunnen sukulaisuutta sävellyksen opettajaa kohtaan: hän ei opeta oppilaitaan säveltämään tiettyä sinfoniaa, hän auttaa oppilaitaan löytämään oman tyylinsä ja selittää heille, mitä seurauksia tästä on. (Tämän analogian vuoksi aloin puhua "ohjelmointitaiteesta".)
- Edsger W. Dijkstra monisteensa "A Short Introduction to the Art of Programming" (EWD316, 1971) esipuheessa

(suom. kirjoittaja)

Tästä huolimatta taidealojen tärkeimmät opetukset ovat jääneet huomaamatta: hyvä taiteilija luo paljon ja tuntee muiden teoksia vielä enemmän. Sanataiteen alalla aloittelijalle annetaan ohjeeksi kirjoita paljon ja lue vielä enemmän. Sanotaan, että kestää noin miljoona sanaa, ennen kuin sanataiteilijan tuotos on laadukasta. Miksi julistamme opiskelijan täysinoppineeksi ohjelmoijaksi, kun hän on lukenut muutaman novellikokoisen ohjelman ja kirjoittanut muutaman novellikokoisen ohjelman itse, alle kymmenen tuhatta "sanaa"?

En kiistä, että ohjelmoinnissa on muistettava myös insinöörinäkökulma. Ongelma on siinä, että se on ominut ohjelmoinnin kokokaan itselleen, ja tärkeä osa ohjelmoinnin olemuksesta on jäänyt alakulttuurin tasolle. Taiteellista ohjelmointia harrastetaan, mutta sitä harvoin kutsutaan sellaiseksi. Omalla tavallaan puhdasta taidetta ovat esimerkiksi erilaisten vaikeaselkoisten ohjelmien kilpailujen (esimerkiksi International Obfuscated C Code Contest) voittajat. Jopa toinen ääripää voidaan nähdä taiteena, jossa kauneuden kriteeriksi on otettu funktionalismin teesi: toimiva on kaunista.

Voitko siis hyvällä omallatunnolla väittää, ettei ohjelmointi olisi taidetta?

Ensimmäinen versio 11. maaliskuuta 2003

Antti-Juhani Kaijanaho, seuran puheenjohtaja
antti-juhani@kaijanaho.info