Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Pascal jako język do nauczania

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 instrukcje end

if (a==1) { instrukcje }

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?  

Komentarze

0 nowych
pawlus74   3 #1 19.05.2011 07:31

Cześć. Jestem uczniem Technikum Informatycznego na drugim roku. Zaczeliśmy właśnie C++ ale cały poprzedni ROK przerabialiśmy Pascala
Poruszasz bardzo fajny temat, ale mam troche odmienne zdanie. Technikum ma nas przygotować do egzaminu zawodowego na koniec szkoły. W wymaganiach tego egzaminu jest niestety znajomośc Pascala i występują takie rzeczy jak rekordy, procedury, wskaźniki a nawet raz pojawił się tryb graficzny. Jednak trzeba przyznać że test ten jest po prostu przestarzały i przydałby się nowy program i system nauczania.
Pozdrawiam

kubut   18 #2 19.05.2011 10:13

Oczywiście zgadzam się, pisząc wpis na myśli miałem nie tylko zmianę materiału nauczania na lekcjach, ale też egzaminu ;)

treuer25   6 #3 19.05.2011 13:36

Pascal po prostu w szkołach uważany jest nadal za takie prawidło, jeśli chodzi o języki programowania bo dla początkującego wydaje się być najbardziej logiczny.
Przydatność na rynku tego języka jest rzeczywiście wątpliwa.
Ja jakbym miał wybierać to zamiast Pascala uczyłbym w szkołach średnich Visual Basica który jest bardziej przydatny na rynku programistycznym. Język ten jest prosty do nauczenia się a znajduje na przykład zastosowanie w MS office, LibreOffice, Openoffice.

kuba144   5 #4 19.05.2011 13:49

Całe szczęście w mojej szkole zaczęliśmy od razu od C++

przemo_li   11 #5 19.05.2011 14:02

Pascal jest nieprzydatny ani do nauki (są prostsze), ani na studia ( jest C! - studiuję infę), ani do pracy (są nowocześniejsze), ani jako hobby (są języki skryptowe).

Jakość kompilatorów oraz IDE woła o pomstę do nieba. A d*******, którzy ciągle utrzymują Pascala w edukacji (poniżej studiów) powinni dostać dożywotni zakaz pełnienia funkcji publicznych.

kortom   2 #6 19.05.2011 14:55

U mnie programowanie jest od trzeciej klasy technikum, rok temu na lekcjach systemów operacyjnych podczas przerabiania DOS zetknąłem się na wstęp do programowania z kompilowaniem w programie Dbase3. Pascala jako języka edukacyjnego wrzuciłbym do gimnazjum.

Maxi_S   4 #7 19.05.2011 16:13

1) Składnia Pascala często bywa wykorzystywana do prezentowania rozmaitych zagadnień matematycznych w postaci algorytmicznej (nieprzypadkowa jest nazwa języka),

2) Kwestia wyboru języka programowania do nauczania w szkołach jest taka, że coś trzeba było wybrać. Kiedyś za "edukacyjny" uważano język Logo i BASIC (chociaż ten pierwszy powstał na potrzeby sterowania robotem). Moda na C-podobne też przeminie (przynajmniej w klasycznej postaci).

3) Państwowy egzamin zawodowy jest nieporozumieniem. Przygotowuje się uczniów do egzaminu zamiast do zawodu. Z całym szacunkiem, ale przygotować do egzaminu można psa tropiącego (również z szacunkiem dla tych zwierząt), ale technik ma być częścią zespołu i jego praca ma być twórcza a nie odtwórcza

4) Najlepszym wyjściem wg mnie byłby przedmiot w rodzaju "algorytmów", poprzedzający właściwą naukę programowania, która przebiegałaby z możliwością wyboru jednego z trzech języków programowania (np. C/C++, Pascal/Delphi, BASIC strukturalny/VB).

5) Jeśli ktoś zna Pascala, to niech powie o tym nauczycielowi, zaliczy w dwie lekcje co trzeba i zajmie się w tym czasie np. C. Jeśli takich osób będzie więcej, łatwiej będzie się wspólnie uczyć.

pawlus74   3 #8 19.05.2011 19:16

Pascal jest także dobry do ilustrowania podstawowych zasad i struktur programowania, np procedury w Pascalu mogą stanowić namiastkę klas w C++

kubut   18 #9 19.05.2011 19:46

@kuba144- teoretycznie fajnie, ale powodzenia na egzaminie zawodowym...

@Maxi_S - Gdy minie moda na języki c-podobne to wtedy należałoby znów zmienić program nauczania. Nie zmienia się to na tyle często, żeby było to uciążliwe. Co do 5 punktu, nie znam nauczyciela który zaakceptowałby takie rozwiązanie.

marcin_k   3 #10 19.05.2011 21:36

@kubut
Ja powiedziałem nauczycielowi od programowania że w miare ogarniam C++ i chciałbym się zajmować czymś innym na lekcjach. Powiedział że musze napisać jakiś program żeby wiedział że umiem i teraz musze tylko sprawdziany zaliczać:)

kubut   18 #11 19.05.2011 22:58

@marcin_k - ja przeważnie szybko robiłem ćwiczenia z C++ konsolowego (nauczyciel dawał 2 lekcje, ja w połowie pierwszej miałem zrobione), a resztę poświęcałem na borlanda (z tego względu akurat on, bo mamy go na kompach). Dzięki temu teraz, gdy zaczynamy borlanda, ja już go umiem w miarę i znów ćwiczenia wykonuje ekspresowo i mam czas na coś innego :)

pawlus74   3 #12 20.05.2011 09:08

Jeśli już mowa jest o C++ ? Jaki kompilator polecacie. Ja w domu używam Dev C++

kubut   18 #13 20.05.2011 17:00

Ja też używam deva, ale nie jestem zadowolony

  #14 20.05.2011 21:11

Dev to szmelc i nawet nie chce mi się pisać dlaczego bo się zdenerwuje, poszukajcie w google i piszcie w VS - większość rynku działa na tym, od standardowych aplikacji, przez mfc, winforms, directx, a kończąc na programowaniu równoległym na Nvidia CUDA co aktualnie robię.

Draqun   9 #15 22.05.2011 10:29

@pawlus74
Ja polecam CodeBlocks. Jest bardzo intuicyjny i dużo bardziej profesjonalny od Dev. Z drugiej strony po CodeBlocks dużo łatwiej jest się przestawić na Visuala, gdyż są one o siebie po prostu podobne.

@Maxi_S
1) Składnia Pascala często bywa wykorzystywana do prezentowania rozmaitych zagadnień matematycznych w postaci algorytmicznej (nieprzypadkowa jest nazwa języka),

Cóż. Sam uczyłem się Pascla może z 2 godziny. W Liceum zamiast Pascala naczyciel kazał nauczyć mi sie PHP. Prawda, że Pascal jest używany w matematycznych zagadnieniach algorytmicznych ale te 4-5 różnic jakie są między C i Pascalem to każdy jest w stanie na swoją rękę się nauczyć.

  #16 22.05.2011 18:21

Ja również uważam że 2 lata pascala w LO to za dużo... zwłaszcza ze nie ruszyliśmy nawet trybu graficznego. Ja akurat nie miałem problemów gdyż od 12 roku życia siedzę w delphi.. więc lekcje te były dla mnie istną nudą. Ale co się stało z delphi? Brak najnowszego RAD od producenta, który młodych programistów, którzy zaczynali tak jak (akurat załapałem się na okres, gdzie królowały delphi 6 i 7 w wersji personal). Ciekawszym wg. mnie rozwiązniem wydawałoby się jest c#. Nowy intuincyjny język, który czerpie z javy i c to co najlepsze (wiem, wymaga frameworku, to też temat sporny i zalezy od punktu widzenia). Do tego wsparcie microsoftu który udostępnia Visual Studio w wersji Express za darmo z możliwością tworzenia komercyjnych aplikacji. Oby tak dalej postępował i nie popełnił błędu tego, co producenci delphi (teraz o ile pamietam to jest CodeGear).

Co mnie zraziło w c++? przedewszystkim wskaźniki - których nigdy nie rozumiałem. Nauczyłem się dopiero ich zasady działania w pascalu. Dlatego uważam, że nie powinien być całkowicie usuwany z programu szkolnego (a najelpiej pascal zamieniony na delphi, gdzie można byłoby poznać trochę programowania strukturalnego). Potem przesiadka na c++ albo c#.

LoliconSuspect   5 #17 22.05.2011 20:54

Dev to nie kompilator tylko IDE...

xavell   3 #18 22.05.2011 22:12

Sprawę z Pascalem znam z autopsji. Pisanie prostych programów zacząłem około '90 w Basicu, a w '93 trafiłem na Turbo Pascala i tak się zaczęło. Póniej było przejście na Delphi i tak jest do dziś.
Kilkakrotnie próbowałem coś pisać w C++, ale mam właśnie straszne problemy z przestawieniem się na zupełnie inną składnię. Ostatnio trochę piszę w PHP i może jeszcze raz spróbuję podejścia do C++

  #19 22.05.2011 22:25

Moim zdaniem Pascal w edukacji to kompletna pomyłka. 3 takie największe wady:
1. To, co już poruszyliście - rozwlekłość i nieczytelność kodu.
2. Brak konsekwencji w składni. Np. po instrukcji występującej przed else nie ma średnika - zupełna anomalia moim zdaniem.
3. Największa "zbrodnia" Pascala: LICZENIE OD 1. W rozumieniu pseudokodów pomaga, ale przeszkadza w rozumieniu jakiegokolwiek sensownego kodu źródłowego.

Miałem Pascala w liceum, na szczęście trochę znałem wcześniej C i C++. Moim zdaniem Pascal uczy złych nawyków. Cieszę się, że przygodę z programowaniem zacząłem od QBasica i VB.

G.Gn7Ex   5 #20 23.05.2011 14:00

@tzzm
Ja z kolei w C/C++ znam jedną cechę, która całkowicie początkującego może nauczyć złego nawyku: dowolne miejsce deklaracji zmiennej(byle, żeby przed pierwszym jej użyciem), podczas gdy w Pascalu jest ściśle wyznaczone osobne miejsce dla deklaracji, a osobne dla instrukcji.

kubut   18 #21 23.05.2011 16:59

@UP - a takie nawyki są trudne do zniwelowania, sam głównie robię w PHP, gdzie w ogóle nie trzeba deklarować zmiennej ani trzymać się jakiegoś typu. W momencie gdy muszę coś napisać w innym języku często zapominam o deklarowaniu albo typach :) Ot, przyzwyczajenie do wygody.

slepcu   7 #22 29.05.2011 10:07

jak bym miał się zastanawiać nad tym jakiego języka programowania uczył bym w liceum/technikum to wybrał był Pythona.

darmowy, wymusza porządne pisanie kodu, dynamiczne typowanie ale typy zmiennych są sprawdzane, bogate biblioteki.

jest uzywany jako zawodowy jezyk (przeciwnie do pascala) choc w polsce ciągle mało popularny.

  #23 20.02.2016 01:52

@pawlus74: Dev to nie jest kompilator, tylko IDE. Kompilatorem jest np. GCC albo G++, z którego Dev może korzystać.