Simmo Saan otsib probleemidele lihtsaid ja elegantseid lahendusi 🇪🇪

Aprillis kaitses Simmo Saan oma doktoritööd „Correctness witnesses for thread-modular program analysis“(„Lõimeviisilise programmianalüüsi õigsustõendid“, juhendaja programmeerimiskeelte kaasprofessor Vesal Vojdani). Küsisime, kuidas Simmo teekond teadusmaailmas on kulgenud.

Milline on sinu arvates kõige levinum eksiarvamus doktorantuuri kohta?

Olen kuulnud arvamust, et doktorantuuris nokitseb igaüks omaette enda teema kallal ja peab kõigega ise hakkama saama. Eks see võib sõltuda valdkonnast ja juhendajast, kuid minu kogemus selline ei olnud. Mu juhendaja Vesali uks on alati avatud ja sain igal ajal pöörduda tema poole, et arutada probleeme ja jõuda koos sobiva lahenduseni.

Lisaks on meie uurimisrühmal, tarkvarateaduse laboril, pikaaegsed sidemed ühe Müncheni Tehnikaülikooli rühmaga, kellega teeme tihedat koostööd. Terve mu doktorantuuri vältel oleme pidanud iganädalasi veebikoosolekuid ja teinud iga-aastasi visiite. Kõik mu doktoritöö artiklid on valminud koostöös Müncheni doktorantidega: oleme üksteist vastastikku aidanud nii programmeerimise, eksperimentide tegemise kui ka artiklite kirjutamise juures.

Miks otsustasid üldse doktorantuuri kasuks?

Olin juba varem tuttav oma doktoritöö juhendajaga, tema käe all kirjutasin ka bakalaureuse- ja magistritöö. Meie koostöö sujus ja tema uurimisvaldkond pakkus mulle suurt huvi. Seega oli doktorantuur minu jaoks loomulik samm.

Milliseid alternatiive tol hetkel kaalusid?

Ma ei mäleta, et oleks üldse mingeid alternatiive kaalunud. Oma magistritöös tegin algust programmianalüüsi tulemuste tõendamise temaatikaga, mille juures oli veel palju uurida, ja sellest mu doktoritöö vaikselt välja areneski.

Millise mõtteviisi on teooria sulle andnud, mida kasutad siiani?

Programmeerimiskeelte teoorias on palju elegantseid ideid, mille võlu peitub lihtsuses. See motiveerib mindki otsima probleemidele võimalikult lihtsaid ja elegantseid lahendusi ning sunnib mõistma asjade tegelikku olemust, selle asemel et lahendada neid pealiskaudselt või toore jõuga.

Selline mõtteviis pole kasulik mitte ainult teooria arendamiseks, vaid ka väga praktilistes küsimustes. Näiteks lähtun sellest ka programmeerimisel, kus üks õigesti valitud abstraktsioon võimaldab vältida duplikaatkoodi ja võib asendada kümmet keerukat erijuhtu.

Millistele küsimustele ei suutnud teooria üksi vastata?

Programmianalüüsi valdkonna ülim eesmärk on leida vigu pärismaailma programmidest või veenduda nende korrektsuses. Võib välja mõelda igasuguseid analüüse, kuid omaette küsimus on, kas need on ka tegelikult kasulikud. Sellele lihtsalt teooriaga vastata ei saa, mistõttu on vaja analüüsid implementeerida, rakendada, et nendega saaks teha eksperimente päris programmidel.

Mis sind doktorantuuri alguses kõige rohkem üllatas?

Väga raske on teadustööd mitu aastat ette planeerida ja sellest plaanist siis kinni pidada. Kuna tegevus toimub teadmiste ja teadmatuse piirimail, siis ühte probleemi süvenedes võib ilmsiks tulla mitu uut ning esialgse küsimuse lahendamiseks on kõigepealt vaja tegeleda hoopis teistega. Värskelt üles kerkinud uurimisprobleemid võivad olla iseenesest nii põnevad, et väärivad eraldi artiklit, või hoopis tüütud tehnilised detailid, millest pole palju kirjutada. Seega pidi neljaks aastaks tehtud plaan korduvalt muutuma ja siht polnud alati selge.

Mis osutus oodatust raskemaks?

Ootamatult raskeks ja ajamahukaks osutus doktoritöö enda valmiskirjutamine pärast seda, kui kõik selleks vajalikud artiklid olid juba avaldatud. Peamine keerukus seisnes eraldiseisvate artiklite sisu kokkupanemises üheks sidusaks tervikuks, nii narratiivi kui ka tehniliste detailide poolest. Selleks oli tarvis meelde tuletada kõik aastatetaguste artiklite detailid. Nõnda tuli välja nii mõnigi pisiviga, mille sai nüüd ära parandada, ning tekkis uusi ideid ja seoseid, mis väärisid ülestähendamist.

Milliseid uusi termineid või mõtteviise pidid kiiresti omandama?

Mu teadustöö keskendub ühele automaatsele programmianalüüsi meetodile, mida nimetatakse abstraktseks interpretatsiooniks. Tundsin seda juba doktorantuuri alustades üsna hästi, sest olin sellega tegelenud ka bakalaureuse- ja magistritöös. Doktorantuuris pidin oma silmaringi kiiresti laiendama ja endale selgeks tegema ka teiste levinud programmianalüüsi meetodite põhimõtted. See võimaldas mõista, kuidas muude meetoditega sarnaseid probleeme lahendatakse ja kas nende lahendustest saab midagi üle kanda abstraktsesse interpretatsiooni.

Millal said aru, et andmed on sageli segased ja ebatäiuslikud?

Programmianalüüsi valdkonnas on andmeteks analüüsitavad programmid ja nende ebatäiuslikkus on ootuspärane – muidu poleks neid vaja analüüsidagi. Sellegipoolest on teooria viimine praktikasse üllatavalt keeruline ja töömahukas, sest päris programmeerimiskeeled, näiteks C, on palju keerulisemad ja nüansirohkemad kui need lihtsustatud keeled, mida teooria arendamisel kasutatakse. See saab üsna selgeks siis, kui on vaja implementeerida mõni analüüs, et sellega päris programmidel eksperimente teha.

Kuidas tasakaalustad elegantsi ja praktilist kasu?

Nagu öeldud, meeldivad mulle elegantsed lahendused. Kahjuks ei õnnestu alati neid leida, vähemalt nii kiiresti kui vaja. Kui kaalul on programmianalüsaatori korrektsus, on ebaelegantne lahendus parem kui tõsine viga. Vajadusel saab koleda lahenduse hiljem asendada kaunimaga.

Kas oled pidanud loobuma mõnest ideest, millesse alguses väga uskusid?

Kohe ei meenu sellist ideed, millest oleksin lõplikult loobunud. Küll aga on selliseid, mis on parasjagu olnud liiga kõrvalised, ent piisavalt huvitavad, et nende juurde tahaks veel tagasi tulla. Mõnest ideest on olemas isegi prototüüp, mille tulemused on paljulubavad, kuid pole olnud seda aega, et asi viimistleda ja artikliks kokku kirjutada.

Milline väike saavutus tähendab sulle rohkem kui ametlik tulemus?

Meie uurimisrühm arendab koostöös rahvusvaheliste partneritega C programmide analüsaatorit nimega Goblint, mis sündis 20 aastat tagasi mu juhendaja magistritööna. Oleme aastaid kasutanud seda raamistikuna oma analüüsiideede realiseerimiseks, kuid väljastpoolt see väga suurt tähelepanu pole kogunud.

Minu doktorantuuri raames ja minu juhtimisel hakkas Goblint osalema tarkvara automaatverifitseerimise võistlusel SV-COMP. Kuigi Goblinti senised võidud on tagasihoidlikud, on võistlusel osalemine oluliselt kasvatanud teiste teadlikkust meie uurimisrühmast ja analüsaatorist.

Millist osa doktoritööst sa salamisi kõige rohkem nautisid?

Tõenäoliselt on selleks programmeerimine. Haldan hea meelega Goblinti ja olen sellesse rohkelt panustanud ka väljaspool oma artikleid. Paljud parandused ja täiendused ei ole parasjagu töös oleva artikli jaoks hädavajalikud, kuid need parandavad analüsaatori üleüldist kvaliteeti.

Korralike ja usaldusväärsete eksperimentaalsete tulemuste saamiseks peavad meetodid olema kvaliteetselt rakendatud, sest vigase analüsaatoriga on võimalik saavutada ulmelisi tulemusi, mis lähemal vaatlemisel vett ei pea. Seega on kindlam kasutada aktiivselt hallatud ja palju testitud raamistikke, nagu Goblint, mitte luua iga artikli jaoks nullist uut prototüüpi, mis pärast artikli avaldamist unarusse jääb.

Kahjuks teadusmaailmas sellist pikaaegset tarkvara arendamist ja haldamist väga ei hinnata, sest artikleid ja viitamisi see otseselt ei anna. Erandiks on seesama eelmainitud võistlus SV-COMP, mille üks eesmärk ongi sedalaadi töö väärtustamine.

Millega tegeled siis, kui sa ei mõtle teadusele?

Kipun tegelema programmeerimisega ka väljaspool tööaega: osalen erinevates mind huvitavates avatud lähtekoodiga projektides ja mõnda neist ka haldan. Muul ajal aga käin peaaegu iga päev jalutamas ja kuulan sel ajal erinevaid podcast’e, aeg-ajalt loen raamatut.

Kuidas hoiad tasakaalu töö ja muu elu vahel?

Kui ma doktorantuuri astusin, siis veel ei käsitatud doktorante kui töötavaid nooremteadureid, kuid mina suhtusin algusest peale doktorantuuri kui töösse, mitte õpingutesse. Olin tööpäeviti kindlal ajal Deltas kohal ega töötanud kodust – nõnda on kergem tööd muust elust lahus hoida. Artikleid esitades ja õppejõud olles tuleb vahel ette, et on tarvis ka muul ajal midagi kiiresti ära teha, kuid olen püüdnud neid erandeid hoida minimaalsena.

Kas oled oma peres esimene, kes doktorantuuri jõudis?

Sõltub, mida täpselt lugeda. Mu isa on omal ajal omandanud kandidaadikraadi, mida võib pidada samaväärseks. Kolmest vennast olen esimene, aga tõenäoliselt mitte viimane.

Kas näed end edaspidi pigem akadeemilises töös, erasektoris või nende vahel?

Näen end kindlalt akadeemilises elus, sest on veel palju mind huvitavaid küsimusi, millele vastuseid otsida. Samuti meeldib mulle oma teadmisi tudengitele edasi anda. Ülikool annab mulle võimaluse edasi tegeleda asjadega, mis mind huvitavad ja milles olen hea.