Python vai R-kieli analytiikassa – kumman valitsen?
Aloitan paljastamalla lopputulemani: kummankaan ohjelmointikielen valitseminen ei ole väärin – kyse on korkeintaan tarkoitukseen sopivimmasta ratkaisusta. Tarjotakseni ymmärrystä siitä, kumpi kieli, R vai Python, voisi olla eri käyttötarkoituksiin sopivampi, vertailen niitä eri osa-alueilla. Tarkastelen kielten eroja ainoastaan analytiikan perspektiivistä – muutenhan niitä ei ole järkevä edes vertailla.
Aluksi on hyvä ymmärtää, millaisista kielistä on kyse. Sekä Python että R ovat avoimen lähdekoodin kieliä, eli ne ovat ilmaiseksi kaikkien käytettävissä. Tämän haittapuoli on se, että niiden kehitys on käytännössä pääosin talkootyötä, vaikkakin sitä tekee valtava kehittäjäyhteisö. Näiden kielten kohdalla ei siis voi ratkaista ohjelmistoon liittyvää ongelmaa kiukkuisella sähköpostilla tuotetukeen. Toisaalta, Internet on täynnä näiden kielten osaajia, oppaita ja keskustelualustoja, joista voi etsiä tai kysyä apua. Tässä suhteessa pisteet menevät siis tasan.
R on tilastotietelijöiden kehittämä kieli, mikä on avain sen ymmärtämiseen. R-kieli on kehitetty lähtökohtaisesti kahteen tarkoitukseen, eli analytiikkaan sen kaikissa muodoissa sekä graafiseen esittämiseen. Python puolestaan on olio-ohjelmointikieli, eli sillä voi toteuttaa kaikkea, mitä ohjelmointikielellä voi kirjoittaa. Jos etsii kieltä, jolla voi tehdä muutakin kuin analytiikkaa, on Python ainoa vaihtoehto. Koska tässä vertailussa olemme kiinnostuneista vain analytiikasta, en anna tästä erosta pistettä Pythonille.
Molemmat kielet saavat toiminnallisuutensa kirjastoina
Kirjastot ovat ladattavia lisäosia, jotka sisältävät työkaluja graafiseen esittämiseen, laskemiseen ja analytiikkaan. Ne tuovat tyypillisesti kieleen uusia funktioita, jotka mahdollistavat uusia toimenpiteitä tai yksinkertaistavat monimutkaisia koodipätkiä yhdeksi funktioksi. Monet Pythonin analytiikkakirjastoista ovat toiminnallisuudeltaan suoria kopioita R-kielen vastaavista – kenties päivitetyllä grafiikalla. R on kuitenkin vanhempi ja siten laajempi kieli, vaikka Python on jatkuvasti kirinyt sitä kiinni uusilla kirjastoilla. Analytiikkakirjastojen kattavuudessa R on toistaiseksi hieman edellä, joten tässä kohtaa R saa yhden pisteen.
Jos haluaa kirjoittaa koodia tekstinkäsittelyohjelmassa, tukevat käytetyimmät ohjelmat, kuten Notepad++ ja Sublime, molempia kieliä. Pythonille tarjotaan enemmän ohjelmointiympäristöjä (IDE) kuin R-kielelle. Käytännössä suurin osa R-ohjelmiston käyttäjistä käyttää RStudiota, vaikka Microsoftin käyttäjät voivat ladata R Tools for Visual Studio -liitännäisen. Pythonia voi käyttää esimerkiksi Notebook-ohjelmissa ja Spyderissa. Tässä kohtaa piste menee siis Pythonille.
Molemmille kielille on saatavilla rajapintoja tietokantoihin
Kummallekaan kielelle tietokannan koko ei ole rajoite. Sama koskee myös integraatioita muihin ohjelmiin. Esimerkiksi Microsoft on rakentanut Power BI:hin tuen molemmille kielille. Miksi? Koska molemmat ovat liian merkittäviä kieliä jopa Microsoftille sivuutettaviksi. Nämä ominaisuudet eivät tee eroa kielten välille, pisteet menevät siis tasan.
Kielet eroavat toisistaan kirjoitettavan syntaksin osalta. R on funktionaalinen kieli. Sen maine vaikeana kielenä johtuu siitä, että funktionaaliset ohjelmointikielet ovat erilaisia kuin olio-ohjelmointikielet. Toisaalta, jos R-kielen hyödyntäjällä on taustaa funktionaalisista kielistä, ei R lunasta mainettaan vaikeana kielenä. Pisteet – ne riippuvat kirjoittajan ohjelmointitaustasta tai kokemuksesta.
Koneoppiminen tuntuu olevan taikasana, jolla saa kuulijan korvat hörölle. Koneoppiminen soveltuu, kuten monet muutkin välineet ja menetelmät, vain tiettyihin tehtäviin. Jos koneoppiminen kuitenkin on ensisijainen hyödyntämisen kohde, on Python luontainen valinta. Kannattaa pitää kuitenkin mielessä se, että myös R kehittyy koneoppimisen saralla. Itse asiassa R oli vielä muutama vuosi sitten paras tällä alalla. Tällä hetkellä pisteet kerää kuitenkin Python.
Python vai R – tulevaisuuden näkymät
Eroavatko kielten tulevaisuuden näkymät? Python on kasvattanut osuuttaan analytiikassa koko ajan, mutta tästä ei voi päätellä sitä, että R olisi katoamassa. R kehittyy kielenä koko ajan: uudet paketit mahdollistavat jatkuvasti uusia toimintoja ja tekevät työskentelystä helpompaa ja nopeampaa. Osa Pythonin nopeasta kasvusta johtunee siitä, että se voi kopioida toiminnallisuuksia R-kielen kirjastoista. Pisteet menevät siis tässäkin suhteessa tasan.
Lasketaan pisteet nopeasti yhteen – molemmat ohjelmointikielet ovat vertailussa lähes yhtä vahvoja. Python vie pisteet koneoppimisesta ja ohjelmointiympäristöistä (IDE). R puolestaan saa pisteen raportoinnin helppoudesta sekä kirjastojen laajuudesta eli siitä, että yhdellä funktiolla voi suorittaa toimenpiteitä, joiden kirjoittaminen Pythonilla vaatisi useamman rivin.
Asiaan perehtyneitä lukijoita kiinnostanee tieto mustasta hevosesta Juliasta. Julia on MIT:n kehittämä avoimen lisenssin ohjelmointikieli. Sen syntaksi muistuttaa R-kieltä. Vaikka Julia on ollut käytössä jo monta vuotta, sen ensimmäinen virallinen versio ilmestyi vasta 2018. Liiketoiminnallisesti en pidä Juliaa kuitenkaan vielä kovin mielenkiintoisena, koska muut palveluntarjoajat eivät tarjoa mahdollisuuksia sen integroinnille. Lisäksi Julia-ohjelmisto joutuu kirimään R- ja Python-ohjelmistoja kirjastojen laajuudessa vielä vuosia.
Tietoja R- Python- ja Julia-ohjelmistoista:
CRAN on R-kirjastojen lähde
R-kirjastoja, joihin kannattaa tutustua: Broom, Shiny, GGplot2, Knitr, Tydiverse, Caret, Zoo, Dplyr
Python-kirjastoja joihin kannattaa tutustua: Numpy, Scipy, Scikit-learn, Seaborn, TensorFlow, Caret,