Tampere
02 May, Thursday
2° C

Proakatemian esseepankki

Pythonin matka ohjelmointikielien kärkikastiin



Kirjoittanut: Joonas Kiuru - tiimistä Empiria.

Esseen tyyppi: Akateeminen essee / 3 esseepistettä.

KIRJALÄHTEET
KIRJA KIRJAILIJA
Python Web Development with Django
Jeff Forcier
Paul Bissex
Wesley Chun
Esseen arvioitu lukuaika on 6 minuuttia.

Pythonin matka ohjelmointikielien kärkikastiin

Johdanto

Disclaimer: Jos kärsivällisyytesi on kulutettu loppuun vähillä yöunilla, päässä jomottavilla deadlineilla ja lidlin kassajonon viiden sentin kolikoilla maksavalla mummelilla, tämä atk-jargonilla rikastettu essee ei välttämättä ole parasta luettavaa sinulle tällä hetkellä. Mutta jos tilanteesi on virkeä ja lapsenmielisellä uteliaisuudella tietokonemaailman ihmeitä kohtaan varustettu, jatka lukemista hyvillä mielin.

Jos ihmettelet miksi aukaisen sinulle portit tähän Python-ohjelmointikielen koukeroiseen maailmaan, on vastaus yksinkertainen. Paljon omasta osaamisestani ja mielenkiinnostani pyörii Pythonin ympärillä, ja kuten loppua kohden huomaamme, on Pythonista kaikenlaisiin projekteihin tekoälystä nettisivujen “bäkkäriin” eli backendiin. Myös algoritmista taidetta luovan ohjelmistoprojektini AlgoCreaten perusta on kirjoitettu Pythonilla. Tässä esseessä syvennymme siihen, minkä takia minä ja niin monet muut ovat valinneet Pythonin työkalukseen.

Sido siis ergonomisen toimistotuolisi niskatuki tiukasti kiinni, ota kuppi koodarin kultaa eli tuhtia yönmustaa kahvia ja hyppää matkaan.

Mikä on Python?

Vaikka ensimmäinen mielikuva onkin kiilusilmäinen tappajamato Afrikan sademetsiköstä, emme puhu tässä tapauksessa pytonkäärmeiden heimosta vaan hollantilaisen Guido van Rossumin 90-luvun alussa julkaisemasta yleiskäyttöisestä ohjelmointikielestä. Yleiskäyttöisellä tarkoitetaan tässä kontekstissa kieltä, jonka käyttötarkoitusta ei ole rajattu, toisin kuin vaikka tietokantojen luontiin ja muokkaamiseen tarkoitetut kielet.

Python on yksi maailman suosituimmista ohjelmointikielistä ( ja jopa suosituin useammankin indeksin mukaan) vuonna 2022, ja syitä tähän ei ole hankala löytää (Statistics Times 2022).
Pythonille on kehitetty runsaasti kattavia kirjastoja, ohjelmistokehyksiä ja rajapintoja, joiden avulla voidaan luoda sovelluksia aina monimutkaisista itseoppivista tekoälyistä yksinkertaisempiin web-sovelluksiin. Tämä työkalujen ja kirjastojen määrä jatkaa kasvamistaan, ja se taas lisää Pythonin suosiota vuodesta toiseen näin taaten Pythonin paikan suosituimpien ohjelmointikielien herrakerhossa, Pythonin muista herkullisista ominaisuuksista puhumattakaan.

Mutta ennenkuin sukellamme enempää siihen, mikä tekee Pythonista niin hienon ja helppokäyttöisen, tehdään lyhyt mutta kattava visiitti käärmeskielen historiassa.

Alkutaival

Mikään uunituore tapaus Python ei varsinaisesti ole, sillä ensimmäinen versio Python-kielestä syntyi jo 1980-luvun loppupuoliskolla. Hollantilainen ohjelmoija Guido van Rossum kehitti Pythonin Amsterdamissa sijaitsevan Centrum Wiskunde & Informatica:n (CWI, vapaasti suomennettuna Matematiikan ja tietojenkäsittelyn kansallinen instituutti) kehittämän ABC-kielen jatkeeksi, lisäämällä kieleen poikkeusten käsittelyn ja korjaamalla muita ABC-kielen virheitä ja puutteita. Mainittakoon, että Van Rossumilla oli sormensa pelissä myös mainitun kielen luonnissa CWI:llä työskennellessään 80-luvulla. Pysyäksemme aiheessa emme kuitenkaan käsittele Van Rossumin työhistoriaa muiden kielien tai asioiden parissa sen enempää.

Vuonna 1982 Amsterdamin yliopistosta valmistunut Van Rossum tunnetaan huumorintajuisena kaverina, ja nimetessään keksimäänsä ohjelmointikieltä hänen mieleensä pulpahti fanittamansa brittiläisen komediaryhmän Monty Pythonin nimi. Van Rossum koki Python-nimen selkeänä ja ytimekkäänä, ja näin yksi tulevaisuudessa suosituimmista ohjelmointikielistä sai nimensä. Van Rossumin vinkeä huumori näkyy myös Pythonin dokumentaatiossa, jonne on veistelty monenlaista puujalkavitsiä ohjelmointiesimerkkien sekaan. Melkoinen veijari tuo Guido.

Odotettu jatko-osa

Kuten moni muukaan asia, Pythonin ensimmäinen versio ei kuitenkaan ollut täysin parannuksia vailla. Pythonin toinen versio, Python 2.0, julkaistiin lokakuussa 2000.

Tähän uuteen Pythonin versioon lisättiin ominaisuuksia kuten Unicode-tuki ja täydellinen automaattinen roskienkeruumenetelmä. Unicode ja roskienkeruu, siis what? Ei kai digimaailmassa nyt roskia tarvitse kerätä?

Unicode on tietokonejärjestelmiä varten kehitetty kattava merkistöstandardi. Koska maailma on täynnä tuhansia eri kieliä jotka käyttävät kymmeniä eri merkistöjä, oli tarpeen kehittää tietokonemaailmassa toimiva standardi joka kattaisi mahdollisimman laajasti eri merkistöjä. On siis järkeenkäypää, että helppokäyttöiseksi ohjelmointikieleksi luotu Python tukisi tällaista yleismaailmallista standardia. Mutta mitäs sitten sillä merkistöllä tarkoitetaan?

“Merkistö tai koodisivu on tietotekniikassa ja tietoliikenteessä sopimus, joka määrittelee, miten bittiyhdistelminä esiintyvät binääriluvut tulee tulkita johonkin kirjoitusjärjestelmään kuuluviksi merkeiksi.“ (Wikipedia n.d.)

Melkoisen paksua tekstiä, mutta helpottaaksemme itseämme voisimme sanoa että merkistöllä tarkoitetaan käytäntöä, jolla eri bittiyhdistelmät voidaan tulkita jonain oikeana kirjaimena, numerona tai erikoismerkkinä. Noh, auttoiko tuokaan. Pääsinpä kuitenkin puhumaan biteistä ainakin kerran tämän esseen aikana.

 

ASCII – Merkistö.

 

Yksi tunnetuimmista merkistöistä on ASCII-merkistö, jolla esimerkiksi numero 65 esittäisi isoa “A”-kirjainta. ASCII kuitenkin on tehty pääsääntöisesti esittämään vain latinalaisia aakkosia, ja tästä syystä pelkkä ASCII-merkistö ei riitä kattamaan esimerkiksi kiinalaisen tai vaikkapa turkkilaisen kirjoitustavan merkkejä. Tähän tarvitaan Unicode-standardin laajennettua kapasiteettia ilmaisemaan merkit oikeilla tavoilla eri kielissä.

Entäpä sitten se roskienkeruu? Automaattinen roskienkeruu tarkoittaa tietotekniikassa muistinhallintamekanismia, jossa roskienkerääjäksi nimetty toiminto poistaa automaattisesti tiedot, joihin sovellus ei enää viittaa. Eli yksinkertaisesti roskienkerääjä poistaa kaiken turhan tiedon, jotta muistia voidaan vapauttaa tarpeellisille asioille. Kuulostaa aika järkevältä, eikös.

Kuitenkin Python 2.0:aan ehkäpä tärkein lisätty ominaisuus ei ollut kumpikaan näistä, vaan jotain muuta mikä määritti Pythonin tulevaisuuden uudelleen erittäin perinpohjaisella tavalla.

Python 2.0 alkoi käyttää SourceForge-alustan työkaluja versionhallintaan ja näin antoi useamman kehittäjän työskennellä samanaikaisesti Pythonin parissa. Jos ennen 2.0:aa Pythonin parissa työskenteli noin 7 kehittäjää, päivityksen jälkeen kehittäjien määrä melkein nelinkertaistui. Tämä nopeutti Pythonin kehitystä huomattavasti ja uusien ominaisuuksien lisääminen oli entistä helpompaa (Kuchling, Zadka n.d).

Tästä syntynyt nopeus ei kuitenkaan aina ollut pelkkää herkkua, ja välillä ripeä kehitystahti mahdollisti virheiden lipsumisen koodiin ja koodin tarkistuksesta syntynyt sähköpostitulva saattoi täyttää kehittäjän sähköpostin turhankin innokkaasti. Noh, ammatin varjopuolia. (Python-koodari Ka-Ping Yee itse asiassa keksi tähän paremman ratkaisun ja kirjoitti pienen ohjelman joka pienensi tulvan määrää. Well done, Ka-Ping.)

Kolmas versio toden sanoo

Pythonin kolmas versio eli Python 3.0 (myös Python 3000 tai Py3k) julkaistiin joulukuussa 2008.

Paranneltu versio ei ollutkaan enää yhteensopiva Pythonin 2.x – versioiden kanssa, ja vaikka kielen tunnistaa edelleen vanhaksi tutuksi Pythoniksi, tiettyjä virheitä ja “ärsyttävyyksiä” poistettiinkin urakalla ja tämä teki kielestä yhteensopimattoman edellisen version kanssa. Muutamia esimerkkejä tästä ovat print – avainsanan korvaaminen print() – funktiolla ja with-lauseen esittely koodiin (Van Rossum n.d).

Nykytilanne

Pythonin uusin versio kirjoitushetkellä Windows-tietokoneille on 3.11.0. Uusin versio lupailee jopa 10-60% prosenttia nopeampaa suoritusta edelliseen 3.10 versioon verrattuna (Salgado 2022). Mukana tulee liuta muita pienempiä korjauksia, joita lienee turha eritellä sen pidemmin.

Mahdollisuuksien maailma

Nyt kun tämän mainion kielen lyhyt historia on taputeltu, mitäs tällä Pythonilla voi sitten tehdä? Tulisi varmaan lyhyempi lista jos kirjoittaisin mitä sillä ei voi tehdä koodimaailman kontekstissa, mutta esittelen tässä muutaman esimerkin mihin tämä taipuisa kaveri pystyy.

Tekoäly

Pythonin yksi tunnetuimmista käyttötarkoituksista ovat erilaiset tekoälyn ja koneoppimisen sovellukset. Pythonin helppokäyttöisyyden ja lukuisten tekoälyyn soveltuvien kirjastojen ja ohjelmistokehysten (numpy, pandas, Keras, Tensorflow) myötä Pythonista on tullut yksi data-analyytikkojen suosikkikielistä ja suunta näyttää olevan sama jatkossakin.

Koska Python taipuu niin hyvin tekoälyyn ja algoritmeihin, sitä on käytetty mm. Netflixin suositusalgoritmien luontiin.

Backend

Vaikka ei ehkä kaikista yleisin valinta, Pythonia käytetään myös backend-kehityksessä.

Back-end puolestaan tarkoittaa koodia, joka ajetaan sivuston palvelimella – siis esimerkiksi yrityksesi serverihuoneessa tai pilvipalvelussa. Täällä tapahtuvat esimerkiksi sellaiset asiat kuin lomakkeiden käsittelyt, kirjautuminen ja salasanojen tarkistaminen, järjestelmäintegraatiot ja tietokantojen käsittely. – (Laine, 2015)

Backendillä tarkoitetaan siis kaikkea, mikä tapahtuu niin sanotusti “pellin alla”. Frontendillä tarkoitetaan yleensä ottaen kaikkea “näkyvää”, eli kaikkea mikä tapahtuu näkyvästi selaimessasi, kuten verkkosivujen ulkoasu.

Pythonilla on monia backend-kehitykseen luotuja kirjastoja ja frameworkeja eli ohjelmistokehyksiä, joista ehkä tunnetuimmat ovat Django ja Flask.
Djangon kehittivät Adrian Holovaty ja Simon Willison Kansasilaisessa mediayrityksessä tarkoituksenaan helpottaa tietokantapohjaisten Python-sovellusten yhdistämistä uutissisällön julkaisemiseen (Forcier,Bissex & Chun, 2009).

Django on tunnettu korkeatasoinen backend-kehitykseen soveltuva ohjelmistokehys, joka on omien sanojensa mukaan suunnattu “perfektionisteille joilla on deadlinejä” (Djangoproject n.d). Tämä tarkoittaa käytännössä sitä, että Djangolla on mahdollista luoda suuria kokonaisuuksia helposti lyhyessä ajassa. Djangon oppimiskäyrä voi kuitenkin olla aluksi haastava ja saada koodarin miettimään vaihtoehtojaan.

Flask taas on hieman pienemmille projekteille suunnattu ohjelmistokehys. Vaikka Django mainostaakin itseään nopeaan kehitykseen soveltuvana ohjelmistokehyksenä, on suoraviivainen Flask pienempiin projekteihin huomattavasti yksinkertaisempi ja nopeampi vaihtoehto. Flask on myös hieman nopeampi omaksua kuin haastavampi Django.

Tehtävien automatisointi

Jos huomaat tekeväsi jotain tiettyä tehtävää useita kertoja päivässä, voi olla tehokkaampi ratkaisu luoda Pythonilla automatisoitu skripti eli pieni tietokoneohjelma/sovellus, joka hoitaa hommat vähemmillä napinpainalluksilla. Tällaisia tehtäviä voisi olla vaikka matemaattiset laskut, tiedostomuotojen muuttaminen, tiedostojen organisointi ja uudelleennimeäminen tai vaikka sähköpostien lähettäminen.

Ohjelmien testaus

Pythonia käytetään myös tietokoneohjelmien kokonaisvaltaiseen testaamiseen. Yksi tähän tarkoitukseen kehitetyistä ohjelmistokehyksistä on Pytest. Pytestillä voi kirjoittaa erilaisia ohjelmia, jotka testaavat jonkun toisen skriptin toimivuutta. Ohjelmistomaailmassa testauksen tärkeyttä ei voi alleviivata tarpeeksi, ja Python taipuu tähän tarkoitukseen mainiosti.

Miksi Python on niin suosittu?

Yksi vastaus on tähän Pythonin kehitysfilosofiassa; asiat pitäisi voida tehdä helposti ja suoraviivaisesti – yksinkertainen on monimutkaista parempi. Tämän helppouden takia Pythonia on helppo suositella vasta aloittaneelle koodarille.

Toinen syy Pythonin suosioon on sen luettavuus; Pythonin syntaksia eli tapaa, millä Pythonia kirjoitetaan on todella helppo lukea, koska se mukailee tavallisia englannin kielen sanoja. Monissa muissa kielissä abstraktion määrä on suurempi, kun koodissa vilisee outoja sanoja ja lauseita englannin sijaan. Tämän luettavuuden vuoksi myös muiden koodarien on helpompi hypätä projektiin mukaan moniin muihin kieliin verrattuna.

Suosioon vaikuttavat myös jo mainitut Pythonille luodut tuhannet kirjastot ja ohjelmistokehykset. Pythonin kanssa tarvitsee harvoin keksiä pyörää uudelleen, vaan mihin tahansa käyttötarkoitukseen käytätkin Pythonia, löydät todennäköisesti kasan tavoitteeseesi sopivia kirjastoja ja ohjelmistokehyksiä.

Nämä kaikki ominaisuudet ovat nostaneet Pythonin vuosien saatossa taistelemaan suosituimman ohjelmointikielen kärkipaikasta, mutta koska asiaa on todella vaikea objektiivisesti mitata, saamme tuskin koskaan vastausta absoluuttisesti suosituimmasta kielestä. Pythonin suosio ei kuitenkaan näytä laskun merkkejä ja nykyiselläänkin voitaisiin suurella varmuudella sanoa että Python olisi vähintäänkin yksi kolmesta suosituimmasta kielestä.

Loppusanat

Edellä mainitut ominaisuudet ja käyttötarkoitukset ovat olleet suuri syy, miksi olen valinnut Pythonin työkalukseni moniin ohjelmistoprojekteihin. Pythonin helppokäyttöisyys tarkoittaa sitä, että suuria kokonaisuuksia on helpompi ja nopeampi luoda pienemmälläkin tiimillä, tai vaikka yksin. Etenkin Pythonin tekoälykirjastot kiinnostavat minua, ja aion hyödyntää niitä jatkossa vielä laajemmin projektini AlgoCreaten parissa.

 

Lähteet:
Statistics Times. n.d. Viitattu 27.11.2022. https://statisticstimes.com/tech/top-computer-languages.php

Wikipedia. n.d. Merkistö.Viitattu 27.11.2022. https://fi.wikipedia.org/wiki/Merkist%C3%B6

Kuchling, A.M & Zadka, M. What’s New in Python 2.0. Viitattu 27.11.2022. https://docs.python.org/3/whatsnew/2.0.html

Van Rossum, G. n.d. What’s New In Python 3.0. Viitattu 27.11.2022. https://docs.python.org/3/whatsnew/3.0.html

Salgado, P. What’s New In Python 3.11. Viitattu 27.11.2022. https://docs.python.org/3/whatsnew/3.11.html

Laine, S. 2015. Mi­tä mark­ki­noi­jan tu­lee ym­mär­tää web-oh­jel­moin­nis­ta. Viitattu 27.11.2022. https://www.dagmar.fi/verkkopalvelukehitys/mita-markkinoijan-tulee-ymmartaa-web-ohjelmoinnista/

Forcier, J. , Bissex, P. & Chun, W. 2009. Python Web Development with Django. Addison-Wesley. Boston.

Django Project. n.d. Viitattu 27.11.2022. https://www.djangoproject.com/

Kommentoi