Pascal jako język do nauczania
19.05.2011 02:25
Zainspirowany dyskusją pod moimi ostatnimi wpisami dotyczącymi edukacji w technikach informatycznych (1 i 2 ), postanowiłem brnąć dalej w temat nauczania w polskich szkołach. W dzisiejszym wpisie, postaram się rozprawić z językiem Pascal.
Najpierw chciałbym przedstawić 2 zdania historii o tym języku. Jak zapewne większość z Was wie, powstał on w celach edukacyjnych w latach 70 (2 lata przed C). W Polsce stał się niezwykle popularny ze względu na...dostępność pirackich kompilatorów. Pytanie tylko, czy obecnie spełnia swoją rolę edukacyjną? Zdecydowanie jest to język bardzo przejrzysty, szczególnie dla osób znających podstawy angielskiego (a u nas jest to właściwie norma). Uczy też przykładania wagi do typów zmiennych ponieważ jest językiem silnie typowanym. Teoretycznie język-cudo, ale przecież się nie przyjął do szerszego programowania. Wystarczy porównać te 2 fragmenty, żeby zrozumieć "o co kaman"
if a=1 then begin <i>instrukcje</i> end
if (a==1) { <i>instrukcje</i> }
O ile dla nowicjusza pierwszy kod będzie bardziej zrozumiały, o tyle drugi jest o wiele czytelniejszy dla doświadczonego programisty. Pomijam kwestię długości kodu ;) Tak więc mogę zgodzić się, ze na Pascalu łatwiej jest zrozumieć jak myśleć pisząc program. Jednak im głębiej w tajniki tego języka, tym bardziej jest on zagmatwany. Zapis do pliku w C++ jest nieporównywalnie prostszy niż w Pascalu (przynajmniej dla mnie i ludzi z mojej klasy).
Dla nieczytających moich poprzednich wpisów, nadmienię, że Pascala uczyliśmy się cały rok szkolny. Łącznie z rekordami, obsługą plików i trybu graficznego.
Rozumiem sens nauki podstaw tego języka (pętle, warunki, tablice), jednak po co brnąć w niego tak głęboko? Obecnie większość języków jest C‑podobna, szczególnie tych popularnych (C++, PHP, JS, Java, C#). Dla mnie jest to strata czasu i niepotrzebne mieszenie w głowie potencjalnym przyszłym programistom. Czy nie lepiej byłoby poświęcić czas zmarnowany na zaawansowane funkcje Pascala na Delphi, Javę czy po prostu na algorytmy? Po co wpajać logikę języka strukturalnego, skoro obecnie obiektowość jest "na topie"?
Jakiś czas temu przeczytałem w którymś komentarzu, ze nie jest ważny język jakiego się uczysz, tylko sposób myślenia. Zgadzam się z tym całkowicie. Odpowiednie konstrukcje, funkcje i zasady zawsze można znaleźć w internecie lub książce (nie raz już edytowałem kod w języku którego nigdy się nie uczyłem), ważne jest czy wiemy jak się do tego zabrać. Tylko, że jeśli przy okazji uczenia się odpowiedniego sposobu myślenia, uczymy się języka-czemu nie popularniejszego i nowocześniejszego? Tak jak pisałem-na Pascalu łatwo uczy się podstaw, ale później jest trudno przestawić się na zupełnie inny wygląd C++ czy innego języka. Osobiście wolę mieć trudniej na początku, ale później mieć łatwiej, przy poszerzaniu horyzontów. Naukę programowania zacząłem od C++ i nie żałuję-teraz odpalam (przykładowo) kod ActionScript, którego nie znam, ale wiem o co w nim chodzi. Szukam tylko znaczenia poszczególnych funkcji, ale składnia języka jest dla mnie całkowicie czytelna.
Przykład z życia, który obserwuję na żywo, na każdej lekcji programowania. Ludzie mają straszny problem ze zrozumieniem C++ bo uczyli się cały rok czegoś zupełnie innego. Przyzwyczaili się do Pascala i teraz nie mogą sobie poradzić z C++. To działa jak wszystko inne-uczysz się czegoś i "wchodzi" Ci łatwo, ale później trudno przestawić się na coś zupełnie innego.
Ostatnią opcją, którą widzę jest nauka Delphi zamiast Pascala. Jest to moim zdaniem język popularniejszy w zastosowaniach poza-edukacyjnymi, a niewiele trudniejszy niż Pascal. Nie eliminuje to problemów z późniejsza nauką innych języków, ale na pewno lepiej wygląda w CV i może się przydać w większym stopniu niż Pascal.
Tak więc, kończąc przedstawiam podsumowanie, 3 opcje na lepsze nauczanie programowania by Kubut ;)
1. Wprowadzenie do Pascala, ale tylko w małym stopniu. Zaoszczędzony czas poświęcić na inny język. Dzięki temu uczniowie ogarną o co chodzi w warunkach, pętlach itp. Zarazem nie zajmie to dużo czasu i będzie można skupić się na innych, przydatniejszych rzeczach niż Pascal. Poszkodowani będą uczniowie którzy programowanie chcą tylko "zaliczyć" oraz osoby zainteresowane delphim.
2. Całkowite wycofanie Pascala. C++ być może będzie trudniejszy do zrozumienia dla początkującego programisty, ale za to w przyszłości da mu o wiele większe perspektywy pracy i rozwoju. Podobnie jak wyżej, poszkodowani będą uczniowie którzy programowanie chcą tylko "zaliczyć" oraz osoby zainteresowane delphim.
3. Zastąpić Pascala Delphim. Składnia podobna, a użyteczność większa. Za to niewiele lepiej będzie z nauką przyszłych języków dla osób ambitniejszych i tych którzy chcą zdać kolejne klasy z programowania ;)
A jak Wy patrzycie na Pascala i jego miejsce w polskiej edukacji?