Reede, 2. november 2018

Eno Tõnisson "Programmeerimine. Reeglid. Valikud. Vabadus"

Eno Tõnisson on Tartu Ülikooli arvutiteaduse instituudi lektor. Kaitses doktoritöö 2017. aasta lõpus. Ta on õpetanud matemaatikat ja informaatikat ning nende õpetamist. Viimastel aastatel on koos kolleegidega korraldanud ka eestikeelseid programmeerimise e-kursusi ("Programmeerimisest maalähedaselt", "Programmeerimise alused", "Programmeerimise alused II").

Programmeerimine ehk programmeerimiskeeles kirjutamine on levinud lähenemine, mille abil arvuteid tööle käsutada. Kui anda arvutile (mis võib olla integreerunud väga erinevatesse seadmetesse) käsk “keeda mulle kannutäis teed”, ei pruugi teed siiski saada, sest see käsk võib olla arvutile arusaamatu. Arvutid kui väikestest juppidest ehitatud masinad suudavad esialgselt sooritada ainult väga lihtsaid tegevusi nagu näiteks kahe arvu liitmine ja tulemuse säilitamine. Keerukam käsk on võimalik ainult mitme lihtsama käsu sooritamise abil. Kui me anname sellele käsule nime ja hoiame käsu alles, saame me seda kasutada teiste käskude osana. Lõpuks saavutame olukorra, kus üks käsk teebki seda, mida me lõpuks tahtsime. Lihtsaimaid käske kombineerides saame luua käsu “keeda mulle kannutäis teed”, mis näiteks röstib meile röstsaia. Arvuti ainult täidab käske, nende sisulise korrektsuse eest vastutab programmeerija. Programmeerimiskeeleks nimetame keelesüsteemi, mille abil on võimalik arvutile käske anda. Programmeerimiskeeli on loodud terve hulk, sarnaselt inimkeelega on mõned teistest palju levinumad.Igas programmeerimiskeeles on oma reeglistik, mille vastu eksides programm kas ei käivitu üldse või toimib valesti. Reeglid on ranged - ka üks puuduv tühik või liigne kirjavahemärk võib programmi ära rikkuda. Süntaktiliselt katkised programmid on tihti kergesti parandatavad, samuti juhivad programmeerimiskeskkonnad juba programmi koostamise ajal võimalikele ebakohtadele tähelepanu. Lisaks rangetele keelereeglitele on programmide kirjutamisel välja kujunenud erinevad stiilid, kombed ja soovitused. Kuigi programm võib toimida ka neid eirates on neid järgides teistel programmeerijatel ja autoril endal programmist lihtsam aru saada. Näiteks on programmeerijal muutujale või funktsioonile nime valimisel põhimõtteliselt suur vabadus, kuniks süntaks on korrektne. Praktikas on mõtet kasutada sellist nime, mis kirjeldaks nimetatava olemust ja sisu, olles samal ajal loetavalt lühike. Kui nüüd järgida reegleid ja soovitatavalt ka stiili, kombeid ning soovitusi, on meie käes väga võimas vahend. Vormingu mõttes lihtsa teksti (tähe-, numbri-, tehte- ja kirjavahemärgid, tühikud ja reavahetused) abil saab panna asju juhtuma: nii Google’i otsimootor kui Facebooki suhtlusvõrgustik on ehitatud üles väikestest programmiosadest. Tõsi küll, et nende taga on tuhandeid tunde arendustööd (Google’il on üle kahe miljardi rea koodi). Aga juba suhteliselt väike programmeerimisoskus annab vabaduse - väljendusvabaduse. Ettekandes käsitleme mõnda konkreetset näidet, mida inimesed on kursuste lõpus teinud. Näiteks programm, millega saab teatud määral analüüsida kirjandusteost, nt "Tõde ja õigust". Arutame, kellele on vaja (kasvõi elementaarset) programmeerimisoskust ja kuidas seda saada? Miks sajad ja isegi tuhanded inimesed osalevad meie eestikeelsetel programmeerimise MOOCidel? Ettekande alguses ei ole eelnev programmeerimisoskus nõutud. Küll ettekande jooksul vajalikud oskused tulevad.