Przeciw analfabetyzmowi przyszłości

Andrzej Urbański

Jeszcze w latach osiemdziesiątych nauką programowania w językach proceduralnych typu FORTRAN, ALGOL 60 czy PASCAL objęci byli wszyscy studenci politechniki. W szkołach średnich, a nawet podstawowych próbowano uczyć stworzonego specjalnie do nauki najmłodszych języka programowania LOGO, często na zabawkowych komputerach typu ZX SPECTRUM czy ATARI (Rys. 1).

Kiedy jednak na uczelnie i do szkół wkroczyły komputery zgodne z IBM PC z systemem MS-DOS, a później WINDOWS, zachłyśnięcie się bogatym oprogramowaniem biurowym spowodowało odwrót od nauki programowania na rzecz nauki posługiwania się tym programowaniem. Co prawda tworzenie arkusza kalkulacyjnego w programie EXCEL czy innym ma coś wspólnego z programowaniem, a DBASE służące do zarządzania bazami danych, było już całkiem zaawansowanym językiem programowania, jednak to pierwsze nie dawało szans na wyedukowanie do profesjonalnego programowania, a to drugie było zbyt skomplikowane dla początkujących.

Bloki, linie, klocki

Tymczasem „wieża Babel” języków programowania rozrastała się niepomiernie, oferując ich translatory dla profesjonalnych programistów, a także środowiska będące często bardziej zabawą i grą niż utylitarnym środkiem do tworzenia oprogramowania. Jednak takie podejście pozwalało posiąść sztukę programowania nawet dzieciom. Jednym z najczęściej wykorzystywanych pomysłów była próba stworzenia edytora schematów blokowych.

Do polskich szkół trafiło zalecane i finansowane przez MEN oprogramowanie ELBOX ELI (Rys. 2), które oferowało użytkownikom klocki do składania schematów blokowych. Liczba rodzajów klocków była stosunkowo duża jak na możliwości tego programu. ELI, reklamowany jako nowoczesny, stawał się koszmarem, gdy trzeba było poprawiać lub przebudowywać program, bo każdorazowa jego zmiana wymagała zburzenia klockowej konstrukcji i rozpoczynania od nowa. Bloków instrukcji czy warunków nie można było „wciskać” pomiędzy już istniejące. Jako język programowania dyskwalifikowało go zbytnie zachęcanie programistów do czynienia kodu bałaganiarskim.

Nieco inne podejście zastosował w swoim programie TRAIN (Rys. 3) z lat 1995-1996 autor tego artykułu, w którym graficzny kod był liniowo uporządkowany z góry na dół pośrodku arkusza. Po bokach natomiast biegły w górę i w dół połączenia wynikające z instrukcji warunkowych i iteracyjnych. Zarówno bloczki proste, jak i warunkowe, można było wsuwać z użyciem drag&drop pomiędzy dotychczasowe, bo edytor graficzny sam inteligentnie rozsuwał dotychczasowe bloczki, dbając o prawidłową aktualizację wszystkich połączeń. Wystarczało proste zalecenie „staraj się nie przecinać linii”, by kod zachowywał czytelność.

Symbol lokomotywy wskazuje punkt, w którym aktualnie program się wykonuje, bowiem zaproponowano tu analogię pomiędzy programowaniem a układaniem torów dziecięcej kolejki. Zastosowanie „kolejkowych” dźwięków w trakcie wykonywania programu było dodatkową atrakcją dla najmłodszych.

U naszych południowych sąsiadów Bohumir Soukup w 1999 roku opracował język Baltie (Rys. 4), w którym do dzisiaj rozgrywane są dziecięce zawody w programowaniu.

W roku 2003 powstał w MIT Scratch (Rys. 5), który dzisiaj bije rekordy popularności. Jego autor, Mitchel Resnick, jest również współtwórcą serii LEGO MINDSTORMS do budowy i programowania robotów w „klockowym” języku. Również Scratch posiada rozszerzenia albo mutacje do programowania różnych ich zestawów, np. mBot. Takie zestawy doceniają również nauczyciele dziecięcych programistów, bowiem roboty, prezentując bardzo namacalne i atrakcyjne efekty działania tworzonych programów, dają motywację do nauki i przez swoją konkretność ułatwiają ją.

Doktor Bot

Wczesna nauka programowania w szkołach ma wiele zalet. Programowanie ma sporo cech matematyki, a więc rozwija myślenie abstrakcyjne. Szczególnie przyczynia się do rozwoju zdolności przewidywania skutków różnego rodzaju działań, a więc zdolności niezwykle wartościowej w życiu codziennym i właściwie w każdym zawodzie. Opanowanie pierwszego języka programowania to milowy krok w kierunku poznania dowolnych dalszych języków, mających ogromne znaczenie utylitarne. Dzisiaj utalentowani programiści są hołubieni przez licznych przedstawicieli przemysłu informatycznego poszukujących pracowników. Miejsca pracy programistów wyposażane są niezwykle wygodnie i bogato, co wraz z atrakcyjnymi ofertami płacowymi i dodatkowymi bonusami czyni zawód programisty jednym z najpewniejszych na rynku pracy.

Mając na względzie te wszystkie przesłanki, pomyślałem o wychowankach domów dziecka. Zauważyłem, że Dom Dziecka nr 2 w Poznaniu sąsiaduje z V Liceum Ogólnokształcącym, które ma laboratorium robotów LEGO MINDSTORMS. Dlatego w uzgodnieniu z dyrekcjami na początek zaoferowałem kilku wychowankom zajęcia pozalekcyjne. Kurs zgodziło się prowadzić kilku studentów wolontariuszy z Wydziału Informatyki Politechniki Poznańskiej i kilku uczniów V Liceum Ogólnokształcącego. Celem tych zajęć stał się Festiwal Robotów, odbywający się w maju 2016 na Politechnice Poznańskiej, na którym najlepsi kursanci mieliby wystąpić. Jednak aby skonstruować własnego robota na pokaz, potrzebowali własnego zestawu LEGO. Dlatego poprosiłem internautów o wsparcie finansowe przez założenie projektu crowdfundingowego https://polakpotrafi.pl/projekt/zbudowac-robota. Ponieważ już po kilku dniach zebrano kwotę wystarczającą do zakupu LEGO MINSTORMS, więc zestaw wraz z nieodzownym laptopem wręczono dzieciom na barwnej uroczystości tuż przed Gwiazdką http://natlok.pl/drbot-robot-z-tytulem-dr-inz/. Uroczystość prowadził chyba pierwszy na świecie robot z doktoratem – dr Bot (na fot.).

Dr Bot

Autor artykułu i studenci chcą poszerzyć akcję na inne Domy Dziecka, organizując serwis do kontaktowania się z nimi studentów, tworząc koło naukowe na politechnice oraz dalej zbierając pieniądze na http://drBot.pl.

Dr inż. Andrzej Urbański, Wydział Informatyki Politechniki Poznańskiej