Tilitin Ubuntu 15.10:ssä

Jos Tilitin jumittaa sinullakin Ubuntu 15.10:ssä, kokeile muokata tiedostoa /etc/java-7-openjdk/accessibility.properties ja lisää rivin assistive_technologies=org.GNOME.Accessibility.AtkWrapper alkuun merkki #.

Tilitin on kirjanpito-ohjelma, joka toimii kaikissa yleisesti käytössä olevissa tietokoneen käyttöjärjestelmissä. Suosittelen sitä pienille yhdistyksille; pitäisi kirjoittaa siitä tarkemmin joskus.

Kirjanpitoaineiston säilytys 1.1.2016 voimaan tulleen lain mukaan — Pienen yhdistyksen kirjanpito ja tilinpäätös, osa 7

[Luethan myös sarjan johdanto-osan.]

Tässä postauksessa käsitellään kirjanpitoaineiston säilytystä 1.1.2016 voimaan tulleen kirjanpitolain muutoksen mukaisesti. Lakia sovelletaan tilikausiin, jotka alkavat 1.1.2016 tai myöhemmin. Lakia voidaan soveltaa myös 1.1.2016 tai sen jälkeen laadittuun aiemman tilikauden tilinpäätökseen. Aiemman lain mukaisen aineiston säilytyksestä olen kirjoittanut aiemmin.

Säilytettävä aineisto

Säilytettävää kirjanpitoaineistoa lakisääteisine vähimmäissäilytysaikoineen ovat

  • allekirjoitettu tilinpäätös (10 vuotta)
  • tase-erittelyt (10 vuotta)
  • kirjanpidot (10 vuotta)
  • tositteet (6 vuotta)
  • kirjanpitoon kuuluviin tapahtumiin liittyvä kirjeenvaihto (6 vuotta)
  • luettelo kirjanpidon tileistä (10 vuotta)
  • luettelo tilinpäätöksen perustana olevista kirjanpidoista sekä tositteiden ja muiden kirjanpitoaineistojen lajeista, josta ilmenee niiden keskinäiset yhteydet ja säilytystavat (10 vuotta)

Säilytysaika lasketaan tilikauden päättymisestä.

Säilytysajan sisällä:

  • kirjausketjun tulee pysyä ehjänä
  • kirjanpitoja tulee voida tarkastella ja tarvittaessa tulostaa sekä aika- että asiajärjestyksessä Suomesta käsin ilman aiheetonta viivytystä
  • aineiston sisältöjä ei saa muuttaa eikä poistaa
  • aineiston muotoa saa tarvittaessa muuttaa

Paperilla säilyttäminen

Perinteisesti koko kirjanpitoaineisto on laadittu paperimuotoon (viimeistään tulostamalla). Useimmat tositteet lienevät nykyäänkin jo valmiiksi paperilla ja loput on varsin yksinkertaista tulostaa arkistointia varten. Kirjanpidosta arkistoidaan päiväkirja ja pääkirja (sekä muut erityiset kirjanpitokirjat, jos niitä on) – kirjanpito-ohjelmista ne saadaan helposti tulostettua, ja edellisissä kirjoituksissani esittelemäni pääpäiväkirjajärjestelykin on mahdollista saada paperille tulostettua (joskin se vaatii jonkin verran vaivaa, jotta kaksiulotteinen pääpäiväkirja olisi tulosteessakin lukukelpoinen).

Yksinkertaisinta on laittaa kaikki kirjanpitoaineisto yhteen mappiin. Mapin selkämykseen on syytä kirjoittaa hyvin selkeästi, mitä se sisältää, sekä mapissa olevan aineiston säilytysvelvollisuuden kesto – esimerkiksi näin:

[YHDISTYS] RY
KIRJANPITOAINEISTO
Tilikausi 1.1.2016–31.12.2016

Tositteet säilytettävä 31.12.2022 asti.
Muu aineisto säilytettävä 31.12.2026 asti.

Mikäli yhdistyksellä on käytettävissään suhteellisen pysyviä toimistotiloja, mapin voi hyvin säilyttää siellä. Muussa tapauksessa aineisto on syytä antaa luotettavan henkilön säilytettäväksi. Yhdistyksen on myös syytä merkitä muistiin, missä menneiden vuosien aineisto on säilössä ja myös huolehtia siitä, että vastuuhenkilöiden vaihtuessa tieto siirtyy eteenpäin. Jos säilytyksestä vastaava henkilö jättää yhdistyksen, on myös säilytettävä aineisto syytä siirtää jonkun nykyaktiivin vastuulle.

Paperiton säilyttäminen

Kirjanpitoaineistoja saa säilyttää koneellisesti (esimerkiksi CD-ROMilla tai pilvipalvelussa). Tällöin tulee huolehtia siitä, että aineistoon on mahdollista päästä käsiksi viipymättä Suomesta käsin koko lakisääteisen säilytysajan. Varmuuskopioinnista on syytä huolehtia ja vanhojen aineistojen toimivuus on syytä tarkastaa koko säilytysajan aika-ajoin.

Lopuksi

Seuraavassa osassa käsittelen omaisuuden käsittelyä yhdistyksen kirjanpidossa.

Yksinkertaisen tilinpäätöksen laatiminen 1.1.2016 jälkeen — Pienen yhdistyksen kirjanpito ja tilinpäätös, osa 6

[Luethan myös sarjan johdanto-osan.]

Yhdistyksen on laadittava tilinpäätös neljän kuukauden kuluessa tilikauden päättymisestä. Tässä postauksessa käsitellään tilinpäätöksen laatimista 1.1.2016 voimaan tulleen kirjanpitolain muutoksen mukaisesti. Tilikauden, joka on alkanut viimeistään 31.12.2015, tilinpäätöksen saa laatia vielä vanhan lain mukaan; siitä kirjoitin aiemmin postauksen.

Tilinpäätöstä laatiessa on syytä muistaa, että sen saattaa lukea yhdistyksen ulkopuolinenkin taho. Pienillä yhdistyksillä ei pääsääntöisesti ole velvollisuutta julkistaa tilinpäätöstään, mutta esimerkiksi rahoittajatahot saattavat haluta nähdä aiemmat tilinpäätökset. Tämä poikkeaa esimerkiksi kirjanpidosta ja tositeaineistosta, joita ei normaalioloissa tarvitse näyttää muille kun hallitukselle ja tilin- tai toiminnantarkastajille.

Tilinpäätöksessä noudatetaan olennaisuusperiaatetta. Sellaiset virheet ja puutteet tilinpäätöksessä, joiden ei voi kokonaisuutena arvioiden kohtuudella odottaa vaikuttavan tilinpäätöksen lukijan päätöksiin, voi jättää korjaamatta. Tilinpäätöksen liitetiedoissa on tällaiset poikkeamat selostettava. Huomaa, että tapahtumia ei voi jättää merkitsemättä juoksevaan kirjanpitoon olennaisuusperiaatteeseen vedoten.

Tilinpäätöksen tulee antaa oikea ja riittävä kuva yhdistyksen toiminnan taloudesta ja yhdistyksen taloudellisesta asemasta. Tämän lisäksi kirjanpitolaki määrää joukon yleisiä tilinpäätösperiaatteita (3 luvun 3 §):

Tilinpäätöstä ja toimintakertomusta laadittaessa [––] sekä tilinavausta tehtäessä noudatettaviin periaatteisiin kuuluvat:

  1. oletus kirjanpitovelvollisen toiminnan jatkuvuudesta;
  2. johdonmukaisuus laatimisperiaatteiden ja -menetelmien soveltamisessa tilikaudesta toiseen;
  3. huomion kiinnittäminen liiketapahtumien tosiasialliseen sisältöön eikä yksinomaan niiden oikeudelliseen muotoon (sisältöpainotteisuus);
  4. tilikauden tuloksesta riippumaton varovaisuus;
  5. tilinavauksen perustuminen edellisen tilikauden päättäneeseen taseeseen;
  6. tilikaudelle kuuluvien tuottojen ja kulujen huomioon ottaminen riippumatta niihin perustuvien maksujen suorituspäivästä (suoriteperuste);
  7. kunkin hyödykkeen ja muun tase-eriin merkittävän erän erillisarvostus; sekä
  8. taseessa vastaaviin ja vastattaviin kuuluvien erien ja tuloslaskelmassa tuottojen ja kulujen esittäminen täydestä määrästään niitä toisistaan vähentämättä, jollei yhdisteleminen ole tarpeen oikean ja riittävän kuvan antamiseksi (netottamiskielto).

Edellä 1 momentin 4 kohdassa tarkoitettu varovaisuus edellyttää erityisesti, että tilinpäätöksessä ja toimintakertomuksessa otetaan huomioon:

  1. ainoastaan tilikaudella toteutuneet voitot; sekä
  2. kaikki poistot ja arvonalennukset vastaavista sekä velkojen arvon lisäykset samoin kuin kaikki päättyneeseen tai aikaisempiin tilikausiin liittyvät, ennakoitavissa olevat vastuut ja mahdolliset menetykset, vaikka ne tulisivat tietoon vasta tilikauden päättymisen jälkeen

Mikäli juoksevassa kirjanpidossa on rikottu jotain näistä periaatteista (mikä on osin sallittua), on ennen tilinpäätöksen laatimista tilanne oikaistava siltä osin, kuin se on olennaista.

Tilinpäätöksen laatimisessa on useita vaiheita:

  1. Käydään juokseva kirjanpito läpi ja oikaistaan löytyneet virheet sekä poikkeamat yllä mainituista periaatteista.
  2. Aktivoidaan sellaiset kulut, jotka voidaan aktivoida.
  3. Tarkastetaan vastaavien kirjanpitoarvojen oikeellisuus.
  4. Tarvittaessa lasketaan ja kirjataan poistot.
  5. Laaditaan kirjanpidosta raakaversiot tuloslaskelmasta ja taseesta.
  6. Laaditaan tase-erittelyt.
  7. Laaditaan tilinpäätöksen liitetiedot.
  8. Kootaan varsinainen tilinpäätös.
  9. Päätösvaltainen hallitus allekirjoittaa tilinpäätöksen.

Käydään kukin vaihe osaltaan läpi.

Poikkeamat periaatteista

Yleisin juoksevassa kirjanpidossa esiintyvä poikkeama tilinpäätösperiaatteista laskujen kirjaaminen sitä mukaan kuin ne maksetaan. Tämä on täysin sallittu menettely (tilikauden aikana); sitä kutsutaan maksuperusteiseksi kirjanpidoksi.

Mikroyrityksen kriteerit täyttävä yhdistys voi jättää tilinpäätöksensä maksuperusteiseksi, mutta tällöin laki vaatii runsaasti liitetietoja. Nähdäkseni liitetietojen laatiminen vaatii yhtä lailla vaivaa kuin kirjanpidon oikaiseminen, joten suosittelen oikaisemaan kirjanpidon suoriteperusteiseksi seuraavasti:

  • Tutki kaikki laskut (riippumatta siitä, onko kyse yhdistyksen kirjoittamasta vaiko yhdistyksen maksettavasta laskusta) ja kirjaa tilikaudelle ne, jotka sinne kuuluvat. Kriteeri on: jos laskun perusteena oleva tavaran luovutus tai palvelun suoritus tai muu vastaava reaalimaailman tapahtuma sattui tilikaudella, pitää lasku kirjata tilikauden kirjanpitoon riippumatta siitä, milloin se on maksettu. Normaalisti tällainen maksamaton lasku kirjataan joko myyntisaamisten tai ostovelkojen tilille.
  • Tutki myös tilikauden päättymisen jälkeen lähetetyt ja vastaanotetut laskut sekä ilman laskua maksetut (sekä tulevat että lähtevät) maksut aina tilinpäätöksen laatimiseen asti. Myös nämä tulee kirjata päättyneelle tilikaudelle (siirtovelaksi tai siirtosaamiseksi), jos maksun perusteena oleva tavaran luovutus tai palvelun suoritus tai muu sellainen sattui tilikaudella. Tositteeksi voidaan hyvin ottaa löydetty lasku tai maksutapahtuman tosite, kunhan siihen liittää riittävän selvityksen siitä, että kirjaus tosiaan kuuluu edelliselle tilikaudelle.

Tilinpäätöksen laatimisen jälkeen voi tulla esille tuottoja tai kuluja, jotka kuuluisivat jo päätetylle tilikaudelle. Nämä kirjataan suoraan edellisten tilikausien ylijäämän (alijäämän) tilille, ei tulo- tai menotileille. Tällaiset tapahtumat tulee selostaa kirjausvuoden tilinpäätöksen liitetiedoissa. Lisäksi tulee harkita, antaako laadittu tilinpäätös oikean ja riittävän kuvan kyseisen tilikauden tapahtumista havaittu virhe huomioon ottaen; jos ei, myös kyseinen tilinpäätös pitää korjata. Mahdollinen korjattu tilinpäätös pitää uudelleen tilin- tai toiminnantarkastaa ja antaa yhdistyksen kokouksen käsiteltäväksi).

Kirjanpitoarvojen tarkastaminen

Kirjoitan tästä aiheesta myöhemmin.

Kulujen aktivointi ja poistot

Kirjoitan näistä aiheista osassa 8.

Tuloslaskelman raakaversion laatiminen

Jos yhdistys käyttää aiemmin esittelemääni taulukkolaskentamenetelmää juoksevassa kirjanpidossa, voi raakaversiot tuottaa esimerkiksi edellisen kirjoituksen ohjeiden mukaan. Jos kirjanpito tehdään kirjanpito-ohjelmalla, saadaan sieltä yleensä raakaversiot valmiiina.

Tase-erittelyiden laatiminen

Tilinpäätöksen tueksi on laadittava erittelyt kaikista taseen eristä oman pääoman eriä lukuunottamatta. Kustakin erästä tulee esittää, mistä se koostuu; esimerkiksi ostovelkojen erittely tarkoittaa luetteloa tilinpäätöspäivänä maksamatta olleista ostoveloista. Pysyvien vastaavien, ja vain niiden, osalta saadaan esittää tilikauden aikana tapahtuneet muutokset.

Esimerkkiyhdistyksen tase-erittelyt ovat hyvin yksinkertaiset, koska tasekin on yksinkertainen:

Siirtosaamiset
Kiimingin osuuspankki: Pankkitilin korko vuodelta 2011 0,87 €
0,87 €
Rahat ja pankkisaamiset
Pankkitili FI37 1590 3000 0007 76 107,50 €
107,50 €
Lyhytaikaiset ostovelat
Nettipulju Oy: Yhdistyksen nettisivujen vuosimaksu 20,00 €
20,00 €
Lyhytaikaiset siirtovelat
Kiimingin osuuspankki: joulukuun palvelumaksut 1,00 €
1,00 €

Tase-erittelyt on päivättävä ja laatijansa allekirjoitettava.

Tase-erittelyt eivät sisälly tilinpäätökseen mutta ne on annettava tilin- tai toiminnantarkastajalle ja säilytettävä asianmukaisesti. Niitä ei kuitenkaan normaalisti tarvitse antaa tilinpäätöksen mukana ulkopuolisten tarkasteltavaksi.

Liitetietojen laatiminen

Tällä hetkellä ei ole tietoa siitä, mitä liitetietoja pienen yhdistyksen tilinpäätökseltä jatkossa vaaditaan. Nämä säännökset sisältävää mikroyritysasetusta kun ei ole vielä annettu.

Tilinpäätöksen kokoaminen

Pienen yhdistyksen tilinpäätös sisältää taseen, tuloslaskelman ja liitetiedot. Mikäli yhdistys on laatinut rahoituslaskelman tai kirjanpitolain tarkoittaman toimintakertomuksen, nekin tulee sisällyttää tilinpäätökseen. Huomaa, että useimpien yhdistysten sääntömääräinen toimintakertomus ei ole kirjanpitolain tarkoittama toimintakertomus eikä sitä siksi oteta tilinpäätöksen osaksi.

Tilinpäätös on syytä laatia tekstinkäsittely- tai taulukkolaskentaohjelmassa siistiksi, yhtenäiseksi esitykseksi. Sen loppuun laitetaan yleensä valmiiksi paikka yhdistyksen hallituksen allekirjoitukselle.

Jos yhdistyksellä on tilintarkastajat, on kohteliasta lisätä allekirjoitustilan alle valmiiksi tilintarkastuslain mukainen tilintarkastajan tilinpäätösmerkintä (esimerkiksi tällainen: “Suoritetusta tilintarkastuksesta on tänään annettu kertomus.” plus paikka päiväykselle ja allekirjoitukselle). Toiminnantarkastajalta ei vaadita tilinpäätösmerkintää eikä sellaista siksi pidä tilinpäätökseen valmiiksi kirjoittaa. Myöskään tilin- tai toiminnantarkastuskertomusta ei pidä laatia tarkastajan puolesta.

Aiemmin tilinpäätös tuli laatia sidotuksi tasekirjaksi. Tämä vaatimus ei koske tilinpäätöstä, joka on laadittu 1.1.2016 voimaan tulleen lakimuutoksen mukaisesti.

Tilinpäätöksen allekirjoittaminen

Tilinpäätös on päivättävä ja yhdistyksen hallituksen allekirjoitettava. Käytännössä allekirjoitukset kirjoitetaan tilinpäätösasiakirjaan nille varatulle paikalle. Allekirjoituksen tekee päätösvaltainen hallitus, ja se on suositeltavaa tehdä kokouksessa pöytäkirjaan merkittävänä asiana.

Monissa yhdistyksissä hallitus vaihtuu samalla kun tilikausikin. Pitää huomata, että allekirjoittajan on oltava päätösvaltainen ja toimivaltainen allekirjoitushetkellä, joten tällaisessa yhdistyksessä sen tekee uusi, ei vanha hallitus!

Lopuksi

Seuraavassa osassa kirjoitan kirjanpitoaineiston säilytyksestä.

Kirjanpitolaki muuttui

Tänään voimaan tuli kirjanpitolain ja eräiden muiden lakien muutos. Tällä hetkellä Finlex ei vielä ole ottanut muutoksia huomioon, joten käytettävissä oleva aineisto on tavallista suppeampi. Tilanne varmaankin paranee nopeasti.

Muutokset virallisesti kertova laki on 1620/2015. Muutosten seuraaminen tuosta dokumentista on hankalaa.

Muutosten taustoista kertovat hallituksen esitys HE 89/2015 vp ja talousvaliokunnan mietintö TaVM 16/2015 vp. Näitä lukiessa kannattaa muistaa, että ristiriitatilanteessa mietintö voittaa käytännössä aina esityksen.

Uutta lakia sovelletaan 1.1.2016 tai sen jälkeen alkavaan tilikauteen. Sitä saa soveltaa myös tämän vuoden puolella laadittaviin aiempien vuosien tilinpäätöksiin. Viime vuoden tilinpäätöksen saa laatia rauhassa vanhojen säädösten ja ohjeiden mukaan, mutta monien yhdistysten tämän vuoden juoksevassa kirjanpidossa sovelletaan jo uusia säädöksiä.

Kunhan kerkeän itse tutustua lakiin, päivitän pienen yhdistyksen kirjanpitoa koskevia postauksiani tässä blogissa. Kirjoitan samalla muutoksista tarkemmin.

Hyvää uutta vuotta!

FL (väit.)

En ole vielä tohtori.

Väitöstilaisuuden lopuksi vastaväittäjäni ilmoitti esittävänsä tiedekuntaneuvostolle väitöskirjani hyväksymistä. Tiedekuntaneuvosto kokoontuu 21.12.2015, jolloin se tekee virallisen päätöksen työn hyväksymisestä tai hylkäämisestä sekä sille annettavasta arvosanasta. Tämän jälkeen joudun vielä muodollisesti anomaan tutkintoa. Tohtorin tittelin käyttöluvan saanen siten joululahjaksi tai viimeistään pian vuodenvaihteen jälkeen, riippuen kanslian ja dekaanin aikatauluista.

Tässä odotellessa olen filosofian lisensiaatti, väitellyt, eli FL (väit.).

Väitöspäivän aamuna pukeuduin vuokraamaani tummaan pukuun ja siirryin työpaikalle. Seuraavat puolitoista tuntia vietin laatimalla vastaväittäjälle englanninkielistä lyhennelmää lectio praecursoriastani. Sen jälkeen kävimme kustoksen kanssa noutamassa vastaväittäjän hotellilta. Kuuntelin vastaväittäjän vierailuluennon mielenkiinnolla, ja sen jälkeen kävelimme kolmestaan Seminaarinmäelle.

Vanha juhlasali (kuva Maija Tuomaala)
Vanha juhlasali (kuva Maija Tuomaala)

Tarkastimme ensin vanhan juhlasalin, sitten siirryimme valmistautumistilaan. Söimme erittäin kevyen lounaan ja pukeuduimme väitösviittoihin. Noin 12:15 olimme takaisin vanhan juhlasalin ovella. Virastomestari koputti kolmasti, odotti salin valmistautumista ja sitten päästi meidät saliin. Kuulemma kävelin reippaasti.

Saavumme saliin. Kuva Maija Tuomaala
Saavumme saliin. Kuva Maija Tuomaala

Itse tilaisuuden muistan aika hyvin. Pidin lectioni luettuna puheena, ihan siksi, että sillä tavalla jännityksen vaikutus esityksen selkeyteen jää varsin pieneksi (eikä luettu esitys edes kuulosta kamalan pahalta, kun sen ottaa esiintymisenä eikä pelkkänä ääneen lukemisena, vähän kuin olisi uutistenlukija tai näyttelijä).

Lectiota lukemassa. Kuva Maija Tuomaala
Lectiota lukemassa. Kuva Maija Tuomaala

Vastaväittäjäni, professori Lutz Prechelt (Freie Universität Berlin, Saksa), esitti hyviä ja mielenkiintoisia kysymyksiä. Välillä jouduin hikoilemaan vastausteni kanssa, kuten tarkoitus onkin.

Väittelyä. Kuva Maija Tuomaala
Väittelyä. Kuva Maija Tuomaala

Väitöksessä nousi esille yksi yleisökysymys. Ylimääräisen vastaväittäjän tittelin otti itselleen emeritusprofessori Markku Sakkinen.

Emeritusprofessori Markku Sakkinen kysyy yleisön joukosta. Kuva Maija Tuomaala
Emeritusprofessori Markku Sakkinen kysyy yleisön joukosta. Kuva Maija Tuomaala

Väitös kesti kuulemma kaksi tuntia. Itse en tietenkään seurannut kelloa. Yleisöä oli kuulemma noin 50–60 henkeä, josta suurin osa nähtiin myös väitöskahveilla tilaisuuden jälkeen.

Väitöksen ja kahvituksen jälkeen vietin pari tuntia työpaikalla. Sain myös luettavakseni vastaväittäjäni lausunnon tiedekuntaneuvostolle, ja ilmoitin, ettei minulla ole siihen huomauttamista.

Ilta jatkui 11 hengen karonkalla Pöllöwaari-ravintolassa ravintolan jouluillallinen-menulla. Ravintolan palvelu oli erinomaista sekä tilaisuuden järjestelyissä että itse tilaisuudessa, ruoka oli mainiota ja samoin juomat. Jokainen sai valita, juoko alkoholia vai alkoholitonta; holittomat vaihtoehdot ylittivät odotukseni. Keskustelu oli erinomaista, ja karonkkaan perinteisesti kuuluvat puheet olivat kivoja.

Koska joku tuleva väittelijä kuitenkin googlaa tämän tekstin tietty kysymys mielessään, kuten minäkin googlailin muiden tekstejä viime parin kuukauden aikana, mainittakoon, että karonkka maksoi minulle noin tuhat euroa.

Lectio praecursoria

Arvoisa kustos,
kunnioitettu vastaväittäjä,
hyvät kuulijat:

lectio-slides-0

Jokaisella meistä on salasanoja, jotka suojaavat meidän omia tietojamme ja varmistavat, että kukaan ei pysty esiintymään meinä ilman lupaamme. Salasana voi kuitenkin turvata tietojamme ja identiteettiämme vain, jos ohjelma toimii oikein sen tarkastaessaan.

lectio-slides-1

Sattuipa muutama vuosi sitten niin, että eräs tietokoneohjelma tarkisti salasanan oikeellisuuden käyttämällä apurutiinia memcmp, joka raportoi vertailun tuloksen kokonaisluvulla: jos salasana oli oikea, tulos oli nolla; ja jos tulos ei ole nolla, salasana oli väärä. Koska tulos piti katkaista mahtumaan tietoalkioon, jonka tyyppi on my_bool, tulos jaettiin ilman eri käskyä luvulla 256 ja jakojäännöstä käytettiin tekemään päätös: jos jakojäännös oli nolla, salasanan katsottiin olleen oikein. Mutta miten käy, jos apurutiini palauttaakin luvun 512? Jakojäännös on nolla, vaikka salasana oli väärin. Tämän virheen ansiosta oli kenen tahansa käyttäjätunnusta mahdollista käyttää pienellä vaivalla tietämättä salasanaa. Vika on totta kai kauan sitten korjattu.


Kun menemme verkkopankkiin, luotamme, että kukaan asiaton ei pääse väliin nuuhkimaan, mitä teemme. Teknisesti tämä taataan niin, että pankin ja oman koneemme välinen liikenne salakirjoitetaan ja pankki lähettää koneellemme digitaalisen allekirjoituksen, jolla koneemme varmistaa, että vastapuoli todella on pankki eikä joku hyökkääjä. Tämä kuitenkin toimii vain, jos koneemme ohjelmisto tarkistaa digitaalisen allekirjoituksen asianmukaisesti.

lectio-slides-2

Eräs erittäin yleisesti käytetty ohjelmisto valmistautui verkkopankin lähettämän digitaalisen allekirjoituksen tarkistamiseen tekemällä useita valmistelutoimenpiteitä, joista mikä tahansa voi epäonnistua. Niinpä ohjelmisto aina valmistelutoimenpiteen lopuksi tarkisti, epäonnistuiko toimenpide, ja mikäli niin kävi, hyppäsi toisaalle ohjelmaan. Tämä on aivan normaalia. Jostain syystä erään tällaisen tarkistuksen jälkeen ohjelmassa oli vielä pari vuotta sitten ylimääräinen hyppykäsky. Ensimmäinen goto fail tuli suoritettavaksi, jos sitä edeltävä toimenpide epäonnistui. Toinen suoritettiin joka tapauksessa. Niinpä sen jälkeen tulevaa varsinaista tarkastusta ei koskaan tehty. Hyökkääjän oli mahdollista tekeytyä verkkopankiksi ilman, että kukaan huomaa mitään. Tämäkin vika on sittemmin korjattu.

Molempien vikojen taustalla on ohjelmointivirhe, jota pahentaa jokin käytetyn ohjelmointikielen erityispiirre.


Kaikki tietokoneohjelmat kirjoitetaan jollakin ohjelmointikielellä. Kuten luonnolliset kielet, esimerkiksi suomi tai englanti, ne koostuvat sanoista joista kootaan laajempia ilmaisuja. Toisin kuin luonnollisten kielten tapauksessa, ohjelmointikielen käyttäjä joutuu olemaan erityisen tarkka siitä, mitä hän kirjoittaa. Jos suomeksi sanon minä esiinnyt nyt teihin, se kuulostaa kummalliselta, mutta jokainen ymmärtänee, mitä halusin sanoa. Jos tietokoneelle kirjoittaa kaksi kertaa peräkkäin goto fail, tietokone ei pohdi, onko tämä järkevää, vaan tekee sen, mitä käsketään.

Kaikki ohjelmointikielet ovat keinotekoisia kieliä. Tietokone ei ymmärrä yhtäkään niistä itsestään, vaan jonkun tulee laatia tietokoneohjelma, joka tulkkaa tai kääntää kielellä kirjoitetun ohjelman tietokoneen ymmärtämään muotoon. Tätä kutsutaan kielen
toteuttamiseksi. Joko toteuttamisen yhteydessä tai sitä ennen pitää jonkun suunnitella kieli eli päättää, millaiset ilmaisut siinä ovat sallittuja ja mitä ne tarkoittavat. Myös jo olemassaolevia kieliä muokataan aika ajoin; muokkaukset suunnitellaan ja sitten (tai samaan aikaan) toteutetaan.


Ohjelmointikielten tutkimusta on tehty lähes niin kauan kuin tietokoneita on ollut olemassa, aivan 1950-luvulta lähtien. Valtaosa tutkimuksista selvittää, millaisia ohjelmointikieliä voisi olla olemassa, ja ratkoo ohjelmointikielten teknisiä ongelmia. Niiden tutkimusote on matemaattis-teoreettinen. Vasta 1970-luvulla alettiin tutkia, millaiset ohjelmointikielten suunnitteluratkaisut johtavat todellisten ihmisten käsissä parhaisiin lopputuloksiin. Tutkimusasetelma tässä on tyypillisesti empiirinen ja kokeellinen.

lectio-slides-3

Ensimmäisen tällaisen tutkimuksen julkaisivat Max Sime, Thomas Green ja D. J. Guest vuonna 1973. He antoivat koehenkilöiden laatia ruoanvalmistusohjeita ohjelmointikieltä muistuttavalla keinotekoisella kielellä. Osa koehenkilöistä käytti kielen versiota nimeltä JUMP, jossa käskyt seuraavat toisiaan ja tilannekohtainen valintapäätös johtaa hyppyyn yli osan käskyistä. Muiden koehenkilöiden käyttämässä kielen versiossa nimeltään NEST ohjelmalla oli hierarkinen rakenne. NEST-kieltä käyttäneet koehenkilöt pärjäsivät keskimäärin olennaisesti paremmin kuin JUMP-kieltä käyttäneet.

lectio-slides-4

Muutama vuosi myöhemmin he julkaisivat jatkotutkimuksen, jossa ehdon alle tuli voida laittaa useampi kuin yksi käsky. JUMP oli edelleen samanlainen kieli, mutta NEST oli jaettu kahdeksi vaihtoehdoksi. Ensimmäinen vaihtoehto, nimeltään NEST-BE, muistutti nykykieliä niin, että useiden käskyjen jonon ympärille kirjoitetaan BEGIN ja END. Toisessa vaihtoehdossa, NEST-INE, ehtorakenteen päättyminen ilmaistaan myös sanalla END, mutta ehto toistetaan kolmesti. Nyt NEST-INE hakkasi molemmat vaihtoehtoiset ratkaisut selvästi, mutta NEST-BE ja JUMP voittivat toisensa eri kategorioissa.

Aiemmin esittelin teille goto fail -virheen, jossa ohjelmoija oli vahingossa toistanut hyppykäskyn. Simen ja kumppanien jo 1970-luvulla julkaistujen tutkimusten terminologialla sanoen ohjelmoija oli käyttänyt C-kieltä JUMP-kielenä. Hän olisi voinut käyttää sitä myös NEST-BE-kielenä. Herää kysymys, olisiko C-kielen suunnittelussa pitänyt ottaa huomioon Simen ja kumppanien tutkimustulokset ja estää C-kielen käyttäminen JUMP-kielenä. Olisiko jopa pitänyt valita NEST-INE?


lectio-slides-5

Käsitykseni mukaan käytännön ohjelmointikielten suunnittelutyössä ei juurikaan oteta huomioon tämänkaltaisia tutkimustuloksia. Voi olla, että suunnittelijat eivät tunne tätä tutkimuskirjallisuutta tai eivät osaa tulkita sitä asianmukaisesti. Vastaavanlaisen ongelman ratkaisuksi lääketieteessä kehitettiin muutama vuosikymmen sitten lähestymistapa, jota vuonna 1992 alettiin kutsua nimellä evidence-based medicine}, suomeksi kaiketi näyttöön perustuva lääketiede. Siinä yksittäinen lääkäri voi, jos on epävarma potilaan asianmukaisesta hoidosta, selvittää asiaa tutkimuskirjallisuuden avulla. Ensiksi hän muotoilee kysymyksen, toiseksi hän etsii tutkimuskirjallisuudesta kysymykseen mahdollisesti vastaavia tutkimusraportteja, kolmanneksi hän arvioi löytyneiden tutkimusten luotettavuuden ja hyödyllisyyden, neljänneksi soveltaa löytynyttä vastausta käytäntöön ja viidenneksi arvioi omaa suoriutumistaan.

Nyt tarkastettavan väitöskirjani lähtökohtana on hypoteesi, että vastaavanlainen lähestymistapa saattaisi olla hyödyllinen myös ohjelmointikielten suunnittelussa. Välittömästi esiin nousee useita kysymyksiä:

lectio-slides-6

Ensiksi, mitä tämä evidence eli näyttö on, josta näyttöön perustuvassa toiminnassa on kyse?

Toiseksi, kuinka paljon tähän käyttöön soveltuvaa tutkimusta on julkaistu?

Kolmanneksi, millaiseksi näyttöön perustuva lääketiede pitäisi sovittaa, jotta se soveltuisi ohjelmointikielten kehitykseen?

Näihin kolmeen kysymykseen on vastattava, ennen kuin voidaan edes ryhtyä selvittämään, olisiko näyttöön perustuvasta ohjelmointikielten kehityksestä mitään todellista hyötyä. Näihin kysymyksiin vastaan väitöskirjassani.


Kysymys evidenssin eli näytön luonteesta osoittautui huomattavan hankalaksi. Lähdin alun perin siitä oletuksesta, että asia on tutkittu ja ratkaistu kirjallisuudessa, jota en tunne. Osallistuin keväällä 2011 näyttöön perustuvan ohjelmistotekniikan tutkimuskonferenssiin Evaluation and Assessment in Software Engineering Englannin Durhamissa. Sopivalla hetkellä kysyin eräältä senioritutkijalta vinkkejä. Tuli nopeasti selväksi, ettei hän otttanut kysymystä vakavasti. Kaivelin myös ohjelmistotekniikan alan kirjallisuutta, ja sieltä tuli vastaan sama hyvin pinnallinen näkemys: näyttö on niin itsestään selvä käsite ettei sitä tarvitse analysoida.

lectio-slides-7

Etsin seuraavaksi vastausta lääketieteen kirjallisuudesta. Pohjimmiltaan näyttöön perustuvassa lääketieteessä näytöllä tarkoitetaan julkaistua tutkimustulosta, ja sen luotettavuuden ajatellaan riippuvan lähes pelkästään käytetystä tutkimusasetelmasta: kontrolloitu koe on parempi kuin mikä tahansa muu, mukaan lukien teoreettinen pohdinta, ja satunnaistettu koe, eli koe, jossa koehenkilöt jaetaan ryhmiin arpomalla, on parempi kuin sellainen, jossa näin ei tehdä. Järjestelmälliset kirjallisuuskatsaukset ovat puolestaan parempia kuin alkuperäistutkimukset, ja niistä parhaimmistoa ovat ne, jotka jättävät kaiken muun kuin satunnaistetut kokeet huomiotta. Tällaista näyttöhierarkiaa käytetään ohjaamaan sekä kirjallisuushakuja että löydettyjen tutkimusten laadun arviointia: jos löytyy yksikin satunnaistettuja kokeita tarkasteleva järjestelmällinen katsaus, muita tutkimuksia ei edes etsitä.

Näyttöhierarkia vaikuttaa päällisin puolin aivan mainiolta idealta. Se on yksinkertainen sääntö, jolla yksittäisen lääkärin kirjallisuushaut saadaan pidettyä pieninä, ja se vähentää tarvetta oikeasti pohtia löydettyjen tutkimusraporttien sisäisen logiikan pitävyyttä. Mutta mihin perustuu väite, että näin toimimalla löydetään oikeasti lähimpänä totuutta olevat tutkimukset? Lääketieteen tutkimuskirjallisuudessa näyttöhierarkiaa onkin kritisoitu.

Pohjimmiltaan siinä, pitääkö joku näyttöhierarkiaa hyvänä vai huonona ideana, on kyse tieteenfilosofisista näkemyseroista.


lectio-slides-8

Akateemisessa tieteenfilosofiassa keskeinen kysymys 1700-luvulta alkaen on ollut induktion ongelma. Miksi siitä, että aurinko on noussut tähän mennessä joka päivä, voi päätellä, että se nousee huomennakin? Vai onko tällainen päätelmä ylipäätään sallittu? — Onneksi väitöstilaisuuteni pidetään Jyväskylässä, jossa tämä esimerkki vielä toimii; Utsjoellahan aurinko ei nouse huomenna!

Loogiset positivistit, joita sittemmin kutsuttiin loogisiksi empiristeiksi, pyrkivät luomaan induktiolle logiikan; tähän projektiin osallistuivat muiden muassa suomalaiset Jaakko Hintikka ja Georg Henrik von Wright sekä saksalaissyntyiset Peter Hempel ja Rudolf Carnap.

Samaan aikaan todennäköisyyslaskennan teoria kehittyi valtavasti, ja tilastotieteen teoria jakaantui useaan koulukuntaan. Jakolinjana oli suhtautuminen käänteisen todennäköisyyden periaatteeseen, jonka idea oli johtaa hypoteesin todennäköisyys suoraan tilastoista. Valtavirraksi kehittyi Ronald Fisherin, Jerzy Neymanin ja Egon Pearsonin ajatusten sekoitus, jossa käänteisen todennäköisyyden periaate ja siten hypoteesin todennäköisyyden käsite kiellettiin. Oppositioon jäivät muiden muassa Harold Jeffreys ja Leonard Savage, joiden teorian ytimen muodosti juurikin käänteinen todennäköisyys ja jota nykyään kutsutaan Bayesiläiseksi tilastotieteeksi.

Monet tieteenfilosofit kannattavat nykyään induktion teoriaa, jossa yhdistetään loogisten empiristien tavoite Bayesiläisen tilastotieteen perusideoihin. Väitöskirjassani otan tämän lähestymistavan pohjaksi. Induktiivisen argumentin vahvuus on kunkin kuuntelijan henkilökohtainen arvio siitä, kuinka hyvin se vakuuttaa hänet. Jotta tätä arviota voidaan pitää rationaalisena, sen tulee täyttää tietyt ristiriidattomuusvaatimukset. Osoittautuu, että nämä vaatimukset johtavat kohtuullisen selvästi siihen, että argumentin vahvuus on sen loppupäätelmän subjektiivinen todennäköisyys.

Tällaisen induktion teorian pohjalta näytölle tulee luonnollinen tulkinta: näyttöä on mikä vain, joka parantaa induktiivisen argumentin vahvuutta. Millainen tutkimus vain kelpaa näytöksi, mutta riippuu kovasti tutkimuksen yksityiskohdista, parantaako se argumenttia paljon vai vähän.

Kun arvioinnin pohjaksi otetaan tämä induktion teoria, näyttöhierarkian asema jää epävarmaksi. Kontrolloitu koe on usein paras vaihtoehto, ja satunnaistaminen voi parantaa kokeen luotettavuutta. Ongelmallisempaa on perustella, miksi osa saatavilla olevasta näytöstä pitäisi rajata pois. Jokainen voi itse toki tehdä tällaisen rajauksen omasta puolestaan.


lectio-slides-9

Toinen kysymykseni oli, kuinka paljon ohjelmointikielten suunnittelun ohjaukseen soveltuvaa tutkimusta on julkaistu. Tätä varten toteutin järjestelmällisen kirjallisuuskartoituksen. Aloitin sen vuonna 2010 ja sain sen valmiiksi viime vuonna; raportoin sen alun perin lisensiaattitutkimuksenani.

Kirjallisuuskartoituksella eli mapping studylla tarkoitan kirjallisuuteen perustuvaa tutkimusta, jossa pyritään kartoittamaan jonkin tutkimusalueen yleinen tila. Tässä tapauksessa halusin selvittää, mitä asioita on tutkittu ja miten.

Se, että kartoitukseni oli järjestelmällinen, tarkoittaa, että olin sen etukäteen yksityiskohtaisesti suunnitellut ja suunnitelman mukaisesti toteuttanut. Kirjasin ylös kaiken minkä tein. Aikaahan tähän meni useita vuosia.

lectio-slides-10

Kartoituksen tuloksista nostan esille pari havaintoa. Ensinnäkin empiirisiä tutkimuksia, joissa on vertailtu eri tapoja ratkaista jokin suunnitteluongelma, on julkaistu vuodesta 1973 asti. Monta kymmentä vuotta tutkimuksia julkaistiin varsin vähän, kunnes kymmenkunta vuotta sitten jotain tapahtui, ja julkaisujen määrä lähti huomattavaan kasvuun. Kartoitukseni aineisto päättyy vuoteen 2012, mutta näppituntumani mukaan julkaisujen määrä ei ole sen jälkeen ainakaan lähtenyt laskuun.

Vielä karummalta tilanne näyttää, jos rajoitutaan tarkastelemaan pelkästään satunnaistettuja kokeita. Vuodesta 1976 vuoteen 2012 julkaistiin keskimäärin yksi satunnaistettu koe joka toinen vuosi, eikä viimeisten aineistooni kuulvien vuosien nousukaan kovin huima ollut. Vertailun vuoksi: lääketieteessä satunnaistettuja kokeita julkaistaan tuhansia joka vuosi, ehkä jopa kymmeniä tuhansia joka vuosi.

lectio-slides-11

Eniten on tutkittu sitä, miten ehtolauseet tulisi suunnitella. Aiemmat esimerkkini kuuluivat tähän kategoriaan. Myös tyyppijärjestelmiä, jotka sulkevat pois eräitä helposti koneellisesti tunnistettavia virhelajeja, on tutkittu jonkin verran; jos C-kielessä olisi ollut parempi tyyppijärjestelmä, turhaa 256:lla jakamista ei olisi todennäköisesti tapahtunut ja salasanatarkistus olisi toiminut. Kaiken kaikkiaan vaikuttaa, että varsin vähäiseen määrään suunnitteluongelmia olisi kirjallisuudesta edes periaatteessa mahdollista löytää nykyisellään vastaus.


lectio-slides-12

Kolmannen kysymykseni — eli millaiseksi näyttöön perustuva lääketiede pitäisi sovittaa, jotta se soveltuisi ohjelmointikielten kehitykseen — vastauksen lähtökohtana on sama viiden askeleen menetelmä, jota näyttöön perustuvassa lääketieteessä sovelletaan. Olen väitöskirjassani hahmotellut tarkempia ohjeita kullekin viidelle askeleelle, joita näyttöön perustuvassa ohjelmointikielen kehityksessä tulisi noudattaa. En niitä tässä käy yksityiskohtaisesti läpi, sen sijaan otan esiin muutamia yleisiä huomioita.

Näyttöön perustuvan lääketieteen pääasiallinen toimija on yksittäinen lääkäri, jolla on todellinen ongelma todellisen potilaan hoidon kanssa, ja lopulliseen hoitopäätökseen vaikuttaa kirjallisuudesta löytyneen vastauksen lisäksi potilaan tilanne ja arvot. Vastaavasti näyttöön perustuvan ohjelmointikielten kehityksen pääasiallinen toimija on yksittäinen ohjelmointikielen suunnittelija tai suunnittelijaryhmä, jolla on todellinen ongelma suunnittelutyössään ja jonka työskentelyyn vaikuttavat työn tavoitteet ja tekijöiden henkilökohtaiset tai organisaation arvot. Niinpä olennainen osa väitöskirjassa esittämäänu menetelmää on suunnittelijan vapaa harkinta siitä, mikä on olennaista. Kaksi eri suunnittelijaa voivat päätyä samalla menetelmällä samasta suunnitteluongelmasta eri tulokseen, koska heillä voi olla erilaiset painotukset ja tavoitteet sekä erilaiset toimintaa ohjaavat arvot.

Näyttöön perustuva ohjelmointikielten suunnittelu ei ole kaikenkattava menetelmä, jota tulisi soveltaa aina ja yksinomaan. Jos suunnittelijalla on selvät sävelet siitä, mitä hän haluaa tehdä, ei sitä tarvitse erikseen hyväksyttää tutkimuskirjallisuudella. Samoin jos suunnittelija on itse tutkinut jotain asiaa, ei tutkimuksen julkaisua ole tarpeen odottaa vaan sen tuloksia voi totta kai soveltaa heti oman kielen suunnittelussa.


lectio-slides-13

Väitöskirjani pääotsikko on suomeksi Näyttöön perustuva ohjelmointikielten suunnittelu, mutta kirjani ei suinkaan edes yritä olla viimeinen sana aiheestaan. Alaotsikossa esiintyy sana exploration eli tutkimusmatka kuvaamassa väitöskirjan luonnetta — kirjassa matkataan pääotsikon ympärillä selvittämässä maastoa ja piirtämässä karttaa sen lähialueista. Tutkimusmatka on filosofinen, koska yksi tutkimusmatkan kohteista on pääotsikon alla oleva maa, tieteenfilosofia ja tietoteoria; se on filosofinen myös siksi, että yksi käyttämistäni tutkimusotteista on filosofinen analyysi. Tutkimusmatka on metodologinen eli menetelmäopillinen, koska kirjassa tarkastellaan myös tiettyjä sen tekemisessä tarvittuja menetelmiä tarkemmin ja osittain myös itsenäisinä tutkimusmatkan kohteina.

May I ask you, Mr. Professor, as the Opponent appointed by the faculty, to present the comments to my dissertation that you see justifiable?

Tämän jälkeen kehotan niitä arvoisia läsnäolijoita, joilla on jotakin muistuttamista väitöskirjani johdosta, pyytämään puheenvuoron kustokselta.

Väitöstilaisuus 4.12.2015 kesti 2 tuntia ja siihen osallistuneista yksi esitti tämän kehoituksen jälkeen kysymyksen. Hänestä tuli siten ns. ylimääräinen vastaväittäjä.

Väitöstilaisuus lähestyy, väitöskirja julkaistu

Puolustan väitöskirjaani “Evidence-Based Programming Language Design: A Philosophical and Methodological Exploration” perjantaina 4. joulukuuta 2015 kello 12 Jyväskylän yliopiston vanhassa juhlasalissa (Seminarium-rakennus, sali S212). Vastaväittäjänä on professori Lutz Prechelt (Freie Universität Berlin, Saksa) ja kustoksena professori Tommi Kärkkäinen (Jyväskylän yliopisto).

Väitöstilaisuus on julkinen ja sinne on vapaa pääsy. Yleisö voi pukeutua kuten mihin tahansa arkiseen aktiviteettiin yliopistossa (esimerkiksi luennolle), juhlapukeutuminen ei ole tarpeen. Facebook-tapahtuma on.

Väitöskirjan esitarkastajina toimivat professori Matthias Felleisen (Northeastern University, Yhdysvallat) ja professori Andreas Stefik (University of Nevada, Las Vegas, Yhdysvallat). Väitöskirja sisältää merkittävän osan lisensiaattityöstäni, jonka tarkastivat viime vuonna tohtori Stefan Hanenberg (Duisburg-Essenin yliopisto, Saksa) ja professori Stein Krogdahl (Oslon yliopisto, Norja).

Väitöskirja on nyt julkisesti saatavilla PDF:nä.

YHTEENVETO

Näyttöön perustuva ohjelmointikielten kehitys. Filosofinen ja menetelmäopillinen tutkimusmatka.

Väitöskirjassani pohdin, kuinka olemassa olevaa tutkimuskirjallisuutta voisi käyttää hyväksi ohjelmointikielten kehityksessä. Vastaavaan ongelmaan lääketieteessä kehitettiin 1970–1980-luvuilla lähestymistapa, jota 1990-luvun alusta on kutsuttu näyttöön perustuvaksi lääketieteeksi. Niinpä väitöskirjassani selvitän vastaavan näyttöön perustuvan ohjelmointikielten kehityksen mahdollista olemusta.

Väitöskirjan tutkimusmenetelmänä on toisaalta filosofinen käsiteanalyysi ja toisaalta systemaattinen kirjallisuuskartoitus. Käsiteanalyysillä selvensin näyttöön perustuvan lääketieteen olemusta ja sen siirtämistä soveltuvin osin ohjelmointikielten kehitykseen. Systemaattisella kirjallisuuskartoituksella, jonka aiemmin raportoin lisensiaattityönäni, selvitin, mitä empiiristä tutkimusnäyttöä on olemassa, jota voisi ohjelmointikielten näyttöön perustuvassa kehityksessä käyttää hyväksi. Lisäksi väitöskirja sisältää laajahkon tällaisten tutkimusten metodologiaa pohtivan osuuden.

Osana metodologian tarkastelua olen väitöskirjassani tarkentanut systemaattisten kirjallisuuskartoitusten ja -katsausten menetelmää kysyen, soveltuuko Cohenin kappa aineistokoodauksen luotettavuuden arviointiin. Matemaattisilla menetelmillä vastaukseksi selvisi ei. Sen asemesta suosittelen käyttämään Krippendorffin alfaa tai Fleissin kappaa.

Empiirisen tutkimusnäytön kirjallisuuskartoituksessa, jonka aineisto ulottuu vuoteen 2012 asti, havaitsin, että ohjelmointikielten suunnitteluratkaisujen hyödyllisyyttä on tutkittu jonkin verran: kaiken kaikkiaan tutkimuksia löytyi 141, ja näistä 65 tutkimusta, jotka ovat selkeimmin hyödyllisiä kielen kehittäjille, muodostavat tulosten ytimen. Eniten on tutkittu eri tapoja ilmaista suorituksen haarautumista (11 koetta ytimessä, joista 8 kontrolloituja, joista 3 satunnaistettuja; vanhin tutkimus julkaistu 1973), valintaa staattisen ja dynaamisen tyypityksen välillä (6 tutkimusta ytimessä, joista 5 kontrolloituja kokeita, joista 4 satunnaistettuja; vanhin tutkimus julkaistu 2009), sekä eri tapoja ilmaista silmukkarakenne (5 tutkimusta ytimessä, joista 4 kokeita, joista 3 kontrolloituja ja yksi satunnaistettu; vanhin tutkimus julkaistu 1978). Hyödyllisyyttä on tutkimuksissa tarkasteltu pääasiassa virhealttiuden, ohjelmien ymmärrettävyyden sekä ohjelmointityön työläyden kautta.

Tutkimusmenetelmistä suosituin ytimessä oli (määrällinen) koe, jota käytti 41 tutkimusta. Toiseksi suosituin 11 tutkimuksella oli tutkimusasetelma, jossa olemassa olevia ohjelmia muokattiin käyttämään uutta ohjelmointikielen suunnitteluratkaisua hyväkseen. Kolmanneksi suosituin 8 tutkimuksella oli ohjelmistokorpuksen analyysi. Ytimessä käytettiin lisäksi tapaustutkimusta (2), kyselyä (2) ja ohjelmaparien analysointia (1). Ytimen kokeellisissa tutkimuksissa yleisimmin koehenkilöinä käytettiin ohjelmoijia (35 koetta), jotka tavallisimmin olivat ohjelmoinnin opiskelijoita (29 koetta).

Kartoituksen tuloksista on pääteltävissä varsin masentava kuva tämän kartoituksen alueeseen kuuluvasta tutkimusaktiviteetista. Vaikuttaa siltä, että aina silloin tällöin joku tutkija tai tutkimusryhmä keksii, että tällaiset tutkimukset olisivat hieno juttu, ja tekee niitä sitten muutaman kunnes kyllästyy ja vaihtaa aihetta. Julkaistut tutkimukset eivät vaikuttaisi inspiroineen kovin paljoa jatkotutkimuksia, eikä paradigman perustavia esimerkkitutkimuksia näytä syntyneen. On myös mahdollista, että julkaisufoorumien toimittajat ja vertaisarvioijat pitävät empiiristä tutkimusta niin hyödyttömänä, ettei sellaisia tutkimuksia juuri niiden tekemisestä huolimatta julkaista. On toki mahdollista, että viimeisen viiden vuoden aikana lisääntynyt tutkimustoiminta tarkoittaa, että tilanne on muuttunut; mutta koska lukumäärät ovat edelleen pieniä, saattaa tilanne palata jokusen vuoden jälkeen takaisin matalan aktiviteetin tasolle. Valitettavasti kartoitukseni aineistosta ei ole mahdollista päätellä mitään viime vuosien tutkimustoiminnasta.

Väitöskirjan tuloksena syntynyt näyttöön perustuvan ohjelmointikielten kehityksen hahmotelma on seuraava. Jos kielen kehittäjälle on tosiasiassa epäselvää, miten jokin kehitysongelma tulisi ratkaista, hän voi alkaa soveltaa menetelmän viisiaskelista toimintaohjetta. Ensin hän täsmentää kysymyksensä, sitten hän tekee kysymyksen perusteella kirjallisuushaut, kolmanneksi hän arvioi löytyneiden lähteiden luotettavuuden, neljänneksi soveltaa kirjallisuuden antamaa ratkaisua ongelmaansa ja viidenneksi pohtii, kuinka menetelmän soveltaminen häneltä onnistui. Tämä toimintaohje on tällä yleistasolla hyvin samanlainen kuin näyttöön perustuvassa lääketieteessä; eroja tulee, kun askelille annetaan tarkemmat toteutusohjeet.

Kuten kaikilla tutkimuksilla, tällä väitöskirjalla on rajoitteita, jotka tulee tuloksia tulkittaessa ottaa huomioon. Käsiteanalyysin tärkein rajoite on, etteivät sillä tavalla syntyvät tulokset ole todistettavissa oikeiksi; paraskaan käsiteanalyysi ei välttämättä vakuuta kaikkia lukijoita. Väitöstyöni käsiteanalyysin tavoitteena on siten ollut, että eri mieltä oleva lukija kykenee vastaamaan argumentteihini järkevillä vasta-argumenteilla ja siten edistämään aihetta koskevaa tieteellistä keskustelua. Kirjallisuuskartoituksen keskeisin rajoite puolestaan on, että julkaisujen mukaan ottamisessa ja tutkimusten koodauksessa on voinut sattua virheitä, vaikka niitä on pyritty välttämään ja löytämään. On myös mahdollista, että joitakin asiaan liittyviä tutkimuksia ei ole löytynyt hauissa eikä siksi ole kartoituksessa huomioitu.

Väitöskirjan olennaisin tulos on näyttöön perustuvan ohjelmointikielten kehityksen hahmotelma, joka soveltuu jatkotutkimuksen pohjaksi. Sitä ei ole empiirisesti arvioitu, joten lopullisena vastauksena sitä ei voi pitää. Sen käytettävissä nykyisin oleva empiirinen tutkimusnäyttö on ohutta, mutta sitä on.

Doctoral defense approaching, dissertation publicly available

I will be defending my doctoral dissertation “Evidence-based programming language design: a philosophical and methodological exploration” on December 4, 2015 at noon, in the Seminarium building, auditorium S212, of the University of Jyväskylä. My opponent will be Professor Lutz Prechelt (Freie Universität Berlin, Germany), and the custos is Professor Tommi Kärkkäinen (University of Jyväskylä).

The defense is public; anyone may come. Dress code for the audience is whatever one would wear to any lecture or regular academic activity at the university (no formal dress required). There is a Facebook event page.

The dissertation manuscript was reviewed (for a permission to publish and defend) by Professor Matthias Felleisen (Northeastern University, USA) and Professor Andreas Stefik (University of Nevada, Las Vegas, USA). The dissertation incorporates most of my licentiate thesis, which was examined last year by Doctor Stefan Hanenberg (University of Duisburg-Essen, Germany) and Professor Stein Krogdahl (University of Oslo, Norway).

The dissertation is now publicly available as a PDF.

The dissertation mentions Haskell in several places, although that is not its main focus.

ABSTRACT

Kaijanaho, Antti-Juhani
Evidence-Based Programming Language Design. A Philosophical and Methodological Exploration.
Jyväskylä: University of Jyväskylä, 2015, 256 p.
(Jyväskylä Studies in Computing
ISSN 1456-5390; 222)
ISBN 978-951-39-6387-3 (nid.)
ISBN 978-951-39-6388-0 (PDF)
Finnish summary
Diss.

Background: Programming language design is not usually informed by empirical studies. In other fields similar problems have inspired an evidence-based paradigm of practice. Such a paradigm is practically inevitable in language design, as well. Aims: The content of evidence-based programming design (EB-PLD) is explored, as is the concept of evidence in general. Additionally, the extent of evidence potentially useful for EB-PLD is mapped, and the appropriateness of Cohen’s kappa for evaluating coder agreement in a secondary study is evaluated. Method: Philosophical analysis and explication are used to clarify the unclear. A systematic mapping study was conducted to map out the existing body of evidence. Results: Evidence is a report of observations that affects the strength of an argument. There is some but not much evidence. EB-PLD is a five-step process for resolving uncertainty about design problems. Cohen’s kappa is inappropriate for coder agreement evaluation in systematic secondary studies. Conclusions: Coder agreement evaluation should use Scott’s pi, Fleiss’ kappa, or Krippendorff’s alpha. EB-PLD is worthy of further research, although its usefulness was out of scope here.

Keywords: programming languages, programming language design, evidence-based paradigm, philosophical analysis, evidence, systematic mapping study, coder agreement analysis

Ramblings inspired by Feyerabend’s Against Method, Part II: My preliminary take

Paul Feyerabend’s Against Method is a scandal. Most people who have heard of it know its tagline: “Anything goes”. As I mentioned in my previous post, my impression of the book from secondary sources was that Feyerabend was a madman and the book is sacrilege. Now, having read the book myself, I find myself impressed by the depth and clarity of his arguments and by his insight.

His key claim is that a successful (general) method of science is impossible and that trying to impose a (general) method is harmful.

In Feyerabend’s terminology, a method must “contain[] firm, unchanging, and absolutely binding principles for conducting the business of science” (p. 7 of the Fourth Edition, Verso 2010). To be counted as a success, such a method must “remain[] valid under all circumstances and [… be an] agency to which appeal can always be made” (p. 161).

I agree that all such general methods in the literature that I have been exposed to are failures, by Feyerabend’s standard. Neither of the theories I adopt in my doctoral dissertation (pending a public defense), the Bayesian approach to epistemology and Imre Lakatos’s theory of research programs, satisfy this test, and I freely admit this; both are very permissive and neither give objective and precise decision rules for considering the merit of a scientific hypothesis or theory, and thus do not count as methods under Feyerabend. And Feyerabend is quite correct (assuming his historical research is sound, which I am not qualified to judge) in his conclusion that no existing method (as the term is here defined) could have allowed certain key historic developments, and therefore none of them succeed.

For example, Popper’s falsificationism fails for two alternative reasons. If we suppose that it is a method (under Feyerabend’s definition of a method), then it must be followed literally in all cases, but in that case it fails the test case of Galileo, as discussed extensively in the book. But Popper can also be read metaphorically, or as general guidelines not to be taken as a literal method, in which case it can be understood to be consistent with the Galileo case; but then, it is (by assumption) not a method. In either case, it is not a successful method.

I also agree that it is probably impossible to come up with a successful method, by that standard. The history of philosophy is full of expounded theories, all of which seem to fail for some reason or other. It is very easy to move from this to a general scepticism: there can be no such successful method. It seems to me that it is also the correct (though defeasible) conclusion.

Further, if (as I have conceded) it is impossible to devise a successful method, then trying to impose a method is certainly harmful. I accept this.

The catch is here: this conclusion must be read with Feyerabend’s definitions firmly in mind. It is a misunderstanding of Feyerabend to further conclude that he denies the value of scientific methods. The singular in the title is a conscious choice, and very significant: Feyerabend does not oppose methods; he opposes a unified, one-size-fits-all method, singular.

Where Kuhn talks about paradigms and Lakatos about research programs, Feyerabend talks about traditions. Within a tradition, Feyerabend acknowledges there to be quite a bit of value in binding rules, and within a tradition there can be a successful method. Feyerabend’s “anything goes” is not a license to forget consistency requirements in a single piece of work or when working within a tradition:

Admitting velocities larger than the velocity of light into relativity and leaving everything else unchanged gives us some rather puzzling results such as imaginary masses and velocities. […] Admitting contradictions into a system of ideas allegedly connected by the laws of standard logic and leaving everything else unchanged makes us assert every statement. Obviously we shall have to make some further changes [… which] remove[] the problems and research can proceed as planned. (p. 246)

One of Feyerabend’s key conclusions is that traditions can only be evaluated from within a tradition, whether itself or some other one; an objective, meta-traditional evaluation is impossible. I will concede that his argument looks plausible (I will not review it here). Once this is accepted, it easily follows that no tradition is objectively better than all others. (I note that it is theoretically possible that some tradition appears superior to all other traditions viewed from any tradition; but certainly, no existing tradition has that rather remarkable property. Usually all other traditions appear weaker than the one being used as the vantage point.)

Feyerabend goes even further. He claims that traditions are incommensurable: a tradition involves a whole world-view, and there is no lossless conversion of ideas, thoughts and claims from a tradition to another. The only way to truly understand a tradition is to first become its adherent.

This conclusion seems rather absurd to anyone who has been educated in one tradition and has never made a leap from one tradition to another. However, the truth of this claim seems quite plausible from my own experience trying to read both quantitative and qualitative methodological literature: the former typically dismisses the latter as unscientific, and the latter typically dismisses the former as “positivistic” (that this label is a misnomer makes no difference). It is even more plausible to me having discussed methodology with both quantitative and qualitative researchers, and having observed discussions of methodology between quantitative and qualitative researchers. Usually, they talk past each other, each hearing nonsense from the other. It’s like they’re using different languages even though all are using ordinary scientific English.

Yet, I cannot accept incommensurability as a binding constraint. I hope to be able to transcend several traditions, to be able to work in them and hopefully function as a bridge of sorts. Maybe I am a lunatic in that hope; I do not know.

Finally, Feyerabend claims that because traditions are incommensurable and an objective comparison of them is impossible, there is no good reason why science should have priority in politics over any other set of traditions. Feyerabend died in 1994, before the evidence-based movement became the force it is today, but I suspect he would have loudly protested ideas like evidence-based policy (or more commonly nowadays, evidence-informed policy). He makes a forceful claim that basing policy on science is a form of slavery.

I can see his point but I am also in violent opposition. A lot of scientific activity is truly traditional, where things are done in a particular way just because they’ve always been done that way (though the “always” often can be as short a period as a couple of years), and when one goes to examine the history of that particular way, it turns out it was an accident, with no good rational reason for its adoption, and sometimes even was adopted despite good reason to abandon it. In these cases, adopting a scientific consensus position just because it is one is folly. And in general, where a decision one makes only affects oneself, it is better left to individual freedom and not impose any sort of an outside rule, whether scientific or otherwise. But there are quite many problems where a decision has to be made collectively, and I will vote for the decision to be evidence-informed; if I prevail, the only form of slavery involved is that of the tyranny of the majority.

In conclusion, it seems to me Feyerabend is more right than not, and that he has been mostly misunderstood (like he claims himself). I would recommend this book as a guide for anyone interested in multitradition (or mixed methods, as it is often called) work in the sciences. I would not recommend it as a methodology itself – and neither would Feyerabend:

‘anything goes’ is not a ‘principle’ I hold – I do not think that ‘principles’ can be used and fruitfully discussed outside the concrete research situation they are supposed to affect – but the terrified exclamation of a rationalist who takes a closer look at history. (p. xvii)

Let me repeat this: There is no Feyerabend method, and conducting research following Feyerabend is to misunderstand him. (At least to the extent one only considers Against Method; I have not read Feyerabend’s other work.) He preaches tolerance, but one should look for methodological guidance elsewhere.