lauantai 23. joulukuuta 2023

Opiskelijan ohjelmointikirja. Vaiheittainen visuaalinen opas (Computer Coding - Python Projects for Kids, 2017)

Olen nuoresta asti ajatellut aina silloin tällöin, että olisi kiva kokeilla ohjelmointia, mutta ohjelmat ovat olleet minusta liian kalliita ja/tai 400-500-sivuiset tiheästi kirjoitetut, tylsän näköiset (englanninkieliset) ohjelmointioppaat eivät ole vaikuttaneet erityisen helposti lähestyttäviltä, joten en ole tehnyt sitä. Lastenosastolla osui kuitenkin silmiin tällainen kirja, joka ratkaisi molemmat ongelmat: kirja on runsaasti kuvitettu, siinä on hauskan tuntuisia projekteja ja ohjelmakoodi annetaan siinä valmiina. Python-ohjelman (nimi tulee Monty Pythonista, ei käärmeestä) voi ladata ilmaiseksi netistä, ja suhteellisesta helppoudestaan huolimatta tätä ohjelmointikieltä käytetään myös esim. lääketieteessä, liiketaloudessa, elokuvien animoinnissa ja jopa avaruuslennoissa.

Kirjan suomenkielinen nimi on harhaanjohtava, koska tekstistä ja kirjan projekteista käy selvästi ilmi, että kirja on suunnattu noin 10-vuotiaille lapsille. Tässä on toisaalta kirjan ongelma - minun on vaikea uskoa, että monet kymmenvuotiaat suomalaislapset jaksaisivat kirjoittaa kirjan englanninkielisiä, loppuvaiheessa aika pitkiäkin ohjelmakoodeja, joissa jokaisen kirjaimen ja merkin pitää olla täsmälleen oikein. (Tätä varten olisi muuten ollut hyvä, jos kirjan alussa olisi neuvottu helpot tavat valita, kopioida (Ctrl+C) ja liittää (Ctrl+V) tekstiä, koska monet koodinpätkät toistuvat ohjelmissa lähes samanlaisina.)

Kirja on suomennettu hyvin ja huolellisesti. Esimerkkiohjelmien käyttäjän näkemät lauseet on suomennettu, mutta muuten ohjelmat ovat alkuperäismuodossaan, joten esim. ohjelmien muuttujat ja funktioiden nimet ovat englanninkielisiä. Pythonin komentoja ei tietenkään voi suomentaa, mutta mm. nämä muuttujat ja funktionnimet olisi kuitenkin voinut kääntää, mikä olisi tehnyt ohjelmista helpommin kirjoitettavia ja ymmärrettäviä suomalaiselle, varsinkin lapselle, joka ei välttämättä ymmärrä käytettyjen englanninkielisten sanojen merkitystä ollenkaan. Tämä olisi kyllä vaatinut paljon lisätöitä suomentamiseen, koska ohjelmakoodit ovat aika iso osa kirjaa ja kuten sanottu, niiden pitää olla täysin virheettömiä.

Muuten kirja on kuitenkin oikein hyvin tehty ja ottaa kohderyhmänsä hyvin huomioon. Siinä on paljon pieniä ja hupaisia, varmastikin Pythonilla tehtyjä, hauskan alkeellisen näköisiä tietokonegrafiikkakuvia. Siinä ei anneta vain ohjelmakoodeja, vaan kerrotaan myös ohjelmien suunnittelun periaatteista yleisesti, ja jokaisen projektin alussa on ohjelman vuokaavio, jota on hyvä miettiä ennen kuin rupeaa koodaamaan. Vaikka perusohjelmien koodit annetaan valmiina (mikä mahdollistaa sen, että kuka tahansa voi saada ne toimimaan, kunhan on tarpeeksi huolellinen), projektien jälkeen annetaan lisäksi paranteluehdotuksia, joiden avulla voi testata omia taitojaan. Kirjassa myös selitetään ohjelmien ja niiden komentojen toiminta, ainakin osaksi.

Esimerkkiohjelmat ovat sellaisia, joita lapset varmastikin pitävät hauskoina (esim. tietokilpailu, matopeli ja muita pelejä, robotin, lemmikin tai tähtitaivaan piirtäminen ja paljon muuta), mutta joita minun oli aikuisenakin hauska tehdä ja kokeilla. On vain jotenkin siistiä, kun saa tietokoneen tekemään jotain, mitä haluaa, vaikkei se olisikaan kovin monimutkaista, ja kirja herättää tunteen siitä, että saattaisi olla mahdollista suunnitella ja tehdä myös omia ohjelmiaan. Pelkästään tämän kirjan avulla omien ohjelmien tekeminen ei kuitenkaan onnistu, koska kirja heittää lukijansa/käyttäjänsä suoraan syvään päähän ja siinä käytetään melko usein myös sellaisia komentoja, joiden toiminta ei kirjasta avaudu eikä niitä selitetä, ne vain annetaan siinä valmiina (esimerkiksi kun tehtiin hiiren liikkeisiin ja käyttäjän toimintaan tai toimimattomuuteen reagoiva "lemmikki"). Tämä ei toisaalta ole ihme - innostuin tutustumaan myös yliopisto-opiskelijoille suunnattuun englanninkieliseen Python-ohjelmointioppaaseen (Introduction to Python Programming and Data Structures), joka etenee simppeleistä asioista monimutkaisempiin, ja jotkin tämän lasten kirjan komennot selitetään siinä ehkä vasta sivuilla 200-300 tai myöhemminkin.

Tässä lapsille suunnatussa kirjassa on toisaalta hienoa, että ohjelmissa käytetään myös monimutkaista ja pidemmälle edenneiden käyttäjien koodia, koska ainakin minä ymmärrän asiat paremmin kun teen ne itse, eivätkä esim. silmukat ja funktioiden määrittely tunnu niin vaikeilta, kun niitä on jo käyttänyt melkein huomaamattaan itse jossakin ohjelmassa. Toisaalta tämä tapahtui sen kustannuksella, että joitakin komentoja en ymmärtänyt ollenkaan, mutta se ei ole niin vaarallista. Pythonista yleensä täytyy kuitenkin sanoa, että vaikka sitä oppii käyttämään aika helposti ja nopeasti, ainakin sen alkuvaiheessa, sen englanninkieliset virheilmoitukset ovat noviisille usein melko käsittämättömiä eivätkä ollenkaan käyttäjäystävällisiä (mutta niitäkin aloin vähitellen ymmärtää).

Yksi lasten kirjan projekteista. Tylsännäköinen koodi (taustalla vasemmalla) saattaa synnyttää kauniita kuvioita. Ohjelma on myös animoitu, niin että tähtiä syttyy "taivaalle" koko ajan lisää.

Eniten pidin Turtle-grafiikasta eli piirtämisestä ohjelman avulla: Pythonilla pystyi tekemään helposti geometrisia kuvioita sekä vaihtelemaan niiden väriä, kokoa, sijaintia ja suuntaa, mikä mahdollisti kaikkea kivaa ja kiinnostavaa. Aikuisten kirjan myöhempien lukujen tehtävissä piirrettiin esimerkiksi  fraktaaleja, minkä osaaminen olisi aika mahtavaa. Ja kun tein jonkin verran noita aikuisten kirjan tehtäviä ennen kuin innostukseni hiipui, ihastuin myös siihen, miten yksinkertaisella ja helpolla koodilla pystyi laskemaan esim. matemaattisten sarjojen arvoja tai alkulukuja, joiden laskeminen laskimella tai tietokoneellakin olisi vienyt todella paljon aikaa. Siis jos onnistui kirjoittamaan koodin oikein (matemaattisissa tehtävissä usein kyllä yllättävän helppoa): saatoin käyttää parikin tuntia jonkin sellaisen tehtävän ratkaisukoodin miettimiseen (aikuisten kirjan tehtäviin ei ollut ratkaisuja), jonka vastaukset olisi Excelillä pystynyt laskemaan parissa minuutissa. Monia kirjan matemaattisia tehtäviä ei olisi kuitenkaan luullakseni pystynyt laskemaan Excelillä.

Ohjelmointia oli kiva kokeilla ja se oli mukavaa aivojumppaa, mutta se ei ole minulle järin tarpeellista ja pystyn hyvin elämään ilman sitäkin. Pidän analogisista asioista (kuten paperikirjoista), ja vaikka noin kolmen viikon ajan olin tosi innostunut koodaamisesta, se jäi melkein kokonaan, koska elämässä on paljon muutakin. Oli kuitenkin hauska huomata, että tietokoneohjelmien tekeminen ei ole mitään ylivoimaisen vaikeaa salatiedettä ja että on mahdollista tehdä omia ohjelmia. Oli myös hyvä saada käsitys ohjelmoinnin periaatteista, koska tietokoneohjelmia tulee kuitenkin käytettyä melko paljon - oli opettavaista saada tietää jotain siitä, miten ne on tehty, sekä tiedostaa, että ratkaisut olisi usein voitu tehdä myös toisella tavalla.

Edit 24.12.23.

Opiskelijan ohjelmointikirja. Vaiheittainen visuaalinen opas, 2018 [kirjassa ei suomenkielisen painoksen julkaisuvuotta, katsottu kirjaston sivuilta] (Computer Coding - Python Projects for Kids, 2017). Tekijät: Carol Vorderman, Craig Steele, Claire Quigley, Martin Goodfellow, Daniel McCafferty ja Jon Woodcock. Kustantaja: readme.fi. Suomennos: Veli-Pekka Ketola. Kansi: Marko Tapani. 224 sivua.

2 kommenttia:

  1. Määki oon jotain ohjelmoinnin perusteita tehny ja se oli kyllä siisti huomata, ku sai aikaan jotain.

    VastaaPoista
    Vastaukset
    1. Joo, se oli hauskaa. Ohjelmoinnissa on myös oma "tietokoneen logiikkansa", joka on usein erilaista kuin arkilogiikka, ja tehtävien tekeminen sai ajattelemaan asioita uudella tavalla (ei välttämättä normaalielämässä hyödyllisellä tavalla, mutta uudella). Mutta koodin naputtelu oli ajoittain vähän tylsää.

      Poista