OLOwiBotti

Tarina alkaa sadasta muistilopusta ja päättyy yhdeksään moduuliin. Tulos on botti, joka omatoimisesti reagoi, trollaa ja spämmää – hyvän maun rajoissa tietenkin. Mutta mitä on hämmentävien irc-kommenttien takana, ja millaista koodin tekeminen oli? Tarina sadasta yhdeksään ja sen yli alkakoon. Lue loppuun

Mainokset

Irkkibotin arkkitehtuurin suunnittelu

Seitsemännen tapauksen oppimistavoitteena minulla oli miettiä IRC-botin arkkitehtuuri ja esitellä saavutukseni muille. Ajatuksien hahmottaminen joksikin konreettiseksi toi asiaan mielenkiintoista haastetta – käsien heiluttelu kun ei oikein tietokoneruudulla näytä niin hyvältä. Tavoitteenani oli saada arkkitehtuuri mahdollisimman joustavaksi siinä mielessä, että jokainen ryhmän jäsen voisi toteuttaa oman moduulinsa/luokkansa bottiin välittämättä siitä että miten toisten robotit sopivat sen kanssa yhteen. Jokaisen moduulin pitäisi olla irrallinen kokonaisuus ja samalla helppo koodata. Lue loppuun

Ohjelmointi 2

Toinen ohjelmointikierros koitti ensimmäisen kierroksen jälkeen ja nopeasti koittikin. Ennen kuin oli ehtinyt sisäistää ensimmäisenkään kierroksen asioita oli otettava käyttöön liuta uusia Javan ominaisuuksia ja suunniteltava kompleksisia loogisia rakenteita. Tehtävä oli tuntui haastavalta ja välillä hyvin hajottavaltakin, mutta lopulta siitä selvittiin.

Toinen ohjelmointikierros erosi ensimmäisestä kierroksesta tehtävän haastavuuden lisäksi ajankäytöllisissä asioissa. Nyt kuvaan nousivat luotujen luokkien testaukset ja niistä seuranneet virheiden etsinnät. Omalla kohdallani virhettä etsittiin Sektoritestissä monta tuntia Sektori-luokasta kunnes vihdoin huomattiin, että isoin virhe olikin Karttaruudussa. Tätä ennen oltiin kuitenkin ehditty korjata monta virhettä Sektoristakin. Monen tunnin kuluminen yhden luokan koodin korjaamiseen tuli itselleni yllätyksenä, johon en ollut ymmärtänyt varautua, ja tästä johtuen opinkin Studio 1:stä selviytymisen kannalta elintärkeän asian: kierrosta ei koodata yhdessä päivässä.

Kierroksessa palkitsevaa oli omien logiikoiden laatiminen. Varsinkin sitten kun ne toimivat. Aluksi metodin logiikan kehittäminen vaikutti saavuttamattomalta määränpäältä. Tähän oli kaksi syytä. Ensinnäkin tilani perjantaina oli melko mielenkiintoinen. Olin jännittänyt tulevan päivän koitosta ja nukkunut huonosti, ruokailuista oli monta tuntia ja koodia oli tullut tuijotettua liian monta tuntia putkeen ilman happihyppelyä. Toisaalta logiikkaa on vaikea hahmottaa selittämättä sitä itselleen toisin sanoin. Tämän tajuaminen oli koodini syntymisen kannalta ensiluokkaisen tärkeää havaita. Näin ollen ennen kuin edes yritin luoda Eclipseen riviä toisen perään koodia otin lyijykynän ja paperia ja aloin hahmotella metodin ehtoja ranskalaisin viivoin.

Kierroksen lopun generoinnin laatiminen ja testaaminen oli ehdottomasti koko kierroksen hauskin vaihe. Oli virkistävää katsella maastotyyppien syntymistä maailmaan väreinä monen tunnin tekstin tuijottamisen jälkeen, ja oli hienoa huomata, että syntyvän maailman logiikkaa vastasi sitä, mitä oli paperilla luonnostellut.

Toinen kierros oli opettavaisempi kuin ensimmäinen kierros kuten odottaa saattoi. Oli kuitenkin hyvä, että nollaharkka ja ensimmäinen kierros olivat pohjana. Muuten mistään ei olisi tullut mitään. Koodaamista auttoi myös itseä taitavampien kurssitovereiden tuki. Kaksi päätä oli todellakin enemmän kuin yksi. Parhaiten löysi omat virheet ja koodin tai logiikan puutteet, kun oli kaveri kyseenalaistamassa omia ratkaisuja ja esittämässä kysymyksiä rivi riviltä. Projektia varten pitää kyllä hankkia kumiankka.

Ohjelmointitehtävä 1 – Olipa kerran olio

Kun pari viikkoa orientoitumista oli takana, uudet kaverit oli hankittu ja tapahtumia riitti, ajattelin mielessäni: ”Eihän tämä ole ollenkaan hassumpaa”. Sitten se iski kuin märkä rätti vasten kasvoja – Ohjelmointitehtävä numero uno.

En ollut suinkaan ainoa, joka ei osannut odottaa, puhumattakaan arvostaa tulevia perjantai-iltoja (ja öitä) koulun hikisessä tietokoneluokassa muiden kohtalotoverien kanssa. Työmäärä javanoviiseille oli valtaisa, eikä yksikään rivi tullut kirjoitetuksi oikein ilman kerta toisensa jälkeen epätoivoisempaa huutoa: ”Assariiiiii…!”. Pitkät illat tutkittiin luokkien ja olioiden mystistä maailmaa, luotiin attribuutteja, metodeja ja ties mitä noittuutta. Vähemmästäkin lähtee järki ja terveys.

Ymmärsin siis tulevan syksyni tarkoittavan epätoivoista koodaamista yömyöhään ja heitin hyvästit ajatukselle rennoista illoista kavereiden kanssa tummien lagerien äärellä. ”Ei auta” – ajattelin, ja aloitin lukea tehtävänantoa. Loimme kuin tyhjästä esineitä ja olentoja, jotka saivat puukkoja ja tökkivät tynnyreitä ja toisiaan. ”Tämähän on kivaa!”, kuulin erään Jaakko Taskisen huutavan monasti upouuden MacBookinsa äärellä silmät loistaen, mutta itse en voi sanoa samanarvoista valaistusta kokeneeni tämän tehtävän aikana.

Koodaaminen oli pakko keskittää niin kutsuttuihin paniikkeihin, sillä muuten ei yksinkertaisesti ollut mahdollista edetä, sillä assarit olivat ainoa keino saada koodia eteenpäin. Kateellisena katselimme niitä, jotka jo kaukaa viisaana olivat tutustuneet Java-ohjelmointiin. Pian päätään nostivat ne uljaat ja avuliaat, jotka auttelivat avuttomia phukseja omalla kallisarvoisella vapaa-ajallaan, ja osaltaan tekivät sen mahdolliseksi, että suuri osa sai kuin saikin koodinsa valmiiksi määräaikaan mennessä.

Tehtävä itsessään tutustutti tekijänsä javan perusominaisuuksiin, kuten operaattoreihin ja if-lauseeseen. Vaikka jälkeenpäin nämä kaikki tuntuvat suhteellisen helpolta, muistan elävästi, kuinka epätoivo hiipi taikajuoman herkullisuutta määritellessä samassa mittakaavassa kuin pahimpina asepalveluksen märkinä maastoaamuina viikon pituisen leirin toisena aamuna.

Pikku hiljaa alkoi onnistua itsenäinenkin työskentely, eikä assaria tarvinnut pitää kädestä. Google oli ystävä, ja sieltä saikin usein paljon helpommin ja paremmin vastauksen kuin kurssin oppikirjoista. Siinä vaiheessa kun konsoliin sai tulostettua eeppisen taistelun oikein, sydämen valtasi lämmin tunne, että tämä on ohi, luojan kiitos. Mutta ilo oli ennenaikaista, sillä jo maanantaina silmien edessä odotti uusi tehtävä, joka oli taas naamioitu hauskan kuuloiseksi. Seikkailupeli ja taisteluja – pakkohan sen on olla nyt kivaa. Vai onko..? No eipä ollut ei.