Programmeerimise algkursus Java baasil
KKK
Misasi see programmeerimine üldse on?
Programmeerimine on programmi kirjutamine. Nojah, see on vist niigi selge. Aga misasi see programm on? Üldiselt on programm nagu üli täpsed juhised, kuidas mingit eesmärki saavutada. Lihtsustatult on programm ka pannkoogiretsept: "Võta jahu, piim, suhkur, sool, muna, õli. Vahusta muna, suhkur ja sool. Lisa piim ja jahu ning sega korralikult ära. Aseta pann pliidile, lülita pliit sisse, vala pannile õli. Kuni taigent jätkub: vala kulbiga taigent pannile; oota veidi; pööra kook ümber; oota veidi; tõsta pannilabidaga kook taldrikule;". Panid tähele kui täpselt ma praadimise osa kirjeldasin? See toidu tegemisel ei ole tarvilik, kuna inimene oskab lihtsamad lüngad täita oma elukogemusega, aga arvutitel ei ole elukogemust. Arvuteid peab väga spetsiifiliselt juhendama, iga liigutus on oluline.
Arvuti tarkvara kontekstis on tulemuseks mitte pannkook vaid programm, mis toimetab arvutis, internetis või suhtleb kasutajaga. Toome mõned näited. Kõige tuntum programm üldse on tõenäoliselt Windows ise. Muidugi, nii Mac OSX ja iga Linux on samuti programmid. Aga ka Chrome või Firefox on programmid. See wiki, mida praegu loed, on samuti programm. Lühidalt kõik mis ekraanil näed on programmid programmide sees. Kas see on veidi hirmutav? Pole midagi. Meie ei hakka siin operatsioonisüsteemi looma, meie hakkame lihtsaid ja mõnusaid programme kirjutama.
Mulle ei meeldi matemaatika
Mulle ka mitte. Matemaatikas on kõik nii teoreetiline, programmeerimises lood aga (digitaalseid) füüsilisi asju! Tulemus on silmaga nähtav ja nutitelefonis katsutav.
Okei, aga ma ei oska matemaatikat!
On levinud arusaam, et programmeerimine on nagu eriti keeruline matemaatika. Ja nagu ikka väärarusaamadega, on neil tõepõhi all. Programmeerimine kasutab põhikooli matemaatikat. See ei ole ju hirmus ometi? Mis aga on hoopis hirmsam on see, et programmeerimise põhiline vajalik oskus on loogiline mõtlemine ja see ei ole õpitav. Aga ka see ei ole tegelikult nii hirmus midagi, sest baastasemel meil seda kõigil on ja see on ka treenitav (katse-eksituse meetodil).
Kas programmeerimine ei olegi keeruline?
On küll! Aga mitte sellepärast, mis sa arvad. Programmeerimise põhitõed (need, mida siin aines õpime) on suhteliselt lihtsad, aga need on hoopis teistmoodi, kui oled harjunud mõtlema. Selle jaoks on isegi väljend: "Lähim arengu tsoon" (ingl. zone of proximal development) ja seda kirjeldab järgmine joonis:
Nimelt programmeerimine on sellest tsoonist päris kaugel. See on sisuliselt nagu prantsuse keele õppimine, kui pole seda veel kuulnudki. Nüüd, kui me seda probleemi endale teadvustame, on minul, kui õppejõul, ja sinul, kui tudengil, lihtsam programmeerimise kontseptsioonidega tegeleda. Mina pean olema eriti hoolas, et oskaksin siduda uued teemad kuidagi tava eluga (näiteks pannkoogiretsepti analoogia) ja sina, tudeng, pead olema eriti hoolas, et sa harjutad, otsid lisa informatsiooni kust vähegi saad ja loed-loed-loed, kirjutad-kirjutad-kirjutad koodi!
Käin küll loengutes ja teen praktikumides kaasa, aga ikka ei haaku mitte midagi
Programmeerimist ei ole võimalik õpetada nii, et asi lihtsalt saab selgeks. Erinevalt matemaatikast (ja suurem osa kooli ainetest) ei ole võimalik programmeerimist pähe õppida. Programmeerimist tuleb mõista. Kui piisavalt eesmärgi nimel tegutseda jõuab teema ka lõpuks kohale. Tarkvara arendus ongi selline ala, kus tuleb esiteks palju pimeduses kompida, kuni lõpuks "klikib". Aga rõhutan, et "klikkimine" ei toimu puhtalt õppejõudu kuulates. "Klikkimine" toimub ainult juhul, kui mõtled ise endale ülesandeid juurde, uurid ja katsetad omast vabast ajast. Muide, kui sul lõpuks toimub see ära "klikkimine" anna mulle, õppejõule, teada, mis täpsemalt aitas, et saaks veelgi paremini teisi aidata. Inimesi on meil palju ja igaühel on kuskil temale paras õppimise meetod.