Výuka programování v podobě, v jaké je ve většině základních a středních škol či zájmových kroužků již drahnou dobu provozována, se stále více rozchází se současnými potřebami a měla by vypadat úplně jinak. Zatím produkuje programátory, kteří musejí při dalším vzdělávání nejprve zapomenout značnou část toho, co se před tím pracně naučili.
Strukturované versus objektově orientované programování
Základním problémem současné výuky programování na základních a středních školách je, že většina vyučujících se stále snaží vychovávat „strukturované programátory“ a odmítá vzít na vědomí, že v naprostá většina programátorských firem takovéto programátory nežádá a bez přeškolení je ani dost dobře nezaměstná. Takto vychovaní „strukturovaní programátoři“ mají při řešení současných úloh stále větší problémy.
Neobstojí ani námitka, že účelem výuky programování na školách není vychovat budoucí programátory, ale naučit děti systematicky myslet. Moderní objektově orientované programování totiž zvládá tento úkol mnohem lépe než klasické strukturované programování, protože je mnohem méně vázáno omezeními počítače.
Objektově orientované programování je dalším krokem ke zmenšení tzv. sémantické mezery, kterýmžto termínem označujeme rozdíl mezi tím, jak popisujeme řešený problém my, a tím, v jaké podobě předkládáme řešení počítači.Čím jsou si tyto popisy bližší, tím dříve jsme s řešením problému hotovi a tím menší je pravděpodobnost, že při překladu z naší řeči do řeči použitého programovacího jazyka uděláme chybu.
Asi bych měl být našim učitelům za tento stav vděčný, protože mne živí vedení kurzů pro profesionální programátory, kteří poznali, že to, co umějí, je neuživí, a pochopili, že se potřebují přeučit z klasického strukturovaného programování na programování objektově orientované. A musím říct, že vzhledem k současnému stavu výuky mne živí docela dobře ;-), takže bych se měl ve vlastním zájmu snažit tento stav udržet. Když ale vidím, jak snadno vstřebávají základy objektově orientovaného programování děti v kroužcích, které paralelně vedu, připadá mi setrvávání na současné metodice výuky jako hřích na dětech. A to mi docela vadí.
Na účastnících našich školicích a přeškolovacích kurzů je totiž vidět, že ti, kteří se do nich přišli naučit programovat a nemají žádné předběžné znalosti programování, mají s řadou věcí mnohem menší potíže než ti, kteří již programovat umějí a musejí nejprve pracně zapomenout nebo dokonce přebudovat značnou část toho, co se před tím pracně naučili.
Domek, nebo mrakodrap?
Svět soudobého programování je skrz naskrz objektový. Klasickým strukturovaným přístupem lze dostatečně efektivně a dostatečně spolehlivě řešit pouze drobné úlohy. Chceme‑li efektivitu vývoje a spolehlivost výsledného kódu udržet i při tvorbě rozsáhlých aplikací, je strukturované programování prakticky nepoužitelné a v současné době se již pro takovéto aplikace také nepoužívá.
Řada učitelů se domnívá, že objektové a strukturované programování jsou dva téměř antagonistické přístupy ke tvorbě programů. Není tomu tak. Ve chvíli, kdy máme navrženu architekturu programu a potřebujeme navrhnout také jeho útroby, použijeme techniky strukturovaného programování. Ale NE DŘÍVE!
Je to stejné jako se stavěním budov. Technologii, kterou jste se naučili při stavbě rodinného domku, nemůžete použít při stavbě mrakodrapu. Může se vám ale hodit při vyzdívání příček v postavené budově.
Absolventi středoškolských kurzů programování však většinou nic jiného než strukturované programování neznají, a pokoušejí se je proto aplikovat i v situacích, na které rozhodně nestačí. Když bych použil předchozí příměr, tak bychom mohli říct, že o stavbě velkých budov nic netuší, nicméně trvají na tom, že je budou stavět za použití technologií, jež se ukázaly užitečné při stavbě rodinného domku, protože je na škole nic jiného nenaučili. Problém je ale v tom, že po programových „rodinných domcích“ již v současné době nikdo netouží. Nároky zákazníků na schopnosti programů za poslední roky tak narostly, že každý už objednává jenom „mrakodrap“.
Když studenti pochopí, že to, co je ve škole naučili, je asi moc dobře neuživí, a rozhodnou se seznámit s objektovými technologiemi, stane se jim jejich předchozí vzdělání koulí na noze. Jejich největším problémem při plánovaném přechodu bývá totiž to, že se při něm dlouhou dobu snaží interpretovat nové poznatky prostřednictvím svých dosavadních zkušeností a svůj přechod na novou technologii tím zbytečně prodlužují.
O tom si ale podrobněji povíme příště, kdy se s vámi podělím o některé zkušenosti s překonáváním této bariéry ve svých kurzech.
Rudolf Pecinovský
0 komentářů:
Okomentovat