Blogity blog blog


Serialas: mokykla. Pirmoji serija.

2008-07-31, rtfb

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 sangrąž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:

  1. Parodyti žmogui, kaip, kokiu būdu yra valdomas kompiuteris. Ne kaip juo naudojamasi, o kaip jis valdomas.
  2. Išvengti situacijos, kai vidurinį išsilavinimą turintis žmogus nenutuokia kas yra programavimas ir išgirdęs, kad jo naujasis pažįstamas yra programuotojas, džiugiai klausia “o! Pas mane Vindousai flash rakto neskaito! Tu profas, sakyk ką daryt?”.

To mes norime pasiekti, sutilpdami į tokius apribojimus:

  1. Neišgąsdinti žmogaus. Išvengti situacijos “dalykas šūdas, mokytojas gaidys, man gyvenime to neprireiks, švietimo sistema čiulpia”.
  2. Sudominti žmogų.
  3. Neapkrauti žmogaus tuo, ko jam (bent jau kol kas) nereikia.

Ž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ų:

  • Kompiliatorius ar interpretatorius?
  • Kas svarbiau -- IDE, ar interpretatorius?
  • Ar IDE išvis reikalingas?
  • Ar svarbu turėti debugerį? Kokiomis aplinkybėmis?
  • Kalbos lituanizavimas.
  • Dinaminis ar statinis tipizavimas?
  • (Ne)Prisirišimas prie OS.
  • Ar apskritai yra skirtumas nuo kurios kalbos pradėti?
  • Gal verta mokykloje naudoti sudėtingesnę kalbą, "kad atsisijotų idiotai"?

Apie visa tai turiu ką pasakyti. Na, ar bent jau žibalo į ugnį įlieti :-). Bet pirmoje serijoje nuo savęs pridedu dar porą aspektų:

  • Kalbos komerciškumas.
  • Kalbos sukūrimo tikslas, tikslinė niša.

Čia pat juos ir aptarkim.

Kalbos komerciškumas.

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:

  1. Slopinamas žmogaus susidomėjimas (per pamoką susidomėjo, grįžo namo, paaiškėjo, kad negalima, nusispjovė, žiūri teliką).
  2. Žmogus apkraunamas. Net jeigu pinigai kaipo tokie ir būtų visiškai eliminuoti iš šitos istorijos (pvz., bet kur ir bet kada moksleivis galėtų pasiekti realizaciją, pasinaudodamas savo moksleivio pažymėjimo numeriu), tai nekeistų fakto, kad žmogus apkraunamas absoliučiai bereikalingu šlamštu.

Ž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ą.

Kalbos sukūrimo tikslas, tikslinė niša.

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.

 
 
1 komentaras:

avatar

pradžia suintrigavo. tikrai laukiu tęsinio .)


Mano nacis spam-filtras visus laiko botais.
Išspręskite šitą captcha jeigu jūs ne toks:

9 + 4 =