Kesä on!

Nyt aurinko paistaa, linnut laulaa ja kukat kukkivat, voisiko kesä ihanammin alkaa. Lämpötila on käynyt 20 asteen tasolla, kymmenen asteen yli mennessä kasvit kasvavat. Vielä viikko sitten oli lunta ja tuiskutti, mutta nyt on aivan kirkas taivas, tuuli puhaltaa etelästä ja sää on ihan erilainen kuin aiemmin. Me olemme täällä vuoriston oikealla reunalla, niin tuuli liikkuu pääosin joko etelästä tai sitten kylämästä pohjoisesta, yleensä viikkoja yhtäjaksoisesti.

Kuva 1. Deal with it.

Itselläni menee oikein hyvin, saan olla töissä ja muutenkin on kaikki mukavasti. Puhutaan paljon, että uusi nousukausi alkaa taloudessa. Aiemmasta talouskuplasta on jo 20 vuota, joten talouden uusi nousukausi voi olla käsillä. Tällä kerta se tapahtuu uusiutuvalla energialla, joka tulee olemaan tämän talouskuplan henki. Lopputuloksesta ei tiedä vielä kukaan, sen päättävät osakkeenomistajat. Aina hekään eivät ole oikeassa, kuten Nokialle kävi. Itse jopa AMK-opiskelijana ymmärsin, että Elopin ottaminen Nokiaan oli kuin troijalainen tietokoneessa, joksi häntä usein nimitettiin.

Kuva 2. Melkein kuin suoraan Wikipediasta.

Ohjelmien kehittäminen on erikoista työtä, joka poikkeaa hyvin paljon monesta muusta insinöörityöstä. Ohjelman toiminta ei ole  puhdasta matematiikkaa. Ohjelmoinnissa matematiikka on vain looginen työkalu, jota hyödynnetään ohjelmien suunnitteluun. On olemassa binäärinen algebra eli boolean algebra, jolla voidaan laskea binäärilogiikkaa. Alkujaan tämä logiikka on peräisin 1800-luvulta, alkuperäinen kehittäjä oli matemaatikko George Boole (2. marraskuuta 1815 Lincoln, Lincolnshire, Englanti – 8. joulukuuta 1864 Ballintemple, Corkin kreivikunta, Irlanti), saamatta työstään ansaitsemaansa kunniaa omana aikanaan [wiki]. Hänen työtään ei pidetty edes matematiikkana, ehkä se ei sitä olekaan.

Kuva 3. Boolean algebran esimerkki, jossa sievennetään monimutkainen logiikkakytkentä yksinkertaisemmaksi. [adgefx]
Boolen algebra eli digitaalinen logiikka on yksi tärkeimmistä asioista tietotekniikassa. Kun vielä lisätään loogiset vertailulauseet ja hyppykäsky, niin niitä tapahtumia kuvaavaa koodia ajavaa konetta sanotaan mielestäni hyvällä omallatunnolla tietokoneeksi. Sellainen voidaan kolvata kasaan esimerkiksi transistoreista tai legoista. Niitä voi myös mallintaa ohjelmalliseti [logisim]. Seuraavassa videossa on hyvin esitelty, että miten nämä digitaaliset portit toimivat käytännössä.

Ohjelmasuunnittelu on perinteisesti ollut ohjelman toiminnan ymmärtämistä, mutta nykyään ketterään aikaan pyritään enemmänkin ymmärtämään asiakkaan tarpeita suunniteltaessa ohjelmaa. Kun on menetelmät, jossa asiakas, ohjelmoija ja myyntihenkilö puhuvat yhteisin käsittein, niin asioiden tekeminen oikein on helpompaa. Yhteinen ymmärrys siitä, että käyttöliittymässä näkyvä pieni muutos voi olla toiminnallisesti valtava, niin auttaa asioiden hoitamista. Käyttäjätarinoilla asian ilmaiseminen on helpompaa, asiakas oivaltaa itse, että miten iso muutos on, jos se vaikuttaa moneen käyttäjätarinaan. Yleensä ne myös kuvastavat sitä, jota asiakas oikeasti haluaa, vaikka itsekään eivät sitä tiedä.

Ohjelmoijalle on jopa parempi, että saa tehdä töitä oman osaamisensa mukaan. On lukematon määrä tapoja tehdä asiat oikein, asiakasta ehkä kaikista vähiten kiinnostaa koodaustyylit. Eikä aina edes muita ohjelmoijia kiinnosta koodi, ennen kuin he itse joutuvat sen kanssa tekemisiin, jonka jälkeen koodin kirjoittaminen väärällä käyttöjärjestelmällä on jo itsessään virhe.

UML-luokkakaavion noudattaminen eli nykyaikainen olio-ohjelmointi mahdollistaa sen, ettei pysty kirjoittamaan spagettikoodia. Jos mistä tahansa kohtaa ohjelmaa lähtee liikeelle, niin ei saa päästä tekemään silmukoita, rekursio poikkeuksena. Hieman kuin tieverkoston jokaisesta pisteestä lähdettäessä pitää päätyä umpikujaan, poikkeuksena ”ympäri ympäri…”-liikenneympyrä. Jokainen lukija varmasti huomasi heti, että kuvasin Tampereen keskustan liikenneverkostoa. Ongelmaksi jää tai tulee se, että luokkakaavioon tulee helposti ns. äitiluokkia, joten myös luokkien välisiä viittauksia tulee rajoittaa. On mahdollista sopia korkeintaan esimerkiksi 100 riviä suositusrajaksi luokille, kyseistä kivaa lukua jotkut osaajat ovat sanoneet liian lepsuksi, mutta itse olen tottunut rullahiireen, Linuxissakin luulisi toimivan Page Up, Page Down, Home ja End -napit? Sen rajan yli mennessä luokka yksinkertaisesti jakautuu kahtia kuin solu tai blogikirjoituksen kappale. Bugien löytäminen tekstistä vaikeutuu kappaleiden kasvaessa suuremmaksi. Ehkä myös blogiartikkelin pysymiseksi asiassa tulisi olla 70 rivin enimmäisraja? Tämä yksi artikkeli tulisi nyt sitten pistää kahteen erilliseen artikkeliin? No ei, minä määrään, joten minua ei sellaiset suositukset koske!

Kuva 4. Päävärit punainen, sininen ja vihreä painovärein mangaani, syaani ja keltainen.

Hyvältä kaikki vaikuttaa, jatketaan samaan mallin!

The Daily WTF – hämmentävin koodilöydös päivittäin
(Hyvä ja selkeä koodi kommentoi itsensä), (Vanhat järjestelmät)
Korpela, J,. 2012. Kirjoituksen rakenne. Kirjoita asiaa. Arkisen asiakirjoittamisen opas. Tampere: TTY.

Vastaa

Sähköpostiosoitettasi ei julkaista.

This site uses Akismet to reduce spam. Learn how your comment data is processed.