Lopun sanat

Studio 1

”Te ette selviä studio 1:stä” tuntui alkuunsa kummalta liioittelulta – ei kai se ohjelmointi nyt niin vaikeaa voinut olla? Pian kuitenkin selvisi, että kurssi on kyllä ansainnut maineensa.

Oli täsmälliset tehtävänannot ja assarit ja paniikit, mutta silti tuntui, kuin phuksiparat olisi heitetty kylmään veteen. Samalla kun muutama kymmenen phuksia yrittää samanaikaisesti selvitä luokkakohtaisten metodien saloista ja paikalla on vain muutama assari, on kaaos jo melko valmis. Onneksi oli olo-sessiot, niiden infopläjäykset ja post-it-lappujen kirjoituskilpailukisat. Teoriat oli hyvin sidottu vuorovaikutuksen yhteyteen, vaikka välillä annettujen tiedonetsintätehtävien tiedonetsintä jäikin hieman lyhyehköksi.

Vaikka esseet ja käsitekartat tuntuivat aina tulevan huonoon väliin, osoittautuivat ne kuitenkin varsin hyödyllisiksi varsinkin projektia tehdessä – ainakin omia Swing-esseitä tuli lueskeltua projektin teon yhteydessä.

Vauhtiin pääsemisessä kesti aikansa, ja tehtävänannot vaikeutuivat ja monimutkaistuvat aikalailla samaa tahtia oppimisen kanssa. Kun lähtötietoa koodaamisesta oli tasan nolla, oli opittavaa paljon, ja se piti tehdä vauhdilla. Perjantainen paniikki muuttui jo aikalailla tutuksi, kun viimeisten päivien aikana tuli tahkottua suurin osa koodista. Ja jokaisen DL:n jälkeen tulikin jo seuraava tehtävänanto päälle, joten tehtäviin oli harvoin aikaa keskittyä enempää kuin se viikko. Muista kursseista ei sitten puhutakaan.

Itselleni suuri helpotus oli päästä eroon seikkailupelistä. Siinä vaiheessa kun oli vihdoin oppinut ymmärtämään, että Google on ystävä, oli mukava aloittaa ns. tyhjältä pöydältä. Myös se, kuinka työnsä tulokset pääsi näkemään heti graafisen puolen ansiosta, oli varsin palkitsevaa. Viimeinen tehtävänanto olikin mielestäni kaikista antoisin.
Projekti kuulosti alkuunsa varsin kauhistuttavalta – että pitäisi keksiä aihe ja arkkitehtuuri ja itse koodikin ihan itse? Heti alkuunsa minulle oli kuitenkin selvää, etten haluaisi alkaa räpeltämään peliä, vaan olisi mukava tehdä jotain oikeasti hyödyllistä, eikä (minun taidoillani) jotain vähintäänkin rumaa ja yksinkertaista tasohyppelyä. Kaveripiirissä käytyjen ideointipiirien jälkeen ideaksi syntyi kryptausohjelma. Tosin sellaiselle tarvitsisi vielä jonkin alustan, joten päätin sijoittaa ohjelman sähköposti-clientin yhteyteen.

Projekti opetti enimmäkseen kolme asiaa: Google on jumala, paras koodausaika on kymmenen jälkeen illalla ja kaikki parhaat ideat tulevat aina viimeisten tuntien aikana. Oli myös eräs asia, jota en edes projektin aika oppinut: aloittamaan ajoissa. Toisaalta taas, projekti oli Rubyricissä jo 23.31, joten mitä turhia.

Studio 1 jäi mieleen intensiivisenä, työntäyteisenä, välillä hermoja raastavana, mutta siltikin palkitsevana kokemuksena. En kylläkään tiedä, onko Java mukava työkalu vai ohjelmoijien hermojen riistämiseksi tehty kidutusväline.

Ohjelmointikierros 5

 

Viidennellä ohjelmointikierroksella hylättiin aikaisempien ohjelmointikierrosten seikkailupelimaailma ja aloitettiin puhtaalta pöydältä uuden projektin parissa. Tällä kertaa aiheena oli luoda kaikille tuttu miinaharavapeli – ihan oikeasti toimiva peli, jota pysty klikkailemaan ja se reagoikin!

 

Ohjelmointikierroksen ideana oli tutustuttaa Swing-luokkakirjaston käyttöön, minkä avulla ohjelmalle luotaisiin graafinen käyttöjärjestelmä. Muutenkin tarkoitus oli tutustuttaa kerroksellisen käyttöjärjestelmän tekemiseen, eli MVC-malliin.

Ohjelmointikierros erosi aikaisemmista myös ohjeistuksen osalta – itse tehtävänanto oli paljon avoimempi kuin aikaisemmat tehtävänannot, joissa kaikki oli annettu metodien nimiä myöten. Tehtävänanto antoi selkeän kuvan siitä, mitä haetaan, muttei rajoittanut käytännössä koodin tekemistä.

 

Jo työn alkumetreillä pääsi ihastelemaan näytölle avautuvia ikkunoita ja nappuloita ja työnsä tulokset pääsi konkreettisesti näkemään jossain muussakin muodossa kuin konsoliprintteinä.

 

Actionlistenereiden ja layout asettelijoiden kanssa oli Google kiihkeässä käytössä, varsinkin kun ohjelma tuuppasi olemaan toimimatta pikkuvirheiden takia. eikä ollut aivan varma mihin kaikkialle niitä sulkeita tuli pistää.

 

Luokan peliruudukko ja peliruutu integrointi uhkasi vakaasti tuottaa harmaita hiuksia, mutta onneksi töppäilyjään pystyi koko ajan tarkistelemaan graafisen puolen kautta – virheet oli helppo löytää, kun pääsi konkreettisesti näkemään, mikä ei toimi ja miten se ei toimi. Vanhat rakkaat For-loopit olivat ahkerassa käytössä ruudukoiden läpikäymisessä.

 

Loppumetreillä ohjelmointi muuttui taas helpommaksi pikkunäpertämisesksi, ja varsinkin viimeisten tuntien aikana bonustehtävien näpertäminen oli varsin mukavaa, vaikka appletin tekeminen ei aivan onnistunutkaan. Kokonaisuudessaan oli mukavaa saada tehdyksi konkreettinen ohjelma GUI:lla niin, että itsekin pääsi sitä napsuttelemaan.

 

 

Tapaus 5 – Purku

Tapaus 5 – purku

Pienten teknisten ongelmien vallitessa tapaus vitosen purku aloitettiin paperiversioilla  ja teorian läpikäynnillä.

Heti alkuun todettiin, että Javan poikkeuksista on varsin kattavasti tutussa kalakirjassa, josta saakin mainiosti aineksia kolmannen teoriakierroksen tekemiseen.  Emmi oli kahlannut aiheesta ”poikkeukset Javassa” tärkeimmät tiedot meille jaettavaksi ja asiaa riitti.

Todettiin myös, että virikkeeksi annettu koodinpätkä suorastaan kuhisi virheitä, ja että niiden etsiminen muiden koodista on aivan tarpeeksi masentavaa, kun sama pitäisi tehdä omalle koodille. Onneksi on Javan virheilmoitukset.

Muistivuodoista todettiin sen verran, että Javan roskienkerääjä iloisesti auttaa ohjelmoijaa tämän ongelman kanssa, joten Javassa ei oikeastaan muistivuotoja pääse tapahtumaan. Esimerkiksi kuitenkin tuli vielä C++:n muistivuodot, koska ko. ohjelmointikielessä työt täytyy tehdä itse.

Javan testausmenetelmiä käytiin läpi lyhyehkösti, samaten sitä, mitä ominaisuuksia ei Javassa voida testata. Käytiin vielä läpi mitä konstruktoreissa, attribuuteissa ja metodeissa tulee olla, ettei virheilmoituksia ala sadella. Mitään uutta ei kuitenkaan hirveästi tullut, sen verran monta on kyseisiä palasia tullut tehtyä.

Hetken huvittunut hengähdystauko saatiin, kun päästiin kuuntelemaan tarinoita pieleen menneistä ohjelmistoprojekteista. VR:n lipunmyyntijärjestelmät ja muut mielenkiintoisiin lopputuloksiin päätyneet ohjelmistoprojektit herättivät huvittuneisuutta koodariryhmässä.

Kun tekniikka päätti vihdoin alkaa toimia, päästiin esittelemään Javan debuggeria tositoimissa. Hirveästi ei kyllä siihen käsiksi päästy, koska moni koki että virheiden hakeminen Javan virheilmoitusten avulla ja tulostuksia tutkailemalla on helpompaa.

Vielä päästiin tutkailemaan diaesitystä Javan yleisimmistä poikkeuksista, joihin jokainen oli jo varmasti törmännyt, ja tutkailemaan pientä testausohjelmistoa, joka valitti kun nollalla yritettiin jakaa. Koodi oli varsin hieno, ja siitä saattoi jotain oppiakin.

Purkua seurailemassa oli nurkassa istuva tutkijatäti, joka veteli viivoja paperiin.

Make me a sandwitch

Tapaus 2:n perusteella syntyi oppimistavoitteena tehdä voileiväteko-ohjeet aivottomalle ohjelmalle (=pikkuveljelle?). Tässä tulos:

 

Esitietovaatimukset:
– Tietää mikä on:
keittiö, jääkaappi, leipä, levite, leikkele, juusto, vihannes, veitsi
– Osaa:
kävellä, tunnistaa asioita, etsiä, leikata, levittää, syödä

Ohje:

1. Mene keittiöön (Tunnistaa keittiön, osaa kulkea sinne)
2. Avaa astiakaappi

– Ota lautanen (Tunnistaa lautasen)

– Ota veitsi ja juustohöylä

– Vie lautanen, veitsi ja juustohöylä pöydälle (Tietää mikä on pöytä, osaa kulkea, laskea lautasen)

3. Leipähylly
IF leipää on

  a) – Leivän valikointi (Tietää mikä on leipä, laadulla ei väliä)

        – laske pöydälle
ELSE leipää ei ole

   b)   –  odota aikamäärä x, palaa kohtaan yksi

4. jääkaappi
IF tuotteita on

a) – levitteen, leikkeleiden, juuston, kurkun valikointi

    – laske pöydälle
ELSE tuotteita ei ole

b)  – älä syö, odota aikamäärä x, palaa kohtaan yksi

5. levitteen levitys
– ota levitepaketti
– avaa levitepaketti
– ota veitsi
– ota veitsellä levitettä
– levitä veitsellä levitettä koko leipäpalan päälle n. 2mm kerros
6. kinkku
– ota kinkkupaketti
– avaa paketti
– ota yksi kappale leikkelettä
– aseta leivälle
7. juusto
– ota juustopaketti
– avaa paketti
IF juusto viipaleina

a) – ota yksi kappale juustoviipaleita

        – aseta leivälle
ELSE juusto palana

b) ota juusto ulos paketista

– ota juustohöylä

        – höylää juustohöylällä viipale
– aseta leivän päälle
8. kurkku
– ota kurkku
– ota veitsi
– leikkaa veitsellä palasia
– aseta palaset leivän päälle
9. istuminen pöydän ääreen tuolille
– ota leipä
– siirrä lautaselle

– istu tuolille pöydän viereen

10. syönti
– ota leipä lautaselta
– laita osittain suuhusi
– puraise pala irti
– pureskele
– niele
– toista

Tapaus 4: Elämä on peli – kadonneen eXän metsästys

Tydyy.

Tapaus nelosen (joka tällä kertaa oli oikeasti numero 4 eikä laatikko) käsittely alkoi intoihimoisella lukemisella muruisten kaurakeksien narskuessa hampaissa. Perinteiset pöydänpäässäistujamme (=assarit) Kake ja Henri olivat korvautuneet tiivistyneesti yksinäisellä Joonaksella.
Nyt tehtävänannossa oli kyse roboteista ja labyrinteistä – äärimmäisen mielenkiintoisesta aiheesta siis. Tehtävänannossa vilisi jo java-termejä olioista arvoihin sekä esimerkkejä robotin osaamista asioista metodikäskyinä ja tapauksen mieltäminen java-koodina alkoi käydä jo luontaisesti.

Lue loppuun