Programmeerimiskeskkond Thonny
Thonny on Pythoni programmeerimiskeskkond, mis on loodud õppimiseks ja õpetamiseks ning mõeldud eelkõige algajatele. Tegu on vabavaralise avatud lähtekoodiga tarkvaraga, mille peamine autor on Tartu Ülikooli õppejõud Aivar Annamaa. Thonnyt on võimalik paigaldada nii Windowsi, Mac OS-i kui ka Linuxi operatsioonisüsteemiga arvutitele. Programmeerimiskeel Python on Thonnyga juba kaasas ja seda eraldi installeerima ei pea. Thonnyt saab alla laadida leheküljelt https://thonny.org/, kõik versioonid on kättesaadavad aadressil https://github.com/thonny/thonny/releases.
Thonnyl on olemas kõik tähtsamad funktsioonid, mida pakub Pythoni peamine programmeerimiskeskkond IDLE (Integrated Development Environment), kuid on ka omadusi, mida IDLE-il ei ole. Näiteks asub käsurida koodiredaktoriga samas vaates, mis muudab kasutaja tegevuse sujuvamaks ning innustab käsurida väikesteks katsetusteks rohkem kasutama. Lisaks on käsureal sisend ja väljund ka visuaalselt selgelt eristuvad.
Üheks olulisemaks funktsionaalsuseks võib pidada võimalust programmi tööd samm-sammult jälgida ehk siluda (ingl debug). Nii on võimalik näha, kuidas programm töötab ja mis järjekorras käsklusi täidetakse, mis on oluliseks abiks ka oma programmi töö kontrollimisel ja vigade leidmisel. Thonny näitab kõiki samme ühes vaates, mis teeb programmi töö jälgimise lihtsamaks.
Silumiseks tuleb valida menüüst Run > Debug current script või Ctrl + F5 ja osa koodist muutub kollaseks, mis näitab, kuhu programmi täitmine on jõudnud. Edasi saab liikuda, valides Run > Step into või F7.
Thonny kasutajaliides: silumine
Lisaks juba kirjeldatud funktsionaalsusele salvestab Thonny kasutaja tegevuse logifaili ja võimaldab kogu ülesande lahendamise käiku taasesitada. Kuidas seda teha ja milleks see kasulik on, tuleb juttu järgmises osas.
Thonny logide kasutamine abivahendina
Lisaks muudele programmeerimise algõppeks kasulikele funktsioonidele, on Thonnyl olemas logimise funktsionaalsus. Nimelt salvestab Thonny kasutaja tegevuse logifaili, mis võimaldab hiljem vaadata ja analüüsida programmi loomise ja muutmise käiku samm-sammult. Logide läbivaatamine annab kasulikku infot eelkõige õpetajale, kuna aitab märgata nii lahendamisviiside leidlikkust kui ka ebaratsionaalsusi ning näha, millised raskused õppijatel on. Seda, millist õpetajale vajalikku infot logidest leiab, on käsitletud materjali teises pooles. Thonny kasutajasessioonide logimise ja taasesitamise kohta võib vaadata ka etteruttavalt lühikest videot.
Kuidas ja milliste reeglite järgi logid luuakse?
Iga kasutussessiooni kohta luuakse logifail, mis salvestatakse txt-failivormingus, kasutades andmevahetusvormingut JSON (ingl JavaScript Object Notation), millele vastavalt koosnevad logifailis sisalduvad kirjed võti-väärtus paaridest, mis on eraldatud komadega. Iga logifaili nimes on logi alguse kuupäev ja kellaaeg. Alates versioonist 3.2.0 tuleb logimine eraldi sisse lülitada. Seda saab teha, valides menüüst Tools > Options > General > Log program usage events. Thonny versiooni saab vaadata, valides menüüst Help → About Thonny.
Fragment Thonny logifailist
Kasutussessiooni arvestatakse Thonny avamisest kuni sulgemiseni. Näiteks kui õppija avab ja sulgeb Thonny programmeerimiskeskkonda ühe ülesande lahendamise jooksul korduvalt, siis on tegu mitme kasutussessiooniga ja ühe ülesande kohta tekib mitu logifaili. Kui aga õppija lahendab mitu ülesannet, ilma et vahepeal Thonnyt sulgeks, tekib mitme ülesande kohta üks logifail. Kui on soov vaadata just lõpetatud ülesande logi, tuleb Thonny pärast töö lõppu korraks sulgeda ja siis uuesti avada. Siis luuakse viimane logifail.
Failid salvestatakse kohalikule kõvakettale sisseloginud kasutaja profiili alla user_logs kausta. Näiteks võib aadress olla C:\Users\kasutaja\.thonny\user_logs, kus kasutaja on sisseloginud kasutaja profiili nimi. Kuhu täpselt enda arvutis Thonny logifailid salvestatakse, on võimalik vaadata, valides menüüst Tools > Open Thonny data folder…Kaustast user_logs saate valida logid, mida tahate kasutada, ja need vajadusel mujale kopeerida. Logisid on võimalik ka eksportida, nii et need pakitakse zip-failiks kokku. Selleks tuleb valida Tools > Export usage logs… ja salvestada zip-fail.
Kasutussessiooni taasesitamine Thonnys
Selleks, et logifaili kasutades sessiooni tegevusi taasesitada, tuleb menüüst valida Tools > Open replayer... ning seejärel avaneb kasutussessiooni taasesitamise kasutajaliides. Kui menüüs ei ole valikut Open replayer..., tuleb sisse lülitada expert mode, milleks valida menüüst Tools > Options > General ja valida UI mode valikuks expert (mõne Thonny versiooni puhul tuleb märkida ruut Expert mode ees). Seejärel tuleb Thonny sulgeda. Uuesti avades on muudatused jõustunud ja Open replayer... menüüs olemas.
Thonny 3.0.8: expert mode seadistamine
Thonny 2.2.0b4: expert mode seadistamine
Kui General menüüs ei ole UI mode või Expert mode valikut, siis valida menüüst Tools > Open Thonny data folder... ja avada fail configuration.ini ning lisada faili algusesse järgmised read:
[general] expert_mode = True
Enne faili salvestamist tuleb sulgeda Thonny, et ei salvestataks configuration.ini faili üle juba eelnevalt mälus olnud seadetega.
Kui menüüst on valitud Tools > Open replayer... ning kasutussessiooni taasesitamise kasutajaliides on avatud, saab vasakul asuvast kataloogipuust valida arvutist sobiva logifaili ja asuda lahendusprotsessi üle vaatama. Et sündmused ilmuksid vastavas aknas nähtavale, tuleb teha logifaili nimel topeltklõps. Kui ei ole võimalust käivitada taasesitamist play-nupu abil, saab vajutada ülemises parempoolses aknas sündmusele ja kasutada liikumisel klaviatuuri nooleklahve. Joonisel on kujutatud hetk kasutussessiooni taasesitamisest, kus on näha ka veateadet.
Thonny kasutajaliides: kasutussessiooni taasesitamine
Thonny logifailide analüsaator
Programm asub aadressil: https://progtugi.cs.ut.ee/thonny-log-analyser/. Autor Rene Kütt.
Mille kohta saab Thonny logidest infot?
Thonny võimaldab logifailide abil taasesitada kogu programmi loomise käiku ja näha lahendaja tegevuse erinevaid aspekte. Logide läbivaatamine kasutussessiooni taasesitamist kasutades võib aidata märgata nii lahendamisviiside leidlikkust kui ka ebaratsionaalsusi ning näha, millised raskused õppijatel on.
- Milline oli programm erinevatel ajahetkedel? Läbivaatamise ajal on näha programmiaken ja lahendamise käigus seal tehtud muudatused. Programmi muudatusi jälgides on võimalik vaadata ka tegevuste aegu, mis kuvatakse atribuutide aknas. Programmiakna kood on läbivaatamise ajal kopeeritav - seega on võimalik huvipakkuva hetke programmi kasutada mujal (näiteks käivitamiseks). Näiteks võib sellest võimalusest abi olla tagasiside andmisel, kui õppija on kirjeldanud, kuidas ta ei leidnudki oma esialgsest lahendusest viga üles ja lahendas ülesande lõpuks teisiti.
- Millal käivitas lahendaja programmi esimest korda? Osa õppijaid lahendab ülesandeid osade kaupa ja käivitab programmi esimest korda juba selleks, et väikese valminud programmiosa tööd testida, teised aga proovivad kogu programmi valmis kirjutada ja alles siis asuvad seda testima ja vigu parandama. Osade kaupa töötamist tasub algajatele tutvustada ja soovitada. Kui töö käigus tuleb palju vigu, on osade kaupa töötades neid lihtsam programmist üles leida. Käivitamist näitab käsuaknasse (Shell) ilmuv %Run.
- Millised veateated tulid ja millised neist kordusid? Veateated ja korduvad veateated võivad anda olulist infot teemade kohta, mis vajavad põhjalikumat selgitamist. Samuti aitab see info märgata õppijaid, kellel võib olla raskusi.
- Kuidas proovis lahendaja programmi parandada? Lahendaja tegevus pärast veateadet võib anda infot, kuivõrd ta pöörab veateate sisule tähelepanu (s.h veateates sisalduvale infole vea asukoha kohta) või proovib programmis teha üsna juhuslikke muudatusi. Huvitav on, et õppijad üsna tihti käivitavad pärast veateadet programmi uuesti, ilma et oleks proovinud vahepeal viga parandada. Samuti võib märgata ebaratsionaalseid viise programmi tööd parandada. Näiteks teeb osa õppijaid pärast veateadet nii mitmes kohas erinevaid parandusi ja täiendusi, et lõpuks ei saa enam aru, milline viga sai parandatud ja milline juurde tehtud. Osa õppijaid ei käivita hetkel, mil oleks oluline veenduda, kas programm töötab. Näide: Lahendaja maadles tükk aega veaga ja lõpuks sai programmi tööle. Seejärel tegi samalaadse paranduse teises kohas ja enam ei käivitanud. Kui uus veateade tuli, siis ta taas ei teadnud, kuidas viga parandada.
- Kas ja milliseid võimalusi kasutas lahendaja väiksemate programmiosade töö kontrollimiseks? Osa õppijaid kasutab väljakommenteerimist, osa teeb katsetusi teises failis või kustutab programmiosi. Samas on neid, kes programmi tööd osade kaupa ei testi ka siis, kui neil on raske programmist viga leida.
- Kas ja millistel puhkudel ning kuidas kasutas õppija abistava vahendina silumise funktsionaalsust? Silumine aitab paremini mõista programmi tööd ja on hea abivahend õppijale programmi vigadest arusaamiseks. Läbivaatamiste põhjal võib öelda, et üldiselt kasutatakse abistavaid funktsioone pigem vähe ja neid võimalusi on vaja rohkem selgitada. Silumise kasutamist näitab käsuaknasse (Shell) ilmuv %Debug.
- Kas ja kui palju avas lahendaja Thonnys varasemate lahenduste faile ja kas ta otsis sealt ülesande lahendamise käigus abi või koguni käivitas teisi faile? Kui mõne ülesande vaatamine lahendamise ajal on tavapärane paljude õppijate puhul, siis leidub ka neid, kes avavad ülesande lahendamise ajal Thonnys kümneid teisi lahendusi. Sageli tuleb nii toimivatel lahendajatel ka oluliselt rohkem korduvaid veateateid ning läheb palju rohkem aega, mis võib viidata raskustele. Osa õppijaid kasutab ka suuremate osade kopeerimist teistest lahendustest või püüab varasemaid lahendusi täiendades ja muutes jõuda lahenduseni. Läbivaatamise käigus on võimalik vaadata ka nende Thonnys avatud failide sisu, mida õppija lahendamise käigus abistava vahendina kasutas. Kui õppija on ülesande lahendamise ajal avanud Thonnys teisi faile, ilmuvad need läbivaatuse käigus uues sakis ja näha on ka faili nimi. Kui uues sakis on faili nime asemel <untitled>, võis lahendaja avada uue programmiakna kas programmiosa testimiseks või muuks, kuid ei ole seda failina salvestanud. Lisaks avaneb uus programmiaken nimega <untitled>, läbivaatuse käigus ka silumise ajal. Viimase variandi tunneb ära selle järgi, et samal ajal on käsuaknas %Debug.