Anksčiau, išskyrus Asemblerio(assembler) užduotis, bei Disasemblerį(disassembler), kurio taip ir neparašiau, mokantis universitete, visad į pateiktas programavimo užduotis žiūrėdavau kaip į labai elementarius dalykus. Visų pirma dėl duodamų mėnesio terminų vien maksimaliam balui gauti, o visų antrą dėl nedidelių reikalavimo skirtumų.
Taip buvo ir su C, ir su C++ ir su Java pirmom užduotim. Tačiau dabar, praktiškai viskas pasikeitė. Faktiškai yra duodama viena savaitė naujai programai parašyti(terminai yra kas dvi savaitės, bet viena iš tų dviejų yra 95 proc. atveju esamos programos pataisymas pagal reikalautus pakeitimus).
O ir palyginus dviejų užduočių reikalavimus:
Užduotį reikia atsiskaityti iki 2009.10.26 imtinai
1. Kurios nors užduoties klasės vietoje sudaryti bent trijų klasių hierarchiją.
2. Aprašyti specifinį išvestinių klasių elgesį, perrašant reikiamus bazinės klasės metodus.
3. Bent vieną išvestinę klasę papildyti laukais ir metodais, kurių nėra bazinėje.
4. Pademonstruoti klasių polimorfinį elgesį vykdymui skirtoje klasėje.
Bei:
Užduotį reikia atsiskaityti iki 2009.11.09 imtinai
1. Parengti parašytas klases klonavimui.
2. Vykdymui skirtoje klasėje pagaminti objektus su identiška būsena.
3. Išimtinių situacijų aprašymui sukurti savo išimčių klasių hierarchiją ir ją panaudoti.
4. Vykdymui skirtoje klasėje išimtis pagauti ir atspausdinti informatyvius pranešimus.
5. Prasmingai panaudoti static, final, static final specifikatorius kuriems nors klasių laukams ar/ir metodams.
Tikrai, kaip vienos savaitės darbui, reikalavimai tikrai gana progresyviai keliami. Ir jeigu visi universitetiniai dalykai būtų dėstomi tokiais tempais ir reikalavimais, manau nesunkiai būtų galima pamanyti besimokant ne VU MIF’e, o Kembridžo MIF’e
. Ir mokslo kokybės nebūtų galima kritikuoti.
Taip, dauguma atveju tai priklauso nuo pačio dėstytojo. Šiuo atveju tikrai pasitaikė ‘programeris’
. Ir išties malonu tokiais atvejais rašyti programą, kuomet reikalavimai jai nebėra pirmoko lygmens
.
Atsimenu vieno dėstytojo pretenzijas, kai parašiau programą per gudriai. Kadangi programos reikalavimas buvo rašytas Pascal programai, ir C++ buvo kaip alternatyvą, aš pasinaudojau ‘vector.h’ įrankiu ir labai lengvai realizavau programą. Tačiau visvien galiausiai teko perrašyti vector.h, t.y. pasirašyti savo ‘vector.h’ vien dėl to, kad realizuoti programos ‘tūpūmą’.
Beje, nusivyliau ir C++ universitetiniais reikalavimais. Niekas nereikavo panaudoti nei ‘template’ <T> tipo abstrakčių duomenų tipų, nei realizuoti grafinio interfeiso. T.y. bent jau primityvaus grafinio modeliavimo. Tai padariau tik savo noru ir nuožiūrą.
Ko pasekoje gaudavosi kuriozinė situacija, universitetinį pažymį ‘10′ galėjo gauti tie, kurie rašė elementarias programas.
Java programų atveju, kaip jau minėjau vienas dalykas tapo idealus – tai deadline’ai. Kas dvi savaitės, o praktiškai – kas viena. Reikalavimų progresija išties puiki. Neskaitant tūpų pirmųjų programų, kuomet atsiskaityt pirmas dvi pavyko per 30 minučių, o parašyt – tik pora dienų, nes reikalavimai joms buvo tarsi cheap-quality php tinklapio.
Mano supratimu, jeigu jau mokaisi VU, ir neva hi-end specialybėje, tai apskritai joje neturėtų būti žmonių gaunančių aukštus įvertinimus rašant žemo lygio programas. Ir reikalavimai turėtų būti ne hi-end, o labiau super-hi-end.
Nes priešingu atveju universitetas neteikia jokios naudos – gi universitetas siekia išugdyti kvalifikuotus specialistus. Bet kaip jis tokius gali išugdyti, kai ’sunkiausiai’ semestro programa ‘tenkinanti’ reikalavimus teužima vos 700 eilučių ir parašoma per dieną-dvi. Ir tokia programa gerų geriausiai teišnaudoja vos pusę programavimo kalbos galimybių.
Ir po to tokie specialistai eina dirbti į įmones.
Nieko stebėtina, kad pačios įmonės po to turi inverstuoti tūkstančius į darbuotojų kvalifikacijos kėlimą.
——-
Kitas aspektas – tikrai neturėtų būti taip, kad visus semestro laboratorinius programavimo darbus pavyktų atsiskaityt vos per pirmas 4-5 semestro savaites kiekvienai programai skiriant vos viena-dvi dienas darbo.
O to esmė vėlgi, kaip jau ir minėjau – tiesiog programų sudėtingumo kilimo kreivė yra kone horizontali, nors pagal Kembridžo dėsnius ji turėtų būti bent jau geometrinės progresijos arba netgi eksponentinė.
Galbūt ir tokiu atveju būtų įmanoma atsiskaityti darbus per 7-8 semestro savaites, bet tokiu atveju vienai programai mažiausiai 4 pilnų dienų gilinimosi į prog. kalbos galimybes ir jos realizacija prireiktų, ir bent jau gavęs diplomą studentas galėtų sakyti kad jis kažko vertas.
Dabar gi gaunasi taip, kad ir tas, kuris rašo 3000+ eilučių programas realizuodamas paskutine ’sunkiausia’ semestro užduotimi 90+ proc. prog. kalbos esminių galimybių, ir tas, kuris rašo 600-700 eilučių programas, realizuodamas vos 40-50 proc. prog. kalbos savybių, gauna lygiai tokius pačius diplomus. Negana to, jeigu pastarąjam geriau sekąsi antriniai specialybės dalykai, jis gali būti netgi aukščiau už pirmąjį žmogų.
Taigi ar tame yra logikos? Manau, kad ne.
Žinoma, visada atsiras prieštaraujančių, kad reikalavimai programoms yra ‘kosminiai’.
Bet tada kyla natūralus klausimas tokiems žmonėms – ko Jūs einate į tuos universitetus?
Kitas kuriozinis dalykas – universitetuose praktiškai nedėstomas Php. O C# dėstomas minimaliai. Kas dar kurioziškiau – realybėje realūs darbo užsakymai būtent sudaro 90 proc. būtent šioms programavimo kalboms.
Tačiau itin uoliai išdėstomas ‘pascal’is’. Ir turbūt būtų išdėstytas dar uoliau, jeigu ne galimybės pakeisti pascal į C++ leidimas antrame ir tolimesniuose semestruose universitete. Tačiau visgi visi dėstytojai ‘pasikaustę paskalyje’, ir kartais gana juokinga būdavo žiūrėti kaip jie vertina ‘C++ kodą’
. O supratę, kad C++ tai padaryti be galo paprasta ir lengva atsidurdavo keblioje situacijoje – universitetiniai reikalavimai tiesiog nėra ruošiami aukštesnio lygio programavimo kalboms.
Tai tiek minčių apie mokslo kokybę Lietuvos universitetuose. Šiuo atveju, bene geriausiu laikomame ‘VU’. Skirtumas tas, kad nuo šių metų fux’ai už tai dar moka ir kelioliką tūkstančių litų kasmet
. Argi ne kurioziška
.