Tekeekö matikkapää kovan koodarin? Rakettitieteilijät vastaavat
Taannoin Rakettitieteen Slackissä heitettiin ilmoille kysymys matikkapään ja koodaustaidon korrelaatiosta. "Missä koulunumerossa se muuten parhaiten näkyy, että tästä tyypistä tulee kova koodari. Onko se se perinteinen matematiikka?"
Rakettitieteilijät näkivät matemaattisella osaamisella ja koodaustaidolla positiivista korrelaatiota. Samaan hengenvetoon todettiin, että paljon tietenkin riippuu siitä, mikä itseä kiinnostaa ja mihin tulee käytettyä eniten aikaa. Lisäksi arveltiin että käytännön koodaamisen soveltavat kommervenkit saattavat vieraannuttaa joitakin teorioiden kauneuteen mieltyneitä matemaatikkoja.
Näin argumentoitiin:
– Itselläni on käsitys, että hyvät koodarit eivät välttämättä ole hyviä matematiikassa, mutta tyypit jotka ovat hyviä matematiikassa pääsääntöisesti oppivat nopeasti koodaamaan. Toinen kysymys sitten, miten paljon huvittaa opetella.
– Matemaatikolle tulee koodatessa se ongelma, että pitää jaksaa sietää tuntematon määrä ketutusta ja häröpalloilua, ennen kuin sen koodausympäristön kanssa tulee alustavasti sinuiksi. Tähän ei välttämättä ole aikaa ja jaksamista, jos parempaakin tekemistä olisi.
Kävin matematiikka-luonnontiede-tietotekniikka -lukiossa, jossa kaikki sisään pääsijät olivat huippuja nimenomaan matematiikassa. Kahden vuoden lukioajan jälkeen 30% osasi melko hyvin koodata, 30% välttävästi ja 40% eivät vain oppineet millään.
– Ehkäpä syy on siinä, että useimmat ohjelmointikielet on sellasia häröpalloja, joissa ei ole kieli-semantiikkaa mietitty vaan ne ovat kehittyneet ajan myötä. Jos on vahva matikkatausta, herkästi odottaa että samankaltaista logiikkaa ja todistusta löytyy myös ohjelmointikielistä.
– Sovellusohjelmointi on myös mennyt byrokraattisemmaksi framework-päsmäröinniksi vanhanajan algoritmin ruuuvaamisesta, mikä voi kyllä myös vieraannuttaa, jos oma tausta on matematiikkapuolelta.
– Mutta teoriahan sanoo, että ohjelmointi on vain isomorfismi formaaliin konstruktiiviseen matemaattiseen todistamiseen, eli käytännössä jos joku osaa riittävän hyvin matematiikkaa, niin osaa kyllä ainakin triviaalisti myös ohjelmoida!
– Tosin asioita formaalisti todistaessa ei joudu samalla painimaan threadausongelmien kanssa kuin koodatessa.
Ohjelmoinnissa törmää todellisuuteen ja joutuu painimaan sen kanssa, miten tämä kaunis matemaattinen konstruktio selitetään lautaselliselle tyhmiä transistoreja.
– Formaali todistus tai edes vähän sinne päin menevä käsien heiluttelu auttaa usein threadausongelmiin. Oikeastaan se on ohjelmoinnin osa-alueena harvinaisen matemaattinen.
– Usein matematiikka on paljon asbstraktimpaa ja asioiden ilmaisu on helpompaa kun ohjelmoinnissa. Ohjelmoinnissa pitää mennä detaljeihin että saa saman asian tehtyä tai ilmaistua.