Tietokonesarjamme päättyy tähän osaan. Matkamme alkoi pienimmistä osista, joten se on hyvä päättää kaikkein suurimpiin rakennelmiin. Mikä ihmeellisintä, pienikin on yllättävän suurta. Tietojenkäsittelyssä usein hyödyllisimmät ideat ovat periaatteeltaan yksinkertaisimpia, kuten viime kerralla nähtiin erityyppisen tiedon muodossa.
perjantai 9. joulukuuta 2016
keskiviikko 7. joulukuuta 2016
Tietokone, osa 8: Tekstiä ja kuvia
Viime kerralla rakenneltiin ohjelmia palikoista. Nyt on hyvä hetki lisätä lelulaatikkoon ääntä, kuvaa ja reaalilukuja ennen kuin sarja pääsee loppumaan. Siispä kohti kissavideoita!
maanantai 5. joulukuuta 2016
Tietokone, osa 7: Funktiot
Perjantain ohjelmointitekstissä esitettiin itseisarvofunktion toteutus useammalla ohjelmointikielellä. Funktion määritelmä puolestaan jäi vielä vajaaksi, muuten kuin että se muistuttaa matemaattista vastinettaan. Matemaattinen määritelmä on seuraava:
Funktio on sääntö, joka liittää jokaiseen määrittelyjoukon $A$ alkioon täsmälleen yhden maalijoukon $B$ alkion.
Toisin sanoen funktio ottaa vastaan joitakin parametreja ja antaa niiden pohjalta tuloksen. Muunnetaan tämä osaksi ohjelmaa.
perjantai 2. joulukuuta 2016
Tietokone, osa 6: Ohjelmointi
Viimekertaisen konekieliharjoituksen jälkeen on hyvä siirtyä oikeisiin ohjelmointikieliin. Pieni määrittely lienee paikallaan: ohjelmointikieli on keinotekoinen kieli, jossa on (yleensä) yksinkertainen ja kiinteä kielioppi sekä pieni sanasto. Kielestä riippuen koodi on lähempänä matematiikkaa tai englantia. Kääntäjäksi kutsuttu ohjelma muuntaa koodin konekieliseksi esitykseksi. Ohjelmointikielellä on kaksoistarkoitus olla selkeä sekä koneelle että ihmiselle, ja kiitos ihmisten luovuuden, niitä on ehditty luoda useampia tuhansia, hieman eri tarkoituksiin ja eri ajatusmalleja kannustaviksi.
Tässä osassa esittelen muutaman pääsuuntauksen historian varrelta, siinä missä niitä itse osaan. Loppuun olen lisännyt linkin Code.org -sivuston tunnin mittaiseen ohjelmointitehtävään, joka on aika loistavan oloinen ja visuaalinen tapa tutustua periaatteisiin itse. Aloitetaan!
keskiviikko 30. marraskuuta 2016
Tietokone, osa 5: Konekieli
Nyt on aika pistää edellisellä kerralla esitelty prosessori tekemään hyödyllistä työtä. Prosessori suorittaa yksinkertaisia käskyjä, jotka on esitetty "konekielellä" — ne on niin ikään esitetty lukuina, joille on annettu tietty merkitys.
Konekieliohjelmointia tehdään nykyään erittäin vähän, koska se on monimutkaista ja vaatii syvällistä ymmärrystä koneen toiminnasta. On paljon järkevämpää käyttää työkaluja, jotka ovat luettavampia ihmiselle ja jotka tuottavat parempaa konekieltä kuin tavalliset kuolevaiset. Konekieli on varattu käyttöjärjestelmien ja ohjelmointikielten kehittäjille — sekä meille, jotka syvennymme prosessorin toimintaan.
maanantai 28. marraskuuta 2016
Tietokone, osa 4: Mitä tietokoneeseen kuuluu?
Viime viikolla kävimme läpi matemaattisia perusteita, joiden päälle tietokone rakentuu. Tällä viikolla on aika pistää ne hyötykäyttöön. Tässä osassa käymme (pintapuolisesti) läpi tietokoneen historian ja perusosat, jonka jälkeen siirrymme ohjelmoimaan koneen omalla kielellä. Viikon lopuksi siirrymme ihmisen luettavaksi kelpaaviin kieliin. Jatketaan!
perjantai 25. marraskuuta 2016
Tietokone, osa 3: Negatiiviset luvut
Viime osan lopuksi vihjasin, että ympäripyörähtävät luvut käyttäytyvät hyvin kummallisesti. Auton matkamittari pyörähtää miljoonan kilometrin sijaan nollaksi, mutta sen ei odoteta pystyvän esittämään negatiivisia kilometrejä. Tietokoneessa miinusmerkit ovat kuitenkin välttämättömiä, ja siksi $127+1$ voikin olla $-128$!
keskiviikko 23. marraskuuta 2016
Tietokone, osa 2: Yhteenlasku
Edellisellä kerralla aloitimme pohjalta tutustumalla loogisiin piireihin ja binäärilukuihin. Tänään siirrymme seuraavalle tasolle: tietokoneemme alkaa käsitellä luonnollisia lukuja ja laskea niitä yhteen.
maanantai 21. marraskuuta 2016
Rakennetaan tietokone!
Olen silloin tällöin ollut tilanteessa, jossa päädyn selittämään tietokoneen toimintaperiaatetta (normaali ruokatunti Clasussa!). Tietokoneita on kaikkialla, mutta ne ovat eräänlaisia mustia laatikoita, joiden toimintaperiaate on mystinen salatiede. Näin ei ole. Tietokone on pohjimmiltaan äärimmäisen yksinkertainen laite, ja tämä sarja tulee esittelemään sen alkeista ylöspäin.
Matkamme jakautuu yhdeksään osaan kolmen viikon varrella. Tällä viikolla käydään läpi perusteita, joista matematiikka ja logiikka tietokoneen sisällä saavat alkunsa. Ensi viikolla näistä kootaan yksinkertainen tietokone, ja viimeisellä viikolla palasista muodostetaan jokaisen tuntema kokonaisuus. Yritän myös sisällyttää jokaiseen osaan pari tehtävää niille, joilla on aikaa ja kiinnostusta. Viikot ovat jokseenkin erillisiä, joten jokaiselle pitäisi löytyä jotain, toivottavasti.
Jotta sarja pysyisi mielekkäänä, käsittelemme erittäin yksinkertaistettua versiota tietokoneesta. Käsittelemme ohjelmointiakin varsin pintapuolisesti — algoritmien perusteista saisi kasattua toisen samanlaisen sarjan. (Josta voin olla kiinnostunut, jos sille on lukijoita!) Tämä ei opeta rakentamaan tietokonetta tai ymmärtämään Exceliä, mutta ehkä se raottaa hieman verhoa. Aloitetaan!


