Näyttöön perustuvan ohjelmointikielten suunnittelun tueksi sopivan empiirisen tutkimusnäytön laajuus: Järjestelmällinen kirjallisuuskartoitus

(Tämä on englanninkielisen lisensiaatintutkimukseni suomenkielinen yhteenveto.)

Ohjelmointikieliä on tuhansittain, ja niitä luodaan lisää (ja olemassa olevia kieliä muokataan) jatkuvasti. Tämä luonti- ja kehitystyö perustuu yleensä laatijoiden ja kehittäjien omaan tyylitajuun, henkilökohtaisiin mieltymyksiin sekä teoreettiseen tietämykseen. Empiiristä tutkimustietoa ohjelmointikielten ja niiden muutosten hyödyllisyydestä ei käytetä juuri lainkaan. Ohjelmoinnin psykologian tutkimus on kuitenkin yli neljäkymmentä vuotta vanha tieteenala, ja siitä luulisi olevan hyötyä ohjelmointikielten laatijoille ja kehittäjille.

Tuleville lääkäreille on jo useampi vuosikymmen opetettu näyttöön perustuvan lääketieteen mallia: jos lääkäri ei ole varma, miten tulisi toimia jonkin tietyn potilaan ongelman kanssa, ensiksi hän muotoilee vastattavissa olevan kysymyksen; toiseksi hän etsii tutkimuskirjallisuudesta ja siihen perustuvista toisiolähteistä tutkimusnäyttöä, joka vastaa kyseiseen kysymykseen; kolmanneksi hän arvioi tuon näytön luotettavuuden; neljänneksi hän soveltaa tuon tutkimusnäytön antamaa vastausta potilaansa ongelmaan; ja viidenneksi arvioi omaa suoriutumistaan tässä prosessissa. Tämä lääketieteestä peräisin oleva toimintamalli on sittemmin otettu soveltuvin osin käyttöön myös monilla muilla asiantuntijuuteen perustuvilla aloilla, muiden muassa ohjelmistotekniikassa.

Tämän lisensiaatintyöni lähtökohtana oli näyttöön perustuvan ohjelmointikielten suunnittelun idea. Työn tarkoituksena oli selvittää, kuinka paljon sellaista empiiristä tutkimusnäyttöä on olemassa, josta voisi olla hyötyä ohjelmointikielten suunnittelijoille. Keskityin tarkastelemaan tutkimuksia, jotka pyrkivät vertailemaan kahden tai useamman vaihtoehtoisen suunnitteluratkaisun hyödyllisyyttä ohjelmoijan näkökulmasta. Halusin selvittää lisäksi, mitä tällaisia suunnitteluratkaisuja on tutkittu tällä tavalla, millä eri tavoin hyödyllisyys on ymmärretty tällaisissa tutkimuksissa, sekä mitä tutkimusmenetelmiä tällaisissa tutkimuksissa on käytetty.

Tämä lisensiaatintyöni on kirjallisuuteen perustuva tutkimus, niin sanottu toisiotutkimus, jossa aineistona käytetään ensiötutkimuksia eli tutkimuksia, joissa tutkijat ovat itse välittömästi havainnoineet tutkittavaa ilmiötä. Useimmat järjestelmälliset toisiotutkimukset kuuluvat kahteen pääluokkaan. Järjestelmälliset katsaukset pyrkivät vastaamaan käytännön toiminnan kannalta oleellisiin, hyvin tarkkarajaisiin kysymyksiin. Järjestelmälliset kartoitukset puolestaan pyrkivät hahmottamaan tutkimuskirjallisuuden yleisen tilanteen jollakin tutkimusalalla. Tämä työni on selkeästi kartoitus.

Olen taustoittamisen tarkoituksessa käsitellyt tässä työssäni ohjelmointikielten erilaisia luokitteluja (kielten tasot, sukupolvet ja paradigmat), kielten käsitteellistä rakennetta, tiettyjen suunnitteluratkaisujen historiaa sekä ohjelmointikielten kehitystyön historiaa. Lisäksi olen työssäni suhteellisen laajasti referoinut ohjelmistotekniikan alalla julkaistuja systemaattisten kirjallisuuskartoitusten tutkimusmetodologisia toimintaohjeita. Työni sisältää myös ohjelmointikielen käsitteen analyysiä sekä näytön käsitteen tietoteoreettista pohdintaa.

Itse kartoituksen lähdemateriaalin etsin useita eri hakumenetelmiä käyttäen. Ensiksi selasin läpi eräiden kansainvälisten tutkimuslehtien ja konferenssijulkaisujen kaikki numerot (käyttäen hyväksi tietoverkossa julkaistuja sisällysluetteloja ja abstrakteja). Seuraavaksi tein avainsanahakuja useissa kansainvälisesti tunnetuissa tutkimuskirjallisuustietokannoissa. Lopuksi etsin lisälähteitä kaikkien edellisillä hauilla löytyneiden kartoitukseeni hyväksymieni tutkimusjulkaisuiden lähdeluetteloista sekä eräiden tietokantojen luetteloista näihin julkaisuihin viittaavista julkaisuista; tätä kutsun jatkossa lumipallohauksi.

Hauilla löytyneet julkaisut kävin läpi kolmessa kierroksessa. Ensimmäisellä kierroksella hylkäsin tutkimukseni kannalta ilmiselvästi epäolennaiset julkaisut. Toisella kierroksella hylkäsin ne julkaisut, joiden epäolennaisuudesta olin vakuuttunut. Näillä kahdella kierroksella päätökseni perustuivat tietoverkosta saataviin metatietoihin. Kolmatta kierrosta varten hankin jokaisesta vielä jäljellä olevasta julkaisusta sen koko tekstisisällön, joko paperilla tai sähköisesti. Tällä kierroksella hylkäsin ne, joiden epäolennaisuudesta vakuutuin; loput otin mukaan tähän tutkimukseen. Valintojen oikeellisuuden selvittämiseksi lisensiaatintyöni ohjaajat tekivät kukin pienelle osalle löytyneistä julkaisuista satunnaisotannalla itsenäisen hyväksymis- tai hylkäyspäätöksen. Olimme pääosin samaa mieltä; erimielisyydet ratkaisimme lopullisesti konsensuspäätöksellä.

Mukaan kartoitukseen otin ne ensiö- ja toisiotutkimukset, jotka pyrkivät selvittämään jonkin ohjelmointikielten suunnitteluratkaisun hyödyllisyyden ohjelmoijan näkökulmasta, joista oli saatavilla täydellinen, viimeistään vuonna 2012 julkaistu tutkimusraportti englannin, suomen tai ruotsin kielellä ja jotka esittivät empiiristä tutkimusnäyttöä väitteittensä tueksi.

Selaamalla löytyi 1515 ensimmäisen kierroksen hyväksymää julkaisua, avainsanahauilla löytyi 248 lisää ja lumipallohaulla vielä 293 julkaisua näiden lisäksi. Toisella kierroksella jäljelle jäi 1045 selaamalla löytynyttä, 151 avainsanahauilla löytynyttä ja 223 lumipallohaun löytämää. Lopullisesti kartoitukseen hyväksyttiin 180 tutkimusjulkaisua, jotka raportoivat 137 ensiötutkimusta. Toisiotutkimuksia julkaisuissa raportoitiin 19. Varsinaisessa kartoituksessa olen käsitellyt vain ensiötutkimuksia.

Tein tutkimukseen mukaan otetuista tutkimusjulkaisuista temaattisen synteesin seuraavasti. Ensiksi luin kaikki mukaan otetut julkaisut läpi. Seuraavaksi valitsin jokaisesta suoria lainauksia, jotka liittyivät tutkimukseni aiheeseen. Tämän jälkeen koodasin lainaukset (eli annoin niille kuvaavia avainsanoja). Koodien perusteella etsin aineistosta esille nousevia, tutkimukseni aiheen kannalta merkittäviä teemoja, joista lopulta rakensin temaattisen mallin. Koodauksen oikeellisuuden arvioimiseksi yksi ohjaajistani koodasi muutaman artikkelin uudestaan; ratkaisumme erosivat jonkin verran toisistaan.

Temaattinen mallini jakoi kartoitukseen mukaan ottamani ensiötutkimukset kahteen luokkaan. Reuna-alueeseen kuuluivat tutkimukset, jotka eivät olleet kovin oleellisia kartoitukseni kannalta: ne vain vertailivat kieliä tai kieliluokkia toisiinsa taikka käyttivät yksittäisiä olemassa olevia ohjelmia tai ohjelmointitehtäviä jonkin teknologian käyttökelpoisuuden osoittamiseen. Loput 65 tutkimusta muodostivat ytimen, joka puolestaan jakautui sipulimaisesti useaan kerrokseen käytetyn tutkimusmenetelmän mukaan.

Ydinsipulin uloin kerros koostui tutkimuksista, joissa ei käytetty minkäänlaista koeasetelmaa; tyypillisesti kyse oli määrällisestä havainnoivasta tutkimuksesta taikka laadullisesta tutkimuksesta. Seuraavaksi uloin kerros koostui kokeista eli tutkimuksista, joissa tutkijat ovat pyrkineet vaikuttamaan tutkimustilanteeseen siten, että tästä aiheutuva muutos tulosmittareissa on havaittavissa. Seuraava, toiseksi sisin, kerros koostui kontrolloiduista kokeista eli tutkimuksista, joissa koehenkilöt tai muut tutkimuskohteet on jaettu ryhmiin sen mukaan, mitä tutkimuksessa mukana olevaa suunnitteluratkaisua he käyttävät tai missä järjestyksessä he käyttävät mukana olevia suunnitteluratkaisua. Ydinsipulin sisin kerros eli sydän koostui satunnaistetuista kontrolloiduista kokeista eli kontrolloiduista kokeista, joissa koehenkilöt tai muut tutkimuskohteet on jaettu ryhmiin jollakin satunnaisprosessilla. Sipulin sydämessä oli 22 tutkimusta.

Tutkimusten julkaisuajoista oli havaittavissa mielenkiintoinen ilmiö. Vanhin kartoituksessa mukana ollut julkaisu oli julkaistu 1973 ja uusin vuonna 2012 (koska uudempia en ottanut kartoitukseen mukaan). Aina vuosituhannen vaihteen paikkeille asti tutkimuksia julkaistiin suunnilleen saman verran joka vuosi, mutta määrät nousivat vuosituhannen vaihteen paikkeilla ja uudestaan dramaattisesti vuoden 2008 paikkeilla. Vastaava ilmiö on havaittavissa, joskin heikompana, kaikissa ydinsipulin kerroksissa.

Kartoituksessa havaitsin, että ohjelmointikielten suunnitteluratkaisujen hyödyllisyyttä on tutkittu jonkin verran: kaiken kaikkiaan tutkimuksia löytyi 141 ja satunnaistettuja kontrolloituja kokeita 22. 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 kuitenkin 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.

Lisensiaatintyöni kuluessa tein havainnon, että ohjelmointikielten alan tutkimusartikkeleiden tiivistelmät ovat varsin hyödyttömiä, sillä niissä ei useinkaan kerrota tutkimuksen empiirisen osan metodia eikä sillä saatuja tuloksia. Tähän voisi mahdollisesti saada hyötyä muilla aloilla jo käytössä olevasta rakenteisen tiivistelmän ideasta, jota olen tämänkin työn englanninkielisessä tiivistelmässä (abstract) soveltanut.

Kuten kaikilla tutkimuksilla, tällä lisensiaatintyöllä on rajoitteita, jotka tulee tuloksia tulkittaessa ottaa huomioon. Keskeisin rajoite 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.

Kartoitukseni johtopäätös on, että näyttöön pohjautuvan ohjelmointikielten suunnittelun tueksi on olemassa jonkin verran empiiristä tutkimusnäyttöä, mutta vain muutamaa suunnitteluratkaisua on tutkittu laajemmin. Kielten suunnittelijat saattavat hyötyä kartoituksessa löydettyihin tutkimuksiin tutustumisesta, erityisesti haarautumista, silmukkaa, staattista ja dynaamista tyypitystä, luokkaperintää, tapahtumapohjaista muistia ja sisennystä koskien. Kartoituksen alan kuuluvaa tutkimusta harjoittavien tutkijoiden on syytä tutustua kritiikkiin, jota kirjallisuudessa on esitetty aiempia tutkimuksia vastaan. Lisäksi, kuten järjestelmällisissä toisiotutkimuksissa on tapana, totean, että uusien ensiötutkimusten tekeminen on tarpeen; erityisesti haarautumista koskevat tutkimukset ovat jo iäkkäitä eivätkä ne välttämättä vastaa kovin hyvin nykyoloja. Joistakin aiheista on mahdollisesti myös hyödyllistä laatia järjestelmällisiä katsauksia.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.