Pirmoji šio serialo serija čia.
Gal verta mokykloje naudoti sudėtingesnę kalbą, "kad atsisijotų idiotai"?
Į šitą klausimą lengva atsakyti. Toks požiūris prieštarauja mano apibrėžtam pirmajam apribojimui -- neišgąsdinti. Tolimesnė diskusija šia tema iškrenta už šio serialo ribų.
Ne, neverta ir negalima.
Ar apskritai yra skirtumas nuo kurios kalbos pradėti?
Šia tema jau esu išsamiai pasisakęs.
Taip, yra!
Kompiliatorius ar interpretatorius?
Kad atsakyti į šį klausimą, reikia suprasti ar yra skirtumas ir jeigu yra, koks. Pradėsiu nuo to, kad mano nuomone, mokiniui nereikia suprasti kuo skiriasi šitie dalykai. Jeigu abu (t.y. dvi konkrečiai paimtos ir lyginamos realizacijos) vienodai patogūs pasiekti aukščiau aprašytiems tikslams ir nepažeidžia apribojimų, tai tinka vienodai. Kadangi kol kas kalbam abstrakčiai ir “turim” menamas geras realizacijas, skirtumo lyg ir nėra.
Bet kita vertus, kol kas nekalbėjom apie IDE. O kol nekalbėjom, į kompiliatorių privalom žiūrėti kaip į neinteraktyvią programą, kuria reikia išmokti naudotis vien tam, kad pasigaminti savo pirmąją programą. Maža to, nesuvokiant transliavimo stadijoje vykstančių procesų, gaunasi praraja mentaliniame modelyje: aš parašiau programą, tada vyksta kažkokie keisti dalykai, o tada programa paleidžiama ir (gerai jeigu) veikia.
Interpretatorius tokios spragos neturi. Tekstas rašomas tiesiai į interaktyvų interpretavimo ciklą. Kai norima parašyti didesnę už kelias eilutes programą, ji rašoma mėgstamame redaktoriuje, kas yra intuityvu: “kad patogiau būtų”. Pabaigta programa sumaitinama interpretatoriui, ir ji iškart pradeda veikti (arba, vėlgi, neveikti :-)).
Kitas svarbus aspektas, prigimtinis interpretatoriaus “dialogiškumas”. Richard’as Wareham’as yra parašęs straipsnį su savo pastebėjimais apie komandinės eilutės interfeiso privalumus prieš grafinius. Pradinukų kontekste! Jo pastebėjimai beveik vienareikšmiškai tinka svarstant kompiliatoriaus-ar-interpretatoriaus klausimą mokykloje.
Panašu, kad all else being equal, interpretatorius.
Kas svarbiau -- IDE, ar interpretatorius?
OK, tad kas gi stipresnis -- Arnoldas Švarcnegeris, ar Silvestras Stalonė? Kas, jeigu kompiliatorių apginkluosim IDE, gal jis tada nugalės interpretatorių? O jeigu abu -- gal pastiprės vienodai?
Visų pirma, svarstant IDE naudojimo mokykloje galimybę, reikia atkreipti dėmesį į komerciškumą. Netinka Visual This-and-that iš Microsoft. Netinka Borlando žaislai. Tinka Eclipse. Netinka Dev-C++ (tik dėl kitų priežasčių).
Toliau. Jeigu naudojam IDE, ką jis mums duoda? Duoda gerą programos kodo redagavimo įrankį (jeigu pasisekė!). Bet jų ir taip pilna, tik imk ir naudok. Duoda integraciją su kompiliatoriumi: nereikia mokytis dirbti su komandine eilute. Bet tokia integracija yra built-in interpretatoriuje. Duoda integraciją su debugeriu. Čia privalumas. Bet apie tai žemiau.
Panašu, kad IDE sulygina kompiliatorių su interpretatoriumi. Tad jeigu nekreipsime dėmesio į Okamo skustuvo principą, galime tarti, kad skirtumo nėra.
Ar IDE išvis reikalingas?
Ką dar duoda IDE?
- Integraciją su įrankiais,
- Produktyvumą didinančius įrankius: efektyvią paiešką per kodo bazę, valdymo personalizavimą, adaptaciją prie asmeninių ir kompanijos kodo standartų ir pan.,
- Kai kurių sudėtingesnių ar nuobodesnių aspektų paslėpimą. Read: kodo generavimio wizardai ir pan.
Ir ką gi visa tai duoda vidurinėje mokykloje? Ogi nieko!
Apie integraciją su įrankiais jau buvo šiek tiek kalbos. Ir bus dar. Kas liečia porą klavišų paspaudimų bekainuojantį kompiliatoriaus pakvietimą, čia būtų grįžimas prie kompiliatoriaus-interpretatoriaus klausimo. Kalbant apie GUI redagavimo įrankius, vėl, gaunam mokyklinio kurso smūgį į kaktą -- O KAM?!
Atitinkamai “o kam?” reikia paieškos per kodo bazę, kai jos nėra? Valdymo personalizavimo? Adaptacijos standartams?
Atrodytų, kad sudėtingumus paslepiantys kodo generatoriai tai jau tikrai pliusas… Tikriausiai taip. Profesionalui. Ir tai dar diskutuotina. O kam moksleiviui generuotis MFC event mapus, handlerius, stdafx ir ką jie ten dar moka generuot?
Peršasi išvada, kad IDE nereikalingas.
Tęsinys rytoj.
BigJ
2008-08-02 01:22
sedim skaitom. :)