| « Serialas: mokykla. Antroji serija. |
Metų pradžioje susidūriau su blogerių diskusijomis apie tai, kuria kalba geriau būtų dėstyti programavimą mokykloje.
pro-Ruby: http://emptydot.com/vidmantas/2007-12-29/ruby-kalba-mokykloms/
pro-Python: http://blog.sandbox.lt/lt/Paskalis+mokyklose
pro-Pascal: http://www.arvydas.net/bevertes-programavimo-kalbos
Nuomonės, dideliam mano nustebimui, smarkiai varijavo. Ne, aš nesu naivuolis. Nemanau, kad tokiame "religiškame" klausime kaip vaikų mokymas gali būti lengvai randama bendra nuomonė. Tačiau kad taip diverguotų atskirais, lengvai išaiškinamais klausimais...
Kadangi mane ši tema gana smarkiai domina (pradedančiųjų programuoti mokymas: ar tai būtų savamoksliai, ar moksleiviai, ar pirmakursiai), pabandysiu čia surašyti kelias mintis, kurias sukėlė fleimai bloguose.
Kalbant apie mokymą (be sąngražinės dalelytės!), pirmiausia reikia apsibrėžti tikslus ir priemones, be šito nėra prasmės toliau kažką nagrinėti.
Taigi, šio serialo kontekste, mokydami spuoguotus nebrendylas programuoti, mes siekiame:
To mes norime pasiekti, sutilpdami į tokius apribojimus:
Žmonės minėjo tokias kalbas: Pascal, C, C++, C#, Java, Python, Ruby, PHP, BASIC, ECMA Script, Perl, Lua.
Kad nebūtų per maža, galėčiau pridurti dar kandidačių: Common Lisp, Haskell, Logo, OCaml, Ada.
Bet čia nebus propaguojama nė viena iš jų.
Trumpa serialo apžvalga. Žmonės iškėlė ir apifleimino va šiiitiek temų ir aspektų:
Apie visa tai turiu ką pasakyti. Na, ar bent jau žibalo į ugnį įlieti :-).
Bet pirmoje serijoje nuo savęs pridedu dar porą aspektų:
Čia pat juos ir aptarkim.
Visų pirma, čia aš nekalbu apie kalbos autorystę. Tegul tą Java sukūrė viena korporacija, o C# kita. Tiek jau to. Tarkim, kad jos nuo to komerciškomis nepasidaro.
Kalbėdamas apie komerčiškumą, aš turiu omenyje kalbos realizacijos komerciškumą. Arba, kalbant paprasčiau, galutinio produkto, leidžiančio dirbti ta kalba, kainą. Jos nebuvimą. Galimybę bet kuriam moksleiviui bet kur ir bet kada ja naudotis. Mokykloje, namie, pas draugą, pas tėvą darbe, bet kur!
Neturint nemokamos kalbos realizacijos, pažeidžiami iškart du apribojimai:
Žinoma, šiais laikais praktiškai visos kalbos turi nemokamas realizacijas. Tačiau nereikia pamiršti, kad kai kurios nemokamos realizacijos nusileidžia komerciniams ekvivalentams. Kai kurios kokybe, kai kurios naudojimosi patogumu, kai kurios paplitimu (pvz., gera realizacija Unix sistemoms, bet prasta Windows).
Kalba privalo turėti gerą nemokamą realizaciją.
Viena iš kalbos meta-savybių yra jos sukūrimo tikslas; uždavinių ir problemų klasės, kurioms spręsti ji yra skirta. Tai neprivalo ką nors reikšti, bet praktika rodo, kad neretai reiškia.
Moksliniams tyrimams sukurta kalba dažnai turi tam tikrų savybių, kurios geriausiai perprantamos jau išklausius aukštosios matematikos bei transliavimo metodų kursus (pvz., Haskell, Lisp). Tad tokių kalbų dėstymas mokykloje būtų mažų mažiausiai keistas.
Atitinkamai keista būtų dėstyti mokykloje kalbas, kurios yra skirtos industrijai. C, C++, Java, C# ir daugelis kitų kalbų turi savybių, kurių privalumai išryškėja vien tik industrinėje aplinkoje. Tuo tarpu savybės giliai "įsiūtos" į kalbą ir išmokti ja programuoti neperkandus į industriją orientuotų savybių, sunku; arba, mažų mažiausiai, pažeidžia trečiąjį apribojimą: apkrauna nereikalingais dalykais.
Tad svarstant mokyklai skirtas kalbas, pravartu prieš viską pažiūrėti į kalbos tikslinę nišą. Toks pažiūrėjimas gali padėti greičiau identifikuoti tam tikras "no-no" savybes. Ir tik tokių neradus, verta žiūrėti toliau.
Tęsinys rytoj.