Nykyisin ohjelmointiin ja tietotekniikkaan liittyviltä uutisilta on vaikea välttyä, vaikka ei itse olisikaan millään tavalla kiinnostunut tietokoneista saatika niiden ohjelmoinnista. Nykyisin jo ala-asteella opetetaan lapsille ohjelmointityylistä ajattelua [1]. Tietoturva, nettihuijarit, Java, Windows, Linux, älykoti — kahvin keittäminenkin alkaa pikkuhiljaa jo vaatia tekniikan tohtorin papereita. Jopa teknologiaan keskittyneen ihmisen on helppo nykyaikana pudota kelkasta.
Tilanne ei kuitenkaan ole sentään täysin toivoton. Ei tarvitse olla ekspertti ymmärtääkseen teknologian hyödyt, haitat ja käyttökohteet. Tämä teksti keskittyy yhteen monista ohjelmointikielistä – Pythoniin.
Python on noussut yhdeksi maailman suosituimmista ohjelmointikielistä [2]. Jos sinulla on juuri nyt lapsia koulussa, saatat hyvinkin törmätä Pythoniin kotiläksyjen merkeissä. Ohjelmointikieliä on maailmassa kuitenkin useampi sata käytössä. Miksi Python on niin suosittu? Mitä eroa eri ohjelmointikielillä on?
Ohjelmointikieli on tapa antaa tietokoneelle käskyjä. Koska tietokoneet eivät kykene todellisesti soveltamaan saamiaan ohjeita, näiden käskyjen on pakko olla tarkkoja. Jos ihmiselle voi ruokapöydässä sanoa ”anna ketsuppipullo”, tietokoneelle vastaava ohje olisi annettava osittain: ojenna käsi, avaa nyrkki, siirrä kämmen ketsuppipullon ympärille, koukista sormia.
Ohjelmointikielet kaikki tekevät tämän prosessin tavalla tai toisella. Ne voivat erota toisistaan ”syntaksin” eli lauseopin ja sanaston osalta. Aivan kuten ihmisten kielissä, myös ohjelmointikielissä voi olla erilaiset kielioppisäännöt, jotka täytyy ottaa huomioon koodia kirjoittaessa. Lisäksi eri ohjelmointikielissä on oma sanastonsa, vaikka käytännössä kaikissa kielissä tämä sanasto perustuukin Englannin kieleen. Esimerkiksi ”jos asia x tapahtuu, niin sitten..” –rakennelma on yleensä merkitty englannin sanalla ”if”, eli ”jos”.
Yksi lauseoppiero on esimerkiksi muuttujien tyypityksessä. Pythonissa voi kirjoittaa ”i = 5”, jolloin Python ymmärtää, että kirjain i vastaa kokonaislukua 5. Jokin toinen kieli taas saattaa vaatia, että i määritellään erikseen kokonaisluvuksi: ”int i = 5” (int tulee englannin kielen sanasta integer eli kokonaisluku). Ensimmäinen tapa vaatii vähemmän kirjoittamista, mutta toisaalta vaatii sen, että ohjelmointikieli suorittaa enemmän päättelyä, koska kukaan ei suoraan kerro i:n tyyppiä. Tietokoneen on tiedettävä tarkasti datan tarkka muoto, jotta se voi tehdä toimintonsa onnistuneesti.
Tietokoneet eivät suoraan ymmärrä ihmisten luettavissa olevia ohjelmointikieliä, vaan toteuttavat sen sijaan viime kädessä ohjelmia konekielellä, joka on ihmiselle käytännössä käsittämätön. Se koostuu kuvan 1 kaltaisesta joukosta numeerisia koodeja.
Ihmisten kirjoittamat ohjelmointikielet käännetään tähän muotoon tavalla tai toisella. Jotkin kielet ovat tulkattuja, mikä tarkoittaa, että ohjelmisto käännetään \”lennossa\” kun ohjelma avataan, vähän samaan tapaan kuin ihminen voi puhua toiselle tulkin välityksellä. Python on tällainen kieli. Jotkin toiset kielet taas ovat käännettyjä, eli ne käännetään konekielelle ensin ja vasta sitten ajetaan. Tämä vastaisi ihmisten kielessä esimerkiksi kirjan käännöstä toiselle kielelle ennen lukemista. Tulkatut kielet ovat yleensä suoritusnopeudeltaan hiukan hitaampia kuin käännetyt, koska ne joutuvat tekemään työtä suorituksen aikana koodin kääntämiseksi.
Konekoodi koostuu lähinnä numerosarjoista. Tällaista on nokkelammankin kaverin melko vaikea lukea. CC BY-SA 3.0 [3]
Python on tulkattu kieli, joka tekee paljon päättelyä ihmisen puolesta. Pythonin suunnittelussa on uhrattu nopeus luettavuuden ja helppokäyttöisyyden nimissä. Se ei siis sovellu raskaiden ohjelmistojen (vaikkapa lentokoneen ohjauslogiikka, sään ennustaminen simulaatio-ohjelmilla, videopelit, jne) kirjoittamiseen, mutta on erinomainen sellaisten ohjelmien kirjoittamiseen, joissa nopeus ei ole ykkösprioriteetti.
Sekunneilla ja sekunnin sadasosilla on merkitystä, jos kirjoitetaan avaruusaluksen kantorakettien ohjausohjelmistoja. Niillä ei toisaalta ole juurikaan väliä, jos kirjoitetaan ohjelma, joka lukee Excel-tiedoston ja siirtää siellä olevat tiedot johonkin verkkolomakkeeseen. Keskimääräistä käyttäjää tuskin myöskään kiinnostaa, jos verkkosivun avaamiseen menee 0.1 sekuntia enemmän kuin jollain nopeammalla kielellä.
Minkä takia kaikki eivät suoraan käytä nopeampaa kieltä kuin Python, jos se kerran on mahdollista? Eikö parempi olisi nähdä hiukan enemmän vaivaa ja saada aikaan nopeampi lopputulos, vaikka sillä ei olisikaan juuri väliä? Mielenkiintoista kyllä, ohjelmointikielien välillä ei eräiden tutkimusten mukaan ole juurikaan eroa ohjelmointivirheiden määrässä per rivi [4]. Lisäksi ohjelmoijan työpanos tuppaa olemaan nykyään kalliimpaa kuin tietokoneen aika. Tämän takia ohjelma, jossa on vähemmän rivejä (oli ohjelmointikieli sitten mikä tahansa), sisältää yleensä pienemmän määrän bugeja ja tulee halvemmaksi kehittää. Pythonin kaltaiset kielet päättelevät paljon asioita käyttäjän puolesta, joten Python-ohjelma on yleensä lyhyempi kuin vastaava ohjelma jollain nopeammalla kielellä. Tämä johtaa vähempään määrään bugeja ja kehitysaikaa. Ei siis ole yhdentekevää, tekeekö asiat vaikeasti vai helposti.
Pythonin helppous tietysti tekee siitä myös ideaalisen opetuskielen. Opiskelija voi keskittyä vain ohjelmoinnin peruslogiikkaan sen sijaan, että joutuisi opettelemaan kielen teknisiä ominaisuuksia. Moni yliopisto käyttää aloittelijakursseilla juurikin Pythonia.
Tällaiset suosiotekijät tietysti kasaantuvat. Jos Python on suosittu opetuskieli, niin on paljon Pythonia osaavia ihmisiä; jos on paljon osaavia ihmisiä, on myös paljon hyödyllisiä ohjelmistoja, jotka on kirjoitettu Pythonilla. Tämä puolestaan houkuttelee lisää ihmisiä käyttämään Pythonia, ja niin edelleen. Stack Overflow:n (ohjelmoijille tarkoitettu alusta, jossa voi kysyä teknisiä kysymyksiä) trendikartasta näkee Pythonin suosion kasvun.
Asiakkaan näkökulmasta Pythonia käyttävä ohjelmistotalo on todennäköisesti teknologiansa puolesta turvallinen valinta. Huonoja tekijöitä tietysti voi löytyä mistä tahansa ohjelmointikielestä, mutta asiakkaan perspektiivistä Python-talo tarjoaa vakautta. Pythonille löytyy paljon apulähteitä netistä, siihen löytyy paljon osaajia Suomesta ja muualta, ja lisäksi on olemassa jo paljon valmista ohjelmistoa, jota kehityksessä voi käyttää hyödykseen. Vähäisen suosion kielillä on vaarana, että ongelmatilanteissa ei apua saa oikein mistään; pahimmassa tapauksessa häikäilemätön ohjelmistotalo voi tarjota palveluja jollain epämääräisellä epäsuositulla ohjelmointikielellä, jota harva osaa, ja periä sitten ylihintaa palveluistaan, kun toimitettu tuote ei toimikkaan halutulla tavalla.
Ailealla käytämme Pythonia suureen osaan kehitystä. Se on osoittautunut vahvaksi osaksi työkalupakkiamme ja muiden teknologioiden kanssa täyttää asiakkaidemme räätälöidyt tarpeet. Python on myös useiden kehittäjiemme suosikkikieli, ja työstä nauttiminen näkyy positiviisesti lopputuloksessa.
Pythonin suosion nopea kasvu. (Stack Overflow Trends)
[1] Ohjelmointia pikkulapsesta asti, https://yle.fi/uutiset/3-9081859 [2] Python suosiossa, https://www.tiobe.com/tiobe-index/
[3] Machine code, Wikipedia, https://en.wikipedia.org/wiki/Machine_code [4] Code Complete, kappale "Developer Testing"