Thonny + Scratchi klotsid
Probleem
Scratch (https://scratch.mit.edu) on lastele ning noortele mõeldud visuaalne programmeerimiskeel ja -keskkond, mis on ideaalne võimalus programmeerimisega esimese tuvuse tegemiseks. Programmid koostatakse klotside lohistamise teel ja seetõttu ei ole selles keskkonnas võimalusi süntaksivigade tekkimiseks.
Thonny (https://thonny.org) on algajatele mõeldud Pythoni arenduskeskkond. Kuigi Thonny üritab kasutajale paljuski vastu tulla, siis Pythoni tekstiline süntaks valmistab ikkagi tihti peavalu. Isegi kui kasutaja saab süntaksivigadega hakkama, läheb omajagu aega, enne kui ta õpib sümbolite jadas programmi struktuuri nägema.
Idee
Mis oleks, kui ehitaks Scratchi ja praeguse Thonny vahele veel ühe taseme, mis võimaldaks Pythoni programme koostada klotside lohistamisele teel? Ideaalis võiks see toimida nii, et kasutaja saab Thonnys valida, kas ta kirjutab konkreetset skripti tavalises redaktoris või klotside aknas. Ükskõik kummas midagi muudetakse -- teine esitus muutub sellest automaatselt. Kui mõlemad esitused kõrvuti panna ja alustada samm-sammulist programmi läbimängu, siis on sammud näha samaaegselt mõlemas kohas.
See võimalus vähendaks oluliselt Pythoniga alustamise peavalusid (ei pea muretsema sulgude, jutumärkide ja koolonite pärast). Tekstilise ja klotsilise programmi kõrvuti nägemine aitaks näha tekstilise programmi sisulist struktuuri.
Hetkel aktiivses kasutuses olev Scratch 2.0 baseerub Flashil, aga uus, 2019. aasta alguses käiku minev versioon 3.0 (https://beta.scratch.mit.edu/) on kirjutatud JavaScriptis ja jookseb kenasti igas kaasaegses veebilehitsejas. Terve Scratch-i GUI on avaliku lähtekoodiga (https://github.com/LLK/scratch-gui) aga antud ülesande jaoks pakub rohkem huvi visuaalsete klotside teek (https://github.com/LLK/scratch-blocks).
Kahjuks ei saa Thonny raames JavaScriptil baseeruvaid kasutajaliideseid otseselt kasutada, sest Thonny GUI on tehtud Tkinteriga ja selle jaoks pole korralikke veebilehe vidinaid. Aga pole hullu -- õnneks on igal kasutajal olemas veebilehitseja. Vaja lihtsalt koostada spetsiaalne väike veebiserver, mis käivitub Thonnys vastavat nuppu vajutades ja vahendab infot “päris” Thonny ning nt. aadressil http://localhost:1234 kättesaadava Scratch-Thonny vahel. Scratch-Thonny ülesandeks on päris-Thonny ekraanil toimuva jäljendamine (kui kasutaja toimetab päris-Thonnys) või päris-Thonny seisu uuendamine (kui kasutaja toimetab Scratch-Thonnys). NB! Ka ainult lihtsama suuna implementeerimisest (st. päris-Thonny jäljendamisest Scratch-Thonnys) oleks algajale palju abi.
Scratch-Thonny lehel peaks olema vähemalt klotsiredaktor(id) ja valitavate klotside kast.
Peab veel arutama, kuidas oleks parem -- kas jätta programmi käivitamise nupud, väljundi näitamine jms päris-Thonny hooleks või panna ka Scratch-Thonny kasutajaliidesesse kõik vajalik lihtsate programmide arendamiseks ja testimiseks.
Nõudmised
Töö nõuab head programmeerimisoskust, peamiselt JavaScriptis (selles keeles on juhendaja oskused kahjuks algtasemel). Päris-Thonny seisu küsimiseks ja uuendamiseks on vaja ka Pythonis programmeerida, aga selles osas saab juhendada alati aidata. Võib-olla läheb vaja ka web-socket-ite kasutamist.
Seotud tööd
Tegelikult on ATI tudengid sarnast asja juba varem üritanud aga senised tulemused on andnud välja vaid esialgse prototüübi mõõdu. Kuna ükski neist ei kasuta scratch-blocks teeki, siis pole ka lootust, et tulemus oleks Scratchi kasutajatele optimaalne.
On ka üks tõsisem ettevõtmine (https://think.cs.vt.edu/blockpy/), mis võimaldab Pythoni koodi koostada Blockly (https://developers.google.com/blockly/, scratch-blocks’i eelkäija) visuaalses süntaksis, aga antud töös oleks üheks oluliseks punktiks just Scratch-i sarnasus ja Thonnyga integreerimine.
Kontakt
aivar.annamaa@gmail.com