Johdanto

Johdanto

Tämä ohjelmoinnin verkko-opiskelumateriaali on suunnattu opettajaopiskelijoille ja jo valmistuneille, työelämään siirtyneille opettajille aina luokanopettajista yläluokkien matematiikan aineopettajiin. Materiaalin tekstisisällön ja tehtävien suunnittelussa on pyritty ottamaan erityisesti huomioon siihen perehtyvien henkilöiden vaihteleva tietoteknisen osaamisen lähtötaso. Vaikka ohjelmointi on vaativa taito oppia, pyritäänkin kynnys siihen tutustumiseen pitämään mahdollisimman matalana.

Koska ohjelmointi saattaa aluksi tuntua aiheena varsin vieraalta ja herättää hyvin monenlaisia mielikuvia, tämä johdanto antaa vastauksia mahdollisiin mieltä askarruttaviin kysymyksiin. Lisäksi toivomme, että se saattaisi tartuttaa lukijaan ripauksen siitä innostuksesta, jota itse koemme ohjelmointia kohtaan.



Mitä ohjelmointi oikein on?

Kaikkein yksinkertaisimmillaan ohjelmointia voi ajatella toimintaohjeiden laatimisena tietokoneelle. Nämä ohjeet puolestaan koostuvat tavallisesti joukosta erilaisia käskyjä, sääntöjä ja määritelmiä, jotka yleisimmin annetaan koneelle tekstin muodossa jollain ohjelmointikielellä kirjoitettuna.

Ohjelmoinnin tuloksena syntyy tietokoneohjelmia, joiden ansiosta tietokone pystyy suorittamaan sille annettuja tehtäviä. Niin käyttöjärjestelmät, Internet-selaimet, taulukkolaskimet kuin erilaiset tietokonepelitkin ovat ohjelmia, jotka uutterat ohjelmoijat eri puolilta maailmaa ovat kirjoittaneet. Näistä kahta ensimmäistä käytät tälläkin hetkellä! Tämän lisäksi ohjelmia löytyy esimerkiksi älypuhelimista, pelikonsoleista, autoista ja ylipäänsä kaikkialta, missä tietotekniikka vain on läsnä.

Kuvan Windows 7 -työpöydällä niin Firefox-selain, Paint-piirtotyökalu, LibreOffice-teksinkäsittelyohjelma kuin pienenä ikonina nähtävä Avast-virustorjuntakin ovat ohjelmia. Myös Windows 7 on itsessään ohjelma. Ohjelmat eivät kuitenkaan ole aina graafisia toisin kuin kuvassa, vaan ne voivat esimerkiksi toimia näkymättöminä taustalla.

Mitä on koodi?

Kun ihminen antaa ohjeita toiselle ihmisille, hän ilmaisee asiansa tavallisesti joko puheena tai kirjoitettuna lukukelpoisena tekstinä. Jotta tietokone voi puolestaan ymmärtää meidän antamiamme ohjeita ja toteuttaa siten toiveemme, sen täytyy saada ohjeensa muodossa, jota se osaa lukea. Tietokoneen ymmärtämään muotoon kirjoitettua tekstiä kutsutaan koodiksi. Kirjoittamalla suoritettava tehtävä koodiksi saadaan puolestaan aikaiseksi tietokoneohjelma. Käytännön tasolla ohjelmointi koostuukin pääasiassa koodin kirjoittamisesta.


Alla on annettu esimerkki Python-nimisellä ohjelmointikielellä koodatusta tietokoneohjelmasta, jonka suorituksen tuloksena syntyy yksinkertainen kahden pelaajan kolikonheittopeli. Tämän koodin pohjalta tietokone siis osaa noudattaa sääntöjä, jotka toteuttavat kyseisen pelin. Ohjelmaa käyttävien ihmisten tarvitsee syöttää tietokoneelle vain ensimmäisen pelaajan arvaus, minkä jälkeen tietokone osaa automaattisesti päätellä toisen pelaajan arvauksen, arpoa kolikonheiton tuloksen ja kertoa voittajan. Tässä vaiheessa itse koodia ei tarvitse vielä ymmärtää.

import random

puolet = ("kruuna", "klaava")

# Pyydetään pelaajaa 1 arvaamaan.
pyyntö = "Pelaaja 1, valitse joko kruuna tai klaava: "
arvaus = input(pyyntö)
while arvaus not in puolet:
    print("Arvauksesi ei ole sallittu!")
    arvaus = input(pyyntö)

# Päätellään pelaajalle 2 jäänyt vaihtoehto.
päätelty = 0 if puolet.index(arvaus) == 1 else 1
puoli = puolet[päätelty]
print("Pelaaja 2:lle jää {puoli}".format(puoli=puoli))

# Arvotaan lopputulos ja ilmoitetaan voittaja.
tulos = random.choice(puolet)
print("Arvottiin {tulos}".format(tulos=tulos))
if tulos == arvaus:
    print("Pelaaja 1 voittaa!")
else:
    print("Pelaaja 2 voittaa!")

Kolikonheittopeli Python-kielellä koodattuna.


Koodaamamme hulppea peli täydessä toiminnassa.

Sama koodi voitaisiin pukea myös ihmisten ymmärtämään muotoon pelisääntöinä, kuten alla on esitetty. Ihmisillekin voi siis luoda ohjelmia! Oikeastaan ainoat merkittävät erot tietokoneelle ja ihmiselle annettavien ohjeiden välillä ovat käytettävässä kielessä sekä siinä, että tietokone on monissa asioissa huomattavasti ihmistä tehokkaampi, luotettavampi ja kyvykkäämpi suorittamaan saamansa ohjeet. Lisäksi ihmiselle annettuihin ohjeisiin sisältyy usein tulkinnanvaraa, kun taas tietokoneelle välitetyt komennot ovat yksiselitteisiä. Toisin kuin koneella, ihmisellä on kuitenkin kyky mielessään täydentää puutteellisia ohjeita.

Kolikonheittopelin säännöt

- Pelaaja 1 valitsee joko kruunan tai klaavan.
- Pelaaja 2 heittää kolikkoa.
- Jos tuloksena oli pelaajan 1 valinta, pelaaja 1 voittaa.
- Muussa tapauksessa pelaaja 2 voittaa.

Kolikonheittopeli ihmisen ymmärtämässä muodossa.

Miksi opettajan kannattaa oppia ohjelmoimaan?

Tulevaisuudessa tietotekniikan rooli kasvaa yhteiskunnassa aina vain suuremmaksi. Vähä vähältä muutos heijastuu myös opetukseen. Opetuksen työkaluja ja menetelmiä kehitetäänkin tulevina vuosina yhä tiiviimmin digitaalitekniikan ja Internetin varaan. Nykypäivänä opettajalla ei tästä johtuen ole varaa jäädä tietotekniikan suhteen täydeksi ummikoksi, vaan aiheesta on hallittava tietyt perustiedot ja -taidot. Ohjelmoinnin opiskelu puolestaan vahvistaa nimenomaan perimmäistä ymmärrystä tietokoneista ja niiden toiminnasta sekä auttaa edistämään omia taitoja niiden parissa. Ohjelmointiin perehtyminen myös laskee yleisesti kynnystä tietokoneiden kanssa toimimiseen ja muokkaa asenteita positiivisemmiksi niitä kohtaan. [1]


Ohjelmoinnin opiskelusta onkin paljon välillistä hyötyä. Siitä on muun muassa tutkitusti merkittävää apua keskeisten ongelmanratkaisutaitojen omaksumiseen silloin, kun sen rinnalla opetetaan ongelmanratkaisun systemaattisia malleja [2]. Tästä syystä näihin malleihin tutustumisella on suuri painoarvo myös tässä oppimateriaalissa. Aiheena ohjelmointi kytkeytyy lisäksi vahvasti matemaattis-loogiseen ajatteluun ja on siten omiaan sen harjaannuttamisessa.

Luonnollisesti ohjelmointi on tämän kaiken ohella myös itsessään äärimmäisen tehokas ja hyödyllinen työkalu monenlaisten ongelmien ratkomiseen ja tehtävien automatisoimiseen. Tämän materiaalin jatkomoduulissa esiteltävää Python-ohjelmointikieltä voi esimerkiksi hyödyntää erittäin monipuolisena ja kätevänä laskimena perinteisten taskulaskimien sijaan!

Opettajalle kaikkein väistämättömin tosiasia on kuitenkin se, että vuoden 2016 opetussuunnitelmauudistuksenmyötä ohjelmointi astuu osaksi matematiikan perusopetusta. Tästä syystä ohjelmoinnin alkeiden hallitsemisesta muodostuu välttämätöntä. Koska ohjelmointi on tietyssä mielessä eräänlainen tapa kommunikoida, voi sitä verrata luonnollisiin kieliin. Niin englannin, ruotsin, saksan kuin ohjelmoinninkaan pätevä opettaminen ei nimittäin ole mahdollista, ellei opettaja itse hallitse edes kommunikaation perusteita.

Mitä hyötyä lapsille on ohjelmoinnin oppimisesta?

Usein lapsille suunnattua ohjelmoinnin opetusta vastustetaan sillä perusteella, ettei kaikista lapsista tule koodareita ja etteivät kaikki lapset aikuisiksi kasvettuaankaan tarvitse työssään ohjelmointia. Tämä on aivan totta. Tietotekniikan merkitys kuitenkin kasvaa jokapäiväisessä arkielämässämme jatkuvasti. Ohjelmointiin tutustuminen puolestaan kasvattaa lapsen ymmärtämystä tietotekniikan perustavanlaatuisesta toiminnasta ja käyttämästämme teknologiasta sekä tarkentaa yleisesti kuvaa siitä, minkälaisen tiedon ja osaamisen varaan nyky-yhteiskuntamme rakentuu. Tässä mielessä puolestaan ohjelmoinnin opetus vertautuu esimerkiksi historian opetukseen: kaikista lapsista ei kasva historoitsijoita, mutta ymmärtääkseen kulttuuria ja yhteiskuntaa, jossa elämme, heidän täytyy silti oppia historiastamme tietyt tärkeimmät perusasiat.

Kuten todettua ohjelmoinnista on lisäksi lukuisia epäsuoria hyötyjä. Ongelmanratkaisutaitojen ja matemaattis-loogisen ajattelun kehittämisen lisäksi motivoivalla lapsille suunnatulla ohjelmoinnin opetuksella voidaan purkaa tietotekniikkaan liittyviä sukupuolistereotypioita ja innostaa myös tyttöjä pienestä pitäen teknologian pariin [3]. Ohjelmointi on lisäksi lapselle erittäin rakentava vapaa-ajan harrastus, jossa käytännön taitojen oppimisen lisäksi pääsee harjoittamaan paljon luovaa toimintaa.

Tietotekniikan alati voimistuvan aseman vuoksi ohjelmoinnin osaamisella voi nyt ja tulevaisuudessa erottua ratkaisevasti edukseen. Taitavia ohjelmoijia ei aiheetta kutsutakaan usein vitsikkäästi koodivelhoiksi. Pystyväthän he salaisia loitsujaan käyttäen taikomaan tyhjästä asioita, joista muut eivät osaa edes uneksia.


Keitä ohjelmoijat ovat?

Ohjelmoija herättää sanana usein hyvin vaihtelevia mielikuvia. Harva tulee kuitenkaan ajatelleeksi, että voisi itse alkaa harjoittamaan tätä mystistä aktiviteettia. Seuraavat esimerkkimme eräistä inspiroivista, tunnetuista ja historiallisesti merkittävistä ohjelmoijista pyrkivät häivyttämään salaperäisyyden verhoa aiheen ympäriltä.

Vaikka toisin saattaisi äkkiseltään kuvitella, maailman ensimmäisenä ohjelmoijana ei suinkaan pidetä yleisimmin miestä vaan naista, tarkemmin sanottuna kreivitär Ada Lovelacea. Hän oli 1800-luvulla elänyt englantilainen matemaatikko, joka tuli tunnetuksi erityisesti työstään Charles Babbagen suunnitelmaksi jääneen varhaisen mekaanisen tietokoneen, niin sanotun analyyttisen koneen, parissa. Hänen muistiinpanonsa sisältävät kaikkein varhaisimman koneen suoritettavaksi tarkoitetun algoritmin – siis ensimmäisen tietokoneohjelman! Kunnianosoituksena Ada Lovelacen mukaan ovat nimetty muun muassa Yhdysvaltain puolustusministeriön kehittämä Ada-ohjelmointikieli ja juuri parhaillaan käyttämäsi web-ympäristö.


Ada Lovelace, 1815–1852


Historian kenties merkittävimpänä tietojenkäsittelytieteilijänä voidaan puolestaan pitää niin ikään englantilaistaAlan Turingia, joka kehitti teoreettisen pohjan nykyaikaiselle tietokoneelle ja tietokoneohjelmille ennen kuin yhtään todellista digitaalista tietokonetta oli vielä rakennettu. Tätä matemaattista mallia kutsutaankin osuvastiTuringin koneeksi. Lisäksi hänet tunnetaan tekoälyn isänä, ja hänen koneiden älykkyyden mittariksi kehittämäänsä niin sanottua Turingin testiä käytetään yhä tänä päivänä tekoälyjen ihmismäisyyden arvioimiseen.

Turingin koki lopulta hyvin traagisen ja ansaitsemattoman kohtalon kaikkiin valtaisiin saavutuksiinsa nähden. Kun hänen homoseksuaalisuutensa paljastui 1950-luvun Britannian tuomioistuimille, hänelle annettiin vaihtoehdoiksi valita joko vankeustuomion tai hormonaalisen hoidon välillä, joka ajan mukaan tekisi hänestä impotentin ja aiheuttaisi myös muita sivuoireita. Turing päätyi jälkimmäiseen vaihtoehtoon, mutta menetettyään myös työnsä tuomionsa seurauksena hän surmasi lopulta itsensä. Vuonna 2014 Hollywood tuotti Turingin elämäntarinasta The Imitation Game -nimisen filmin, jossa pääosaa näyttelee Benedict Cumberbatch ja joka valittiin parhaan elokuvan Oscarin ehdokkaaksi.


Alan Turing, 1912–1954

Epäilemättä maineikkaimpana suomalaisena ohjelmoijana voidaan puolestaan pitää Linus Torvaldsia, joka tunnetaan Linux-käyttöjärjestelmän ytimen alkuperäisenä kehittäjänä. Hän jatkaa edelleen työskentelyään projektin parissa. Linux on maailman suosituin palvelinkäyttöjärjestelmä, minkä lisäksi sitä hyödyntävät esimerkiksi maailman kymmenen tehokkainta supertietokonetta. Myös matkapuhelinkäyttöjärjestelmä Android perustuu Linux-ytimen pohjalle. Torvalds on saanut tunnustusta työstään muun muassa Time-lehdeltä, joka sijoitti hänet vuonna 2000 menneen vuosisadan 17. vaikutusvaltaisimmaksi ihmiseksi.


Linus Torvalds vuoden 2011 Linuxcon-tapahtumassa


Keitä ohjelmoijat siis oikein ovat? Kaiken kaikkiaan he koostuvat hyvin laajasta kirjosta erilaisia ihmisiä. Loppujen lopuksi ohjelmoijaksi ryhtymiselle ei olekaan minkäänlaisia varsinaisia rajoituksia. Kuka tahansa pystyy oppimaan ohjelmointia. Pohjimmiltaan ainoat todelliset vaatimukset sen omaksumiseen ovat ennakkoluuloton asenne ja rahtunen uteliaisuutta.

Kuvalähteet

  1. Why Hello, Sweetheart, Emily Hildebrand, lisenssi: CC BY 2.0, muokkaus: teksti lisätty
  2. Cats love linux, Stephen Woods, lisenssi: CC BY 2.0, muokkaus: teksti lisätty
  3. zelda - lhasa apso, Monika Kaneko, lisenssi: CC BY-SA 2.0, muokkaus: teksti lisätty
  4. Dog Looks Like Harry Potter, petsadviser.com, lisenssi: CC BY 2.0, muokkaus: teksti lisätty
  5. Ada Lovelace (1815–1852), National Portrait Gallery, London, lisenssi: CC BY-ND 2.0
  6. Alan Turing, David Smith, lisenssi: CC BY-ND 2.0
  7. Linus Torvalds - Linuxcon2011, Beraldo Leal, lisenssi: CC BY 2.0, muokkaus: kuvaa rajattu

Viitteet

  1. Woodrow J. (1992) The Influence of Programming Training on the Computer Literacy and Attitudes of Preservice Teachers. Journal of Research on Computing in Education, osa 25, nro 2, s. 200–219.
  2. Goodrum D. & Dalton D. (1991) The Effects of Computer Programming on Problem-Solving Skills and Attitudes. Journal of Educational Computing Research, osa 7, nro 4, s. 483–506.
  3. Beyer S. Comparing (2006) Comparing Gender Differences in Computer Science and Management Information Systems Majors. In: Encyclopedia of Gender and Information Technology, 2006. Hershey, PA, Idea Group: 109–115.

Peda.net käyttää vain välttämättömiä evästeitä istunnon ylläpitämiseen ja anonyymiin tekniseen tilastointiin. Peda.net ei koskaan käytä evästeitä markkinointiin tai kerää yksilöityjä tilastoja. Lisää tietoa evästeistä