Navdušujemo za inženirstvo, tehniko, naravoslovje in inovativnost.


/ Radi rešujte sudoku? Preizkusite se v programiranju!

19 januar 2024

Dandanes je težko najti osebo, ki še ne bi slišala za programiranje. Četudi si z njim morda nismo domači, si vsakdo izmed nas vsaj približno predstavlja, za kaj gre – žal pa so te predstave pogosto ovite v meglo strahu pred neuspehom. V želji, da bi slednjo razblinila, je Nina Murks, magistrica inženirka računalništva in informacijskih tehnologij, sedla za računalnik in začela tipkati …

V popularni kulturi je programiranje običajno vedno predstavljeno na enak način: na velikih računalniških zaslonih (nikoli ni le enega) se raztezajo kilometri in kilometri števil in simbolov, ki jim človeško oko le s težavo sledi. V temni sobi, osvetljeni le s svetlobo, ki jo oddajajo zasloni pred njo, sključeno sedi oseba, za katero se v nadaljevanju izkaže, da je genij – oseba, katerih besed in tipkanja po tipkovnici ne razume praktično nihče drug. Kar počne, pa so nekakšne 'čirule-čarule', ki svet ali pogubijo ali rešijo.

Četudi je takšen lik programerja oz. programerke pripovedno zanimiv, pa se je potrebno zavedati, da gre za fikcijo. Bolj zahtevnih projektov kot se lotevamo, bolj zapleteno bo samo programiranje, pritrjuje Nina Murks, a obenem poudarja, da osnove, pri katerih je – tako kot vedno – potrebno začeti, niso »nikakršen 'bav bav'«.

Izpod rok magistrice inženirke računalništva in informacijskih tehnologij, študentke doktorskega programa računalništva in informatike ter raziskovalke, zaposlene na EU projektu HybridNeuro (GA 101079392) na Fakulteti za elektrotehniko, računalništvo in informatiko Univerze v Mariboru nastaja učbenik Osnove programiranja v programskem jeziku Python. Njegov namen? Predstavitev osnov in s tem razblinjanje strahu pred programiranjem in, kot izpostavlja avtorica, predvsem zabavanje ob vstopu v ta čudoviti svet. Ob tej priložnosti smo se z njo pogovarjali o tem, kaj programiranje pravzaprav je, kaj ima skupnega z igro sudoku in za kaj je zaslužna programerka Ada Lovelace.

Kaj je pravzaprav programiranje?

Prav to vprašanje sem si sama zastavila že pred nekaj leti. Na delavnicah in poletnih šolah, na katerih sodelujem, prav to vprašanje velikokrat postavim tudi udeležencem oz. udeleženkam. Nanj pogosto prejmem odgovor: »Programiranje je pisanje programov.« Resda je odgovor pravilen, ni pa ne predstavljiv, ne razumljiv. Programiranje sama zato veliko raje predstavim kot proces reševanja logičnih ugank. Ne le, da je sam proces tako bolj predstavljiv; obenem tudi razblini abstraktne predstave, ki v strahu pred nezmožnostjo in nedosegljivostjo marsikoga odvrnejo od tega, da bi se potopil v ta svet.

Če prav razumem, gre torej za proces, ki je pravzaprav poznan vsem nam?

Tako je, na neki osnovni ravni, seveda. Če za primer vzamem igro sudoku. Z njo je mogoče potegniti veliko vzporednic. Predno se lotimo reševanja moramo, tako kot pri programiranju, poznati pravila igre; pri programiranju ta proces imenujemo definiranje problema. Z vsakim številom, ki ga nato vnesemo v prazen kvadrat, se začnemo vztrajno približevati rešitvi, s tem pa izziv postaja lažji. Slednje lahko enačimo s pisanjem kode. Vmes pa, tako kot pri programiranju, razvijamo tudi svojevrstne strategije, ki nam omogočajo hitrejšo pot do rešitve. Izpostaviti velja tudi osnovno orodje programerjev oz. programerk: algoritem. Gre za zaporedje korakov, ki nas vodijo h končni rešitvi. Prav algoritme nenehno uporabljamo v vsakdanjem življenju: pri zavezovanju čevljev, peki peciva, kvačkanju … Kadarkoli razčlenimo večji problem na manjše podprobleme oz. korake, v bistvu uporabljamo algoritmično mišljenje.

Neuspešno reševanje ugank pogosto spremljata tudi frustracija in razočaranje, še posebej, ko naletimo na napake. Se tudi tu pojavlja vzporednica s programiranjem?

Vsekakor, tako kot povsod v življenju. Napake so neizogiben del vsakdana prav vseh nas, tudi programerjev in programerk. Kar je pomembno je, da nas ne odvrnejo od našega dela. Ko se srečamo z napako oz. ko jo morda skušamo odkriti, moramo na stran potisniti glas, ki nas nagovarja, da odnehamo. Pomembno je, da se zavedamo, da napaka ne pomeni konec poti, temveč le njeno spremembo. Na tem mestu moramo prisluhniti in slediti glasu, ki reče: »Preračunavam!« in poiskati pravo pot. Veselje in ponos, ki ga čutimo, ko uspešno razrešimo uganko ali zapišemo kodo za delujoč program, je na koncu poti, ki je prepredena z izzivi in razrešenimi napakami, še toliko večje.

Ko programiranje opišete na tak način, se zdi res preprosto. A vendarle ga še vedno pogosto spremljajo predstave o zahtevnosti, težavnosti …

Bolj zahtevnih projektov kot se lotevamo, bolj zahtevno postaja tudi samo programiranje, o tem ni dvoma. Toda začeti je potrebno pri osnovah, ki niso nikakršen 'bav bav' – ko jih osvojimo, bomo tudi opremljeni za to, da se samozavestno spopademo z zahtevnejšimi izzivi.

S svojim učbenikom stremim prav k predstavitvi teh osnov na način, ki je karseda dostopen najširšemu krogu ljudi: od najmlajših do najstarejših. V njem na laičen, enostaven način razlagam osnovne programske koncepte, kot so spremenljivke, pogojni stavki, zanke in funkcije. Moj cilj ni, da se poglobim v posamezne koncepte, temveč da se bralec ob učenju predvsem zabava in opremi z zadostnim znanjem, da se bo lahko lotil pisanja zabavnih in poučnih programov.

Ko ste že omenili dostopnost: kako dostopno je programiranje (mladim) dekletom?

Enako kot fantom – če jih le ne spremljajo stereotipi o tem, da naj bi bila to domena moških, in napačno enačenje sveta video iger s svetom programiranja. Kot sem že omenila, gre za svet reševanja logičnih težav. Pri tem menim, da smo ženske, ki smo pogosto bolj natančne in sistematične, celo v prednosti. Nenazadnje je prvi program nastal s strani ženske. Ada Lovelace je zasnovala osnutke načrta za analitični program in si s tem pridobila naziv prve programerke.

Kljub omenjenemu, zakaj so po vašem mnenju ženske v svetu računalništva manj zastopane?

Če pomislimo na to, s čim se igrajo otroci v mladih letih, bomo hitro prišli do odgovora, da se dekleta velikokrat posvetijo risanju, žogam, barbikam, ličilom, lakom za nohte ... Po drugi strani pa se večina fantov zatopi v svet računalniških igric. Tako jim že v zgodnjih otroških letih računalnik postane nekaj domačega in znanega – nekaj, kar jim nudi zabavo. Dekleta se k računalnikom pogosto ne zatekajo toliko in verjetno tudi hitro opazijo, da so fantje seznanjeni z ogromno funkcionalnostmi, ki jih premorejo računalniki: znajo slepo tipkati, si naložiti igrice … Ko se tako primerjajo z njimi, hitro dobijo občutek, da s svojim znanjem zaostajajo. Tako pa se lahko razvijeta tudi strah in odpor do računalniških poklicev. Slednje želimo spremeniti tudi v sklopu EU projekta HybridNeuro, kjer iščemo rešitve za povečanje deleža žensk v poklicih na področju računalništva. V ta namen imamo tudi na vsaki delavnici oziroma dogodku, ki ga izvedemo, posebne sekcije, ki so namenjene predavanju in diskusiji o zapolnitvi razkoraka med spoloma. 

Kaj bi si na tem mestu želeli sporočiti (naj-)mlajšim?

Ponovno želim poudariti, da programiranje ni svet računalniških igric, temveč je svet logičnih oz. matematičnih ugank. Vsak, ki ga veseli takšen način razmišljanja, je pravzaprav rojen programer, ne glede na njegovo znanje o delu z računalniki. Vse ostalo se da naučiti, razen veselja do reševanja tovrstnih problemov.


Spraševala: Nana Čemas, Inženirke in inženirji bomo
Odgovarjala: Nina Murks, magistrica inženirka računalništva in informacijskih tehnologij, študentka doktorskega programa računalništva in informatike ter raziskovalka, zaposlena na EU projektu HybridNeuro (GA 101079392) na FERI Univerze v Mariboru