Näytetään tekstit, joissa on tunniste algoritmi. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste algoritmi. Näytä kaikki tekstit

maanantai 4. maaliskuuta 2019

Miten ajatella tarkemmin ja vähemmän väärin

Emme varmaan voi puhua ajattelusta, jos emme ota huomioon kieltä. Ajattelu tapahtuu kielen välineillä. Pystymme välittämään tietoa ja mielipiteitä, ja ilmaisemaan tahtomme ja aikeemme. Kirjoitustaito nostaa kielen avulla ajattelun aivan uudelle tasolle. Voimme pohdiskella asioita perusteellisesti, paljon laajemmin kuin pelkän muistimme varassa. Voimme filosofoida. Omalla tavallaan myös kertomukset ovat ajattelua. Erityisesti muistiin merkityt kertomukset ovat tärkeä ajattelun laji. 

Filosofit ovat kehittäneet ajattelua tuhansien vuosien ajan. Filosofia on yrittänyt kehittää täsmällisiä ajatteluun välineitä. Tarvitsemme tällaisia välineitä asioiden ja toimenpiteiden perusteluun. Retoriikka on alun perin suulliseen väittelyyn pohjautuva väline. Logiikka on myös perustelun väline. Nämä välineet toimivat hyvin, ja käytämme niitä jatkuvasti, paitsi jokapäiväisessä elämässämme, myös vaikkapa hallinnossa ja politiikassa. 

Luonnontieteille ja insinööritieteille kielelliset välineet eivät kuitenkaan ole riittävän täsmällisiä. Logiikkaa on kyllä koetettu kehittää pidemmälle. On luotu modaalilogiikkaa kuvaamaan asiantiloihin liittyviä sosiaalisia olosuhteita. Otan esimerkin epätarkkuudesta. Lause ulkona sataa ilmaisee asiantilan. Mutta se ei ole täsmällistä. Mitä tarkkaan ottaen tarkoittaa sataa? Entä tarkoittaako ulkona pihalla vai vaikkapa kaupungilla? Jos sanon: Pekka sanoo että ulkona sataa, tilanne mutkistuu lisää. Mitä tiedämme Pekasta? Miksi hän sanoo näin, ja tietääkö hän sen oikeasti? Ja jos olemme lähdössä retkelle, miten lause meihin vaikuttaa? 

Logiikkaa on tehty täsmällisemmäksi formalisoimalla sitä. Mutta kovin käytännöllisiksi jokapäiväisessä elämässämme tällaiset parannetut välineet eivät ole osoittautuneet. En kuitenkaan tarkoita sitä, etteivät ne olisi mielenkiintoisia. 

Kielellisten ajattelun välineiden ongelmana on itse kielen epätarkkuus. Kielen käsitteet eivät ole täsmällisiä, ja ne ovat myös subjektiivisia eli ajattelijasta riippuvia. Ymmärrämme itse käsitteet eri tavoin, ja käytämme myös kieltä keskenämme erilaisilla tavoilla. Tarkoitukseni on pohdiskella kieltä täsmällisempiä ajattelun välineitä. Mutta samalla haluan heti sanoa, että en mitenkään väheksy luonnollista kieltä. Asia on suorastaan päinvastoin. Kieli on myös täysin välttämätön työkalumme, kun käytämme seuraavaksi kuvattavia tarkkoja ajattelun keinoja. Lisäksi ymmärtäminen välittyy meille kielellisesti, ja kieli on tärkeä luovuuden lähde. Tämän sanon tärkeänä sivuhuomautuksena. 

Aloitan kuitenkin täsmällisemmän ajattelun pohtimisen siirtymällä hetkeksi kielen ulkopuolelle siis hyvinkin epämääräiselle alueelle. Sillä on toki ajattelua, joka ei tapahdu sanojen kautta. Ajattelemme mielikuvilla ja tunteilla. Kun oikein kovasti yritän, saan jonkinlaisen aavistuksen siitä, millaista se on. Pystyn jopa saattamaan itseni ainakin lyhyeksi hetkeksi tilaan, jossa ei ole minkäänlaisia sanoja tai lauseita, eikä edes asioiden nimiä ole mielessäni. Sitä vain on, tiedän että itse olen, ja se tuntuu joltakin. Tällainen tila on sanallisen kuvailun tavoittamattomissa - tietenkin. 

Uskon että tällainen ajattelu on universaalia. Näin varmaan ajattelimme ennen kielen ilmaantumista, ja näin ajattelevat monet eläimet. Ja tästä pääsemme eteenpäin. Huoneeni katossa on valaisin, jossa on kolme lamppua. Ja pöydällä vadissa on viisi omenaa. Tiedän, että lamppuja on kolme ja omenoita viisi, eikä minun tarvitse laskea niitä. Mutta jos kaadan pöydälle kourallisen pähkinöitä, en enää tiedä, montako niitä on. Pitää alkaa laskea. Ja nyt epätäsmällinen kieli alkaa luoda abstraktia aritmetiikkaa. Tämä on yleinen kuvio: kielemme auttaa rakentamaan abstrakteja työvälineitä. Sama ilmiö toistuu myös mutkikkaampien ajattelun välineiden kohdalla: otamme ne haltuumme kielen välityksellä. 

Kun tiesin että vadissa on viisi omenaa, ajattelin samalla tavalla kuin monet älykkäät eläimet, kuten apinat ja eräät linnut. Lukumäärän voi aistia laskematta. Esimerkiksi linnut tietävät, montako munaa pesään on munittava, ja apinat huomaavat, jos niiden ulottuvilla olevista herkullisista hedelmistä kähvelletään salaa yksi. Mutta tässä on raja, jota pidemmälle eläimet eivät pääse. Niiltä puuttuu käsitteillä operoiva kieli, ne eivät osaa laskea. 

Ihminen kehitti laskemista aina vain pidemmälle, koska se oli sosiaalisesti hyödyllistä. Metsästäjät oppivat jakamaan saaliinsa reilusti, ja kauppiaat selvisivät yhä mutkikkaammista kaupanteon tilanteista. Pian opittiin laskemaan yksikköhinnat ja käymään kauppaa mielivaltaisen suurilla tavaraerillä. Kun yhteiskunnan tarpeet monimutkaistuivat, myös matematiikka - sillä siitähän on kysymys - tuli monimutkaisemmaksi. Ja kielellisten resurssien turvin matematiikka alkoi kehittyä itsenäisesti. Koska ihminen on utelias ja monista asioista kiinnostunut. 

On myös toisenlaisia matematiikan lajeja. Ihminen alkoi mitata. Tilavuuksia mitattiin mitta-astioilla. Etäisyyksiä mitattiin askelilla, mittasauvoilla ja köysillä. Samoin mitattiin peltojen pinta-aloja. Merenkävijät ja tähtitieteilijät alkoivat mitata kulmia ja suuntia. En tiedä, miten ilmeiseltä tämä tuntuu, mutta tässä on kysymys aivan erilaisesta ajattelun välineestä. Toki tässä käytetään apuna aritmetiikkaa. Voimme kertoa, montako mitta astiallista mahtuu suureen tynnyriin, tai montako mittakepin pituutta on rakennuksen pituus tai matka kahden kylän välillä. Tai kuinka suuri osa ympyrän kehää jokin kulma on. Mutta aina tässä on kyse vertailusta. Jotain verrataan johonkin toiseen.  

Nyt siirryn käyttämään matematiikan kieltä. Laskemisessa eli aritmetiikassa toimitaan täsmällisillä lukumäärillä eli kokonaisluvuilla. Lukumäärät ovat aina täsmällisiä. Tässä vaiheessa olemme oppineet jo käyttämään apuna aritmetiikkaa ja olemme keksineet murtoluvut. Voimme siis sanoa vaikka: tynnyriin mahtuu kaksikymmentäkolme ja kolme viidesosaa mitta-astiallista. Mutta vertailu ei koskaan ole täsmällistä. Vaikka mittaisimme rakennuksen pituuden mittakepillä ja harpilla kuinka huolellisesti, tulos on aina epätarkka. Voimme kuvitella mittaavamme erittäin tarkalla mittakepillä ja hienosti rakennetulla harpilla, mutta tiedämme, että periaatteessa sen voisi aina tehdä paremmin. Mittaaminen eli vertaaminen tarkoittaa matematiikan kielellä sanottuna reaaliluvun muodostamista. Sen tulos on aritmeettisesti ilmaistavissa murtolukuna. Huomaamme, että reaalilukua ei koskaan voi ilmaista murtoluvulla muuten kuin vain likimääräisesti. 

Mittaamisesta eli  reaaliluvuilla laskemisesta tuli vähitellen yhä tärkeämpää. Reaalilukuja alettiin käyttää arkkitehtuurissa, rakentamisessa ja koneenrakennuksessa - vaikka reaaliluku- sanaa ei tietenkään siihen aikaan käytetty. 1600-luvulla keksittiin näppärä reaaliluvuilla laskeva laite, laskutikku, joka löytyi insinöörin taskusta aina taskulaskimen keksimiseen asti, eli 1970-luvun puoliväliin.

Pitää mainita vielä geometria. Tiedämme, mitä se on, mutta sen olemusta on vaikea määritellä. Siinä ei lasketa luvuilla, eikä myöskään mitata määriä - no jonkin verran kyllä, esimerkiksi kolmiossa on kolme kulmaa ja jana voidaan vaikka puolittaa. Geometria vertautuu laskemiseen siinä, että se on täysin tarkkaa, ja vertailuun siinä, että siinä tarkastellaan erilaisia suhteita. Myös geometria syntyi hyödyllisyyden kautta, koska sille oli käyttöä maan mittaamisessa, tähtitieteessä ja rakentamisessa. Ja myöhemmin myös koneiden valmistuksessa. Ja kuten aritmetiikka, myös geometria alkoi kehittyä ihmisen uteliaisuuden ajamana itsenäisesti. Nykyisin geometria on edelleen ajattelun apuväline, mutta tieteenä se on marginaalista ja historiallista. Sen sijasta harrastetaan muita matematiikan lajeja. 

Entä kehittyikö filosofiasta aikaa myöten mitään sen täsmällisempää? Ehkä niin voi sanoa, sillä logiikasta kehittyi täsmällinen muoto. Se löysi paikkansa nykyaikaisissa tietokoneissa. Tietokoneet suorittavat algoritmeja eli peräkkäisten toimintojen sarjoja, ja niiden suorittaminen on organisoitu täsmällisten loogisten sääntöjen avulla. Sanomme tällaisia sääntöjä ohjelmiksi. 

Teen pienen yhteenvedon. Täsmällisten ajattelun työkalujen kehittäminen johti matematiikkaan, ja se avasi välineet luonnontieteiden kehittymiselle. Täsmällisen logiikan kehittäminen synnytti tietokoneet - ja niiden kautta avautuu uudenlaisia näkymiä, kuten tekoäly. 

Olen kirjoittanut tästä aiheesta myös hieman laajemman artikkelin, joka löytyy Tieteessä tapahtuu- lehdestä. Artikkeli johdattelee kysymykseen, johon en toistaiseksi osaa vastata. Aiemmin kuvailin ihmisten ja myös eläinten universaalia ajattelutapaa, joka ei perustu kieleen eikä laskemiseen. Voisiko siitä kehittää jotain uutta ja täsmällisempää?

keskiviikko 14. syyskuuta 2016

Koodausta kaikille

Uutinen ohjelmoinnin eli koodauksen opetuksesta peruskoulussa ärsytti minua kovasti. Mutta ei niinkään itse asian vuoksi, vaan sen takia, millaiset tahot tätä hehkuttivat, ja miten uutinen tarjoiltiin. Mutta unohdetaan nyt tämä huono konteksti. Itse ideahan on erinomainen.

Koetan perustella näkökantaani, ja se on oikeastaan aika helppoa. Ohjelmointi on tietysti vain teknistä suunnittelua, mutta se perustuu aivan erityiseen ajattelutapaan. Eräs koodauksen määrittely on, että siinä laaditaan algoritmeja (toisiaan seuraavista vaiheista koostuvia toimintakuvauksia). Se ei kuitenkaan ole koko totuus. Kaikki ohjelmoinnilla tuotetut ratkaisut eivät nimittäin ole kovin "algoritmisia". Koodaus on selvästi sukus matematiikalle, mutta nykyinen matematiikan opetus ei perehdytä siihen ajatteluun, jota koodauksessa tarvitaan. Koodaus ei nimittäin ole itsenäinen matematiikan haara. Matematiikka tarjoaa kyllä melkoisen joukon kiinnostavia formalismeja: ne ovat kalkyylejä, joita voidaan hyödyntää ohjelmointikielissä ja tietokonalaitteissa. Mutta se on jo kokonaan "toinen juttu".

Koodaus poikkeaa matematiikasta muun muassa siksi, että siinä pitää kiinnittää huomio kahteen asiaan: pitää keskittyä siihen ongelmaan, joka koodauksella yritetään ratkaista, ja samalla pitää ohjata sen järjestelmän (tietokoneen ja sen ohjelmien) toimintaa, jonka avulla laadittu ohjelma sitten suoritetaan. Yksinkertainen esimerkki on laskea matemaattisen lausekkeen arvo, jossa on erilaisia laskutoimituksia, vaikkapa yhteen- ja vähennyslaskua, kerto- ja jakolaskua ja potensseja. Jos koodaajalla on käytössään kehittynyt ohjelmointikieli, riittää, että hän vain kirjoittaa laskettavan kaavan. Koko ohjelma on vain muutama rivi koodia. 

Mutta jos käytössä olisi vain symbolinen konekieli eli assembler, koodaajan pitäisi huolehtia lukujen ja laskennan välitulosten talletuksista muistiin, laskutoimituksien kokoamisesta yksinkertaisista konekäskyistä, ja koko laskentaprosessin vaiheittaisesta kontrolloimisesta. Koko ohjelma on varovaisestikin arvioiden useita satoja koodirivejä, paperille painettuna kymmeniä sivuja ohjelmalistausta. Kun kehittyneellä ohjelmointikielellä tehtävän ratkaisu on koodattu alle minuutissa, assembler- kielellä koodaukseen voi kulua useita päiviä. Siis, toisin kun abstraktissa matematiikassa, koodauksessa käytössä oleva tietokone ja sen ohjelmointikielet vaikuttavat voimakkaasti tehtävän suoritukseen.

Toistan vielä, että koodaamisen opettaminen pikku koululaisille on ehdottomasti hyvä idea. Tietenkään koulussa saatu koodausopetus ei ole välittömästi hyödyllistä työelämässä, ehtiihän tekniikka muuttua aika paljon ennen kuin oppilaat menevät töihin, eikä koulussa päästä alkeita pidemmälle. Mutta kysymys onkin muusta: yleissivistyksestä ja hyödyllisen ajattelutavan omaksumisesta. Kaikkien on syytä ymmärtää, millaista ohjelmointi on.

Asiantuntijat osannevat valita opetuksessa käytettävät välineet: ohjelmointikielen ja laskentaympäristön. Kielen tulee olla riittävän yleinen, ja ympäristön tulee olla sellainen, että koodaamalla voidaan saada aikaan konkreettisia tuloksia. Tehtävät voivat olla mitä vain: pelejä, robotin ohjaamista, musiikkia, grafiikkaa, animaatiota. Tämä houkuttelee varmaan oppilaita. Koodaaminen kehittää oppilaiden keskittymiskykyä ja lisää motivaatiota. Ja mikä parasta, sen voi oppia, se ei ole ylivoimaista. Sekin on tärkeä oppi: "minä pystyn tähän!".