Nauka programowania w polskich szkołach

Nie jestem programistą ale ogólne teoretyczne podstawy znam, a klasa dzieciaka kolegi miała w szkole programowanie w C++… Tragedia. Nic nie rozumieją. Nikt z ich klasy też nie rozumie. Nauczyciel nie potrafi wytłumaczyć. Moim zdaniem uczenie dzieci programowania obiektowego w C++ to gwóźdź do trumny dla ich chęci do nauki programowania. Python także wcale taki przyjazny nie jest.
A programy typu Scratch to raczej takie…dziwne. Moim zdaniem programowanie powinno być programowaniem a nie jakimś udziwnianiem, Powinno się dzieci uczyć programowania w jakimś języku który nie jest obiektowy (sam nie pofrafię zrozumieć o co w tym chodzi i podejrzewam że wspomniany nauczyciel także niespecjalnie rozumie :slight_smile: )
Może coś w stylu starego dobrego BASIC`a tylko najlepiej po polsku, np.

Po prostu:
JEŚLI klawisz=ENTER to zrób to jeśli nie to WRÓĆ do Po prostu
JEŚLI WPISANO „cześć” do zmiennej tekst to DRUKUJ „Witaj uczniu”
JEŚLI WPISANO „k*rwa” do zmiennej tekst to DRUKUJ „Nie bluźnij, uczniu”
JEŚLI klawisz=ESCAPE to:
ODLICZAJ czas od 3 do 1
DRUKUJ czas
KONIEC ODLICZANIA
ZAKOŃCZ

Zaczynając od najłatwiejszego po najtrudniejsze, te dylematy wyglądają tak:

  1. Czy uczyć programowania?
  2. Czy uczyć języka programowania, który się przyda?
  3. Czy uczyć programowania w języku, który się przyda?

Szkoła podstawowa i nieprofilowane liceum, nie są miejscem na punkty 2 i 3, o ile nie chcemy zohydzić życia humanistom. Moim zdaniem, czyli kogoś kto zawodowo nie zajmuje się programowaniem, a kogo przeczołgano przez różne filozofie w różnych szkołach. :wink:

Problemem nie jest język, problemem jest to, że ktoś próbuje nauczyć dzieciaki programowania obiektowego na dzień dobry i jak mniemam robi misz masz z jakiegoś kursu.

Po prostu:
JEŚLI klawisz=ENTER to zrób to jeśli nie to WRÓĆ do Po prostu
JEŚLI WPISANO „cześć” do zmiennej tekst to DRUKUJ „Witaj uczniu”
JEŚLI WPISANO „k*rwa” do zmiennej tekst to DRUKUJ „Nie bluźnij, uczniu”
JEŚLI klawisz=ESCAPE to:
ODLICZAJ czas od 3 do 1
DRUKUJ czas
KONIEC ODLICZANIA
ZAKOŃCZ

Przecież tak działa Scratch i jest po polsku.

Nie wiem nie używałem nigdy Scratcha więc nie będę go komentował.
Nawet jeśli programowanie miałoby nie być po Polsku
to chyba łatwiej nauczycielowi wytłumaczyć język który ma prostszą składnię.
Tu przykłady hello world w wielu językach:
http://rosettacode.org/wiki/Hello_world/Text
W różnych basicach czy pythonie wystarczy jedna linijka. W pascalu 4 linijki ale dużo czytelniejsze niż c++.
A C++? Hello world ma zademonstrować po prostu że kompilator działa. Po co dzieciakowi na sam wstęp wiedza do czego służy include? Po co mieszać dzieciaką w głowach funkcjami skoro na matmie albo jeszcze nie mieli (podstawówka) albo nic z tego nie zrozumieli (liceum)?
Gdy uczeń się spyta po co to „int main”? Co nauczyciel może powiedzieć? „Bo tak trzeba i koniec”?
A jeśli nauczyciel mając do dyspozycji jakiś prostszy język, zainteresuje dzieci, pokaże im np. jak zrobić prostą grę, każdą linijkę kodu wytłumaczy „na chłopski rozum”, być może z 20 dzieciaków 5 się wciągnie z czego 3 pozostanie programistami-hobbystami a 2 sięgnie po C++.
Piszecie o humanistach. A humanistom programowanie się nie przyda? Np. do jakichś przekształceń tekstu, zliczania dat czy coś.

P.S. gdzieś kiedyś słyszałem/czytałem że do nauki lepsze jest samo C bez plusów. Prawda to? A może dla dzieciaków lepszy byłby Pascal? Przecież chyba jest używany do poważnych zastosowań?

Powinni uczyć programowania na diagramach.
Bez przyporządkowywania tego pod konkretny język.
Dziś jest taki język popularny za 5 lat może być inny a za 10 lat będzie jeszcze coś innego.

I właśnie chodzi o to że uczą tego co najpopularniejsze. A najpopularniejsze nie znaczy najlepsze (do nauki w tym przypadku)
Ale diagramy? Rysujcie diagRamy dzieci. Uczniowie: „nuudaa”
Chodzi głównie o zainteresowanie uczniów. żeby mogli poznać zastosowania programowania. Pokazać że można robić obliczenia,że można robić różne manipulacje tekstem że można wyświetlać obrazki i że można np. przesuwać te obrazki klawiaturą.
Scratch jak scratch ale w c++ kończy się zwykle na pierwszym podpunkcie czyli zbyt skomplikowanej matmie.

Kiedyś uczyło się w szkole podstaw właśnie C lub pascala, co to zmienna, pętla itd.
Programowanie obiektowe to raczej liceum/technikum o profilu ścisłym, związanym z informatyką.

Za czyich rządów to było? Ja pamiętam że miałem trochę PASCALa ale nikt i tak się do tego nie przykładal, byle by przejść do działu z grafiką :slight_smile:

Taak ?
To sobie rozrysuj krok po kroku program do obsługi relacyjnej bazy danych z założeniami, że ma obsługiwać zapytania, filtrowanie, tworzenie raportów i drukowanie, obsługę błędów i co tam sobie jeszcze wymyślimy.

Tylko nie na zasadzie 5 boksów ale tak jak przebiega program, np w 100 krokach.
Jestem pewien, że na 100% polegniesz na nudnych diagramach.

I nie potrzeba tu konkretnego języka, umiejętność rysowania i pisania po polsku.

Mając taki diagram (im bardziej szczegółowy tym lepiej), przełożysz go na dowolny język bez bólu i problemów.

No właśnie, jak uczyć?

Jeżeli będziemy uczyli na bazie Pythona i JavaScript, to się odezwą głosy, że na początek to za trudne. Lepiej uczyć podstaw jak pętle i warunki - w jakimś metajęzyku czy na grafach.

Gdy zaczniemy uczyć na grafach i w metajęzyku, to się odezwą głosy, że to nieprzydatne w rzeczywistości i należy uczyć w Pythonie i JavaScript bo są w miarę łatwe i ogromnie popularne, tj się przydadzą.

Może pora na szkoły, w których będzie się rozpoznawać talenty a potem uczyć dzieci, wg tych talentów? Ten będzie świetnym mechanikiem, tamten ma talent bilogiczny, ten jeszcze inny… Wiem że tak trudniej.

Jak dla mnie, naukę powinno zaczynać się od praktycznych języków, jak wspomniany Python czy JavaScript ale na te zajęcia powinny uczęszczać tylko dzieci z rozpoznanym talentem informatycznym.

Z mojego liceum o poszerzonym profilu informatycznym, garstka osób zajmuje się informatyką i te osoby chodziły na zajęcia z wypiekami na twarzy. Cała reszta chodziła na zajęcia trochę za karę, trochę żeby mieć to z głowy. Ich talent (może nierozpoznany) się marnował.

Może Rust. Niby zazwyczaj szybszy od Pythona.

C jest akceptowalne, dla studentów informatyki. Dzieciaków bym czymś takim nie katował.
Pascal? On już dawno na śmietniku historii i nikt go nie używa poza może paroma pasjonatami, którzy siedzą w piwnicy. I niech tam zostanie. Starczy, że mnie katowano TurboPascalem. Zresztą wątpię, aby na współczesnym systemie było łatwo uruchomić ten kombajn.

Ale chodzi o nauczenie dzieci programowania, żeby mogły chwycić koncept i móc go ewentualnie rozwijać. Nie ma nic lepszego jak nauka poprzez praktykę, przez stworzenie czegoś, co funkcjonuje i wykonuje swoje zadanie. Ty proponujesz teorię z rysowaniem grafów, które nic nie robią. To jest obiektywnie nuda. Oczywiście masz rację, że diagram pozwala napisać program w dowolnym (niemal) języku. Problem polega na tym, że nie nauczysz dziecka programowania grafem. Nauczysz dziecko robić grafy, ale nie zostanie ani krztyna sposobu myślenia, którego nauczyciel miałby oczekiwać.

Przecież uczy się podstaw co to zmienna, algorytm, pętla, instrukcja warunkowa.
Co to za różnica w jakim języku.

Samo programowanie to też dość specyficzne zajęcie i nie każdemu spasuje, nie każdy musi być programistą i nie każdy ma predyspozycje by nim zostać.

Dawny Borland już nie istnieje, ale sam Pascal jest w użyciu. W czerwcu 2008 roku firma Embarcadero przejęła CodeGear (dawny dział kompilatorów Borlanda) IDE komercyjne https://www.embarcadero.com/products/delphi jest rozwijane, jak i darmowa alternatywa https://www.lazarus-ide.org/

Można tworzyć nawet na urządzenia mobilne. Oczywiście to już nie ta skala co kiedyś, raczej niszowy produkt.

Pobudka !

Tak masz rację to jest historia:

A to są dzisiejsze realia:
Delphi community - język kodu to pascal.

Codetyphon 32/64 - język kodu też pascal.

Lazarus - toż to nadal pascal.

No to może problem z dzieciakami? O jakiej w ogóle szkole mówisz? Liceum? Ja sam miałem C++ w liceum (przy czym klasa była podziola na dwie grupy z dwoma prowadzącymi, jedna którym się chece to właśnie system binarny a potem C++. Druga grupa to był internet i Counter Strike :slight_smile:
Nie znając wcześniej żadnego języka programowania nie miałem problemów ani większość grupy (przy czym i tak to były same proste rzeczy).

I to nie jest „nauka programowania” tylko wstęp. A w zasadzie to nawet test na w miarę logiczne myślenie - czego niestety brakuje w szkołach. A potem taki po liceum idzie na studia i jest rewolucja (którą przeżyje lub nie, na politechnikach często nie przeżywają i dużo osób jest „odfiltrowanych”)

Tragedia, nic nie rozumieją? :smiley: Dzieciaki to nawet z funkcjami trygonometrycznymi mają problemy, i uwaga, większość rzeczy nie trzeba rozumieć, tylko być w stanie wykorzystać. Nawet w klasach matematycznych to nie jest jakaś czarna magia.

[quote=„MultiPivo, post:4, topic:655516”]Piszecie o humanistach. A humanistom programowanie się nie przyda? Np. do jakichś przekształceń tekstu, zliczania dat czy coś.
[/quote]

To tak nie działa, ktoś nie lubi/nie chce mu się matematyki/fizyki/itp to od razu jest nazywany humanistą. I to po prostu jest wymowką aby się nie uczyć albo usprawiedliwić słabe wyniki.

W normalnej szkole nie nauczysz się programować, po prostu tylko się wstępnie z czymś zapoznasz.

Dokładnie - nie ma znaczenia co to za język. Chodzi o podstawy a potem budowanie z tych klocków prostych rzeczy - i to moim zdaniem jest dobre, bo dajesz im pewne zasady których muszą się trzymać (czyli język programowania i podstawowe funkcje) i potem zadanie/problem do rozwiązania (teoretycznie to samo jest np. w matematyce, fizyce i innych naukach, ale w szkole niesetety to bardziej jest typu naucz nowy wzór, podstaw dane z zadania do wzoru i masz, a w programowaniu potrzebna jest większe zaangażowanie).

Nie każdy musi być programistą, jasne, a potem ktoś przychodzi do pracy i funkcja jeżeli w excelu to już za dużo dla „humianisty”. I potem taki człowiek godzinę ręcznie coś robi zamiast prostą funkcją zrobić to w minutę.

Ale co tam excel, ludzie po szkole mają problem z dodawaniem i odejmowaniem - naprawdę, ostatnio kupowałem od młodej dziewczyny truskawki - najpierw waga nie waży „nie mam jak panu sprzedać”, „proszę pani, niech pani najpierw spróbuje wytarować wagę”. Po dłużej chwili się udało, waga waży, ale nie podaje ile trzeba zapłacić! I problem, bo dziewczyna tylko wie jaką cenę ma za 1kg. Waga nie policzyła ile trzeba zapłacić więc nie da się sprzedać :slight_smile: Na szczęscie byłem sprytny i poprosiłem o odważenie dokładnie 1 kg.
Poważnie.

Po co mieszać dzieciaką w głowach

dzieciakOM

A humanistom programowanie się nie przyda? Np. do jakichś przekształceń tekstu, zliczania dat czy coś.

Humanista potrzebuje matematyki z zakresu podstawowych operacji plus równania z kilkoma niewiadomymi i podstawy IT jeśli nie chce płacić za np. „zakładanie maila”. To inny świat. :wink:

A może dla dzieciaków lepszy byłby Pascal?

Turbo Pascal wpisuje się w wariant nr.1 z mojego postu i wtedy to na pewno lepszy niż C++. Więc zależy co chcesz dziecka nauczyć i dlaczego. Moim zdaniem to bezsens i tak w tych czasach. Gdybym teraz miał naście lat i mógł wybrać to postawiłbym na Pytona bo jest i łatwy i nawet przydatny, do tego multiplatformowy.

I właśnie chodzi o to że uczą tego co najpopularniejsze.

CPP najpopularniejszy? Może w gamedevie. :stuck_out_tongue: Obecnie najpopularniejsze są języki interpretowane i zarządzane.

że można wyświetlać obrazki i że można np. przesuwać te obrazki klawiaturą.

To się zdecyduj czy chcesz żeby to był obiektowy czy nie. :stuck_out_tongue:

Przegapiłeś:

powinno być „trzebne”. Już nie skomentuje kompresowania cytatów jak w phpBB, discourse nie zezwala w jednej linii użyć [quote] z tekstem rozpoczynającym cytat.

nr 1
postawiłbym

No i jak to zwykle, o tym jak powinno być głos zabrali :clown_face:
Przepraszam, nie :clown_face: a eksperci. :joy: