Sel aastal astus üritusel Geekout 2014 üles endine Microsofti tarkvaraarhitekt, energiast pakatav, paljasjalgne motivatsioonikõneleja Erik Meijer, kelle sütitava ettekande teemaks oli „Making money using math“.
ITuudistele antud intervjuus räägib Meijer matemaatikast ja selle kasutamisest programmeerimises, majanduskasvust ja innovatsioonist, funktsionaalsest programmeerimisest ja teistest programmeerimise trendidest.
Järgneb intervjuu Erik Meijeriga
Erik, kuidas te võtaksite kokku oma äsja lõppenud ettekande Geekout 2014-l?
Minu ettekanne on väga mitmetahuline, aga teema „Making money using math“ rääkis sellest, et paljud arendajad ei näe matemaatikat kui arvutiteaduse ühte alustala. Kui nad seda teeksid, avastaksid nad väga lihtsaid, aga väga võimsaid asju. Me oleme kasutanud matemaatikat tuhandeid aastaid ja me teame, et ühtegi silda ei saa ehitada ilma matemaatikata, samuti ei saa ühtegi maja ehitada ilma matemaatikata. Aga arvutiteaduses millegipärast me ei kasuta matemaatikat piisavalt - me ei vaata koodi kirjutamise peale samamoodi nagu muude asjade ehitamise peale. Minu ettekande eesmärk on panna programmeerijaid asjadele teisiti vaatama, et nad saaksid olla senisest veelgi professionaalsemad oma tegemistes.
Millised on peamised trendid või muutused programmeerimise lähitulevikus?
Tegelikult on neid üsna palju. Mida me juba täna näeme, on kindlasti funktsionaalse programmeerimise mõjutused ja funktsionaalne programmeerimine on üks neid asju, mis tuleneb otseselt matemaatikast.
Funktsionaalne programmeerimine jõuab praegu kõikjale. Näiteks Apple andis just välja uue programmeerimiskeele nimega Swift, millel on näha tugevaid funktsionaalse programmeerimise mõjutusi. Aga funtsionaalne programmeerimise mõjusid on tunda ka teistes programmeerimiskeeltes nagu näiteks PHP, C++, Java 8.
Teine trend on valikuline staatiline tüüpimine. On olemas kahte sorti programmeerimiskeeli - staatilised ja dünaamilised. Siiani oli nende kahe vahel väga selge ja äratuntav piir. Täna aga on näha, et see piir on muutunud hajusamaks ning kui dünaamiline tüüpimine on vajalik, siis staatiline tüüpimine on võimalik. Asjad ei ole enam nii mustvalged, kui nad varem olid. Tegemist on väga suure muutusega ja ma näen, et üha enam programmeerimiskeeli liigub sinna poole, et staatiline tüüpimine ei ole enam vajalik, aga ta on olemas. See muudab programmeerimise paindlikumaks.
Kas te usute, et Java on ka 10, 30 või 50 aasta pärast kõige populaarsem rakendusplatvorm? Kui ei, siis mis võiks kõige populaarsem platvorm olla tulevikus?
Oo, see on huvitav küsimus. Kui sa ütled Java, siis see võib tähendada väga palju asju. On olemas Java programmeerimiskeel, Java ökosüsteem ja JVM koos kõikide teekidega. Ma arvan, et Java platvorm on asjakohane veel palju, palju aastaid ning Java programmeerimiskeel jääb alati teistest veidi konservatiivsemaks, aga platvorm ise ei kao pika, pika aja jooksul kuskile.
Kui vaadata suuri ettevõtteid Silicon Vallys - nagu näiteks Twitter või Netflix - nad kõik on loodud JVM baasil. Vaata kasvõi neid väga vanu maju Tallinna vanalinnas – nad kõik eksisteerivad siin kõrvuti uutega. Tarkvaraga peaks olema samamoodi – me ei lõhu kõiki vanu maju ära, et ehitada uusi. Ma arvan, et on aeg hakata tarkvarast ka nii mõtlema, et see võib kesta näiteks 200 aastat või rohkem. Nii et võib-olla on Java siin ka 600 aasta pärast.
Minu meelest on suurim programmeerijate viga see, et visatakse minema kõik vana ja alustatakse uue ehitamist nullist. Miks see viga on? Esiteks see tähendab ju väga palju tööd ning teiseks ei ole tulemus tavaliselt kuidagi parem, kui see, mis just ära visatud sai. Seega mõistlikum oleks võtta vana kood või osa sellest ja leida viis, kuidas seda tuleviku huvides kõige paremini rakendada.
Veel üks näide. Kui vaatame mõnda veebilehte, siis me ei eelda, et see ühel hetkel töötamise lõpetab, mis tähendab, et vanad brauserid peavad jätkama töötamist. Tänapäeval on väga palju väga olulist infot digitaalsel kujul. See kõik on meie pärand. Pole lihtsalt võimalik, et laseme juhtuda olukorral, et mingil hetkel see kõik ei tööta enam.
Millised võivad olla ärilised põhjused, kui mõni ettevõte või organisatsioon otsustab loobuda oma Java platvormist ning kolida kõik ümber Node’i nagu tegi hiljuti PayPal?
Sellele küsimusele on väga keeruline vastata, kuna ma ei näe nende ettevõtete otsuste tagamaid ja olukorda, milles need langetatud on. Mõnikord siiski on ettevõtetel head põhjused kolimiseks.
Ma ei taha nüüd kõlada küüniliselt, aga mõnikord on lihtsalt nii, et arendajatel on igav ja nad tahavad oma igavuse peletamiseks teha uusi asju. Mõnikord nad mõtlevadki, et oh see asi on tehtud kunagi ammu mingit moodi, ma teen selle ringi, kirjutan siia uue koodi, puhtalt seetõttu, et ma tahan teha midagi uut. Ja ühtegi teist põhjust selleks polegi.
Milliseid edukaid näiteid võiksite tuua organisatsioonidest, kes kasutavad Haskelli või mõnda muud funktsionaalset programmeerimiskeelt oma peamise platvormina?
Haskell on väga omapärane programmeerimiskeel ja ta on ka ainus, mis on täiesti puhas funktsionaalne programmeerimiskeel, baseerudes täielikult matemaatilistel funktsioonidel. Tegemist on hoopis teistsuguse keelega, kui seda on ülejäänud programmeerimiskeeled. Just finantssektoris kasutatakse palju Haskelli. Põhjus seisneb tavaliselt selles, et mudelid, mida finantssektoris kasutatakse, sobivad väga hästi just Haskell’iga.
Teine põhjus on see, et kuna Haskell on keeruline keel, on see filtriks, näidates nö arendajate taset. Väga keeruline on leida häid arendajaid ning valides Haskell’i vajad sa automaatselt ka väga häid arendajaid.
Mis on see, mida te oma esinemistega publikule anda soovite?
Programmeerijad peavad enda eest rohkem seisma – firmade juhid peavad teadma, et koodi kirjutamine on väga oluline. Nagu ma ütlesin: „You don’t talk about code you write code.“
Paljud arendajad on introverdid, tihtipeale üsna ujedad ning selliste konverentside juures meeldibki mulle see, et ma saan anda inimestele enesekindlust – ma saan neile üle korrata, et koodi kirjutamine on oluline.
Näiteks Silicon Valleys peetakse arendajaid ettevõtete mootoriks, sest seal teatakse, et see, mida arendaja loob, ongi see, mis toob meile raha sisse. Näiteks Tesla – tegemist on ju sõitva arvutiga. Tarkvara on see, mis teeb sellest autost isesõitva auto. Samuti Uber – taksotellimise äpp - ka selle nö toote alustala on tarkvara. Tarkvara on see, millega kaasneb majanduse kasvamine ja innovatsioon.
Euroopas hakkab mulle tihti silma, et siin peetakse programmeerimist kuluks ning seetõttu loodetakse alati leida kõige vähem raha küsiv programmeerija. See on üks asi, mis peab kohe kindlasti muutuma! Arendajaid tuleks palju enam väärtustada. Meie eesmärk ei peaks olema vaadata vaid arendaja palganumbreid ja kisada, et oo miks ta nii palju raha saab või et me peame leidma odavama viisi. Minu meelest on selline suhtumine lihtsalt rumal!
Praegu keerleb liiga palju asju ettevõtetes äriinimeste ümber nagu juhid, müügiinimesed, turundusinimesed, kuigi peaks keerlema hoopis arendajate ümber. Vaadake näiteks üliedukaid näiteid, kus ettevõtet juhivad arendajad - Google’it juhivad arendajad, Facebookiga on samamoodi. Minu meelest on seal väga suur vahe, kas ettevõtet juhivad arendajad või müügimehed/äriinimesed, kes näevad IT-s vaid kulu.
Eestis on käimas arutelud selle üle, kas lapsed peaksid juba põhikoolis saama õpetust programmeerimise algetest, et nad teaksid millised on võimalused, mida saab programmeerimise abil ära teha. Mida teie arvate, kas lastele oleks parim, kui nad saaksid programmeerimisalast õpet juba noores eas?
Ühendkuningriikides on seda väga edukalt proovitud, õpetatud lastele programmeerimist, arvutiteadust (computer science). Minnes sealt veel natuke sügavamale jõuame sinnani, et tänu sellele arendame me oma laste arvutuslikku mõtlemisoskust (computational thinking).
Programmeerides on tihti suurim idee teatud asjade või tegevuste automatiseerimine. Selleks aga, et teada, kuidas asju automatiseerida, peab mõtlema, kuidas asju organiseerida – ja kokku tekibki arvutuslik mõtlemine. Tegelikult pole sellel midagi pistmist arvuti kasutamise oskusega vaid oskusega vaadata ümbritsevat pilguga, mis aitab leida kohad, mida automatiseerida.
Automatiseerimine toob alati kaasa teatud töökohtade kaotamise ning mõnikord peetakse seda isegi negatiivseks. Tegelikult on automatiseerimise eesmärk kaotada ära tööd, mis on nii igavad, et mitte keegi ei taha neid teha. Just sellist arvutuslikku mõtlemist on meil vaja lastele õpetada.
Erik, kas tulevikus on programmeerimine umbes sama oluline oskus nagu täna on matemaatika?
Jah, ma usun, et nii on. Keeruline on siinjuures see, et tuleb olla hästi teadlik sellest, mida täpselt programmeerimisest lastele õpetada. Matemaatikaga seevastu on meil lihtsam, kuna seda on juba aastasadu õpetatud. Lapsed vajavad arvutuslikku mõtlemisoskust ka siis, kui nad parajasti arvutit ei kasuta. Näiteks muusikatunnis me ju ei õpeta neile, et muusika saamiseks keera raadio käima. Me anname neile tööriistad ehk noodid, millest nad saavad ise muusikat teha.
Võtame kasvõi isesõitvad autod. Ma poleks osanud arvata, et nad nii kiiresti kasutust leiavad, aga see on samuti näide automatiseerimisest – juhtimine on igav töö, lõpetame siis selle ära ja laseme autol ise sõita. Tegelikult on see ka omamoodi ohtlik, kui inimene autot juhib, sest inimeste sõiduoskus ei ole tavaliselt eriti hea. Kui inimestele meeldib autot juhtida, siis võiksid nad seda teha kuskil võidusõidu rajal lõbu pärast, aga mitte tee peal.
Autojuhtimise peale kulub väga palju meie väärtuslikku aega. Me võiksime selle kulutada näiteks magamise või kellegagi rääkimise peale või lugeda hoopis raamatut. Seega autosõidu automatiseerimine on minu meelest väga tore mõte.
Kas te usaldaks end ise juhtivasse autosse kerge südamega?
Ma usaldaks sellist autot rohkem kui inimest. Masinad on inimestest usaldusväärsemad ning on väga palju asju, mida me juba oleme masinate hooleks jätnud. Miks siis mitte jätta ka autojuhtimist? Näiteks enamik lennukeid juhitakse ju ka autopiloodiga.
Tegelikult on kogu selle automatiseerimise mõte selles, et inimesed saaksid elada veelgi paremat elu.
TAUST
1963. aastal sündinud Erik Meijer on Hollandi arvutiteadlane ja ettevõtja. Aastatel 2000 kuni 2013 töötas ta tarkvaraarhitektina Microsoftis, kus tema juhtida oli Cloud Programmability Team. Peale Microsoftist lahkumist asutas ta oma ettevõtte Applied Duality Inc. Samuti on ta töötanud kaasprofessorina Utrechti Ülikoolis. Oma doktorikraadi kaitses Meijer 1992. aastal Nijmegeni Ülikoolis. Oma uurimistöös on Erik keskendunud teemadele nagu funktsionaalne programmeerimine (peamiselt Haskell), parsimine, programmeerimiskeelte disain, XML ja FFI.
Seotud lood
Arvutipargi renditeenus on mugav, säästlik ja (tuleviku)kindel. Green IT tegevjuht Asko Pukk usub, et ettevõtete äriline fookus peab alati olema enda põhitegevusel, sektoril, mida teatakse peensusteni, et olla konkurentidest paremad – just selleks vajaliku aja ja raha renditeenus vabastab.