10-latek chce się uczyć programowania - proszę o porady

0

Cześć!

Postanowiłem zarejestrować się na forum bo nie mam doświadczenia w edukowaniu dzieci. Mój 10-letni siostrzeniec chce się uczyć programować bo "chce robić gry" :)

Może zacznę od mojego doświadczenia:

  • w latach 80. nauczyłem się języka Basic na komputer BBC Acorn Master 128 (+ trochę liznąłem assemblera)
  • potem był Amos (taki rozbudowany Basic) na Amigę 500 (+ trochę assemblera) (zrobiłem 3 komercyjne gry)
  • w szkole informatycznej uczyłem się Turbo Pascala i C++
  • od mniej więcej 2000 roku na dobre utknąłem w PHP+Mysql+Javascript (masa projektów, w tym 2 gry browserowe)
    To tyle o mnie, więcej doświadczenia nie mam.

Nie wiem od czego zacząć uczyć to dziecko bo:

  • objaśniam mu html i, choć wykazuje wielki entuzjazm, to do końca nie ogarnia, że jak otwarł jakiegoś taga to musi go zamknąć.
  • uczę go podstaw PHP (zmienne liczbowe i tekstowe, pętla for, działania na zmiennych)
    Chłopak jest za mały, nie chwyta tego, mówi mi, że rozumie, ale tak naprawdę to potrafi tylko zmodyfikować przykład, który mu napisałem.
    Nie zna podstaw komputera, czym jest serwer, ftp, typy i rodzaje plików w Windows, składnia języka programowania itp.

Mam kilka pomysłów, ale nie wiem co robić dalej:

  • mogę zainstalować mu emulator BBC i uczyć go prostego Basica (ja tak zaczynałem), to jest spoko system dla początkujących bo Basic jest rozbudowany, ma łatwy dostęp do trybu graficznego, nie to co Basic na C64, ale... Basic na ośmiobitowce do niczego mu się w przyszłości nie przyda...
  • kontynuować to html+php? To mu się akurat przyda do tworzenia stron, ale czy to nie jest zbyt skomplikowane dla dziecka?
  • zainteresować się w czym robi się apki na Androida i pójść w tym kierunku? Sam bym na tym skorzystał, bo umiejętność tworzenia aplikacji mobilnych by mi się przydała
  • uczyć go silników do tworzenia gier - Unity itp????
  • olać powyższe i robić z nim gierki pseudoflashowe w Scratch?

Doradźcie programiści proszę!
Może ktoś ma doświadczenie z dziećmi.

Pozdrawiam i Wesołych Świąt
Adam (wujek 10-letniego Janka)

4

Od czegos podstawowego gdzie szybko widac efekt: Scratch, cos jak grafika zolwia w Logo, jakas gra z pseudoprogramowaniem (np. Colobot kiedys) itp.

5

Zdecydowanie Scratch 3.0 (https://scratch.mit.edu/). Jest do tego swietna ksiazka: https://nostarch.com/superscratch3 oraz zestaw kart do nauki: https://nostarch.com/scratchcards3. Jest tez polskie tlumaczenie: https://helion.pl/ksiazki/scratch-komiksowa-przygoda-z-programowaniem-wydanie-ii-the-lead-project,scrak2.htm#format/d

Zaleta Scratcha jest to, ze efekty masz od razu, a napisanie prostej gry w Scratchu, to raptem kilka minut "klepania" i masz efekty:

8

Na pewno nie próbuj dzieciakowi, który jeszcze za wiele nie ogarnia wciskać pisania na androida, bo to jest coś dość skomplikowanego i bardzo kiepsko to widzę. Efektów bym się nie spodziewał, za to młody szybko się może zniechęcić.

4

A może po prostu 10 lat to jeszcze za wcześnie? Poczekaj z 3 lata i wróć z tematem. A do tego czasu lego technic i przyjaciele...

1

@homix73:

BBC Acorn Master 128

Też taki miałem! Aż się kręci łezka w oku. A kilka miesięcy temu pojawił się nawet na CTFie! https://ctftime.org/writeup/20857 (w 132 znakach wyświetlić na ekranie QRCode).

Wracając do temu: jw, Colobot, Scratch, może Lego Mindstorms?

10

@Manna5: ty chyba jesteś w podobnym wieku, co wspomniana w wątku osoba. Podpowiesz coś o swoich pierwszych krokach w programowaniu? My, jako starsi, mamy trochę inną perspektywę.

5

Wydaje mi się że nauka programowania to ostatnia rzecz jaką powinien robić 10 latek. Chcesz żeby wyrósł na niewychodzącego z piwnicy nerda? Lepiej niech się języków obcych uczy, najlepiej dwóch. Przyda mu to się zawsze, a na programowanie jeszcze przyjdzie czas.

4

@PerlMonk, Najpierw Baltie, ale ze względu na małe możliwości szybko przeszedłem na Pascala, który też nie okazał się dobrym wyborem, bo nie umiałem wtedy (miałem 8 lat) ogarnąć pascalowych bloków kodu, i musiałem wszystko robić nawet bez ifów - choć przy Pascalu zostałem dużo dłużej niż przy Baltiem. Przełom nastąpił, gdy w wieku 9 lat odkryłem Batcha. Jego składnia była bardzo prosta, do tego pozwalał na łatwe wykonywanie operacji na plikach (czego nie było w Baltiem i czego nie potrafiłem zrobić w Pascalu), nic nie trzeba było doinstalowywać, programy w nim napisane działały na każdym komputerze (nie zetknąłem się jeszcze wtedy z Linuxem) - mogłem chwalić się swoimi dziełami w szkole, gdy pani się odwróciła. Ogólnie polecam Batcha (najlepiej zacząć od komend echo, set, goto, może choice, jak choice to też if errorlevel a nawet if "x"=="y", obowiązkowo procentowe odwołania do zmiennych, cls, color i operacje na plikach - for i przekierowania odłożyć na później). Jeśli zapragnie interfejsu graficznego, najprostszą opcją będzie HTML w parze z prostym JSem. Wracając do historii, potem odkryłem C (zafascynowała mnie możliwość generowania plików EXE, które były wtedy dla mnie synonimem profesjonalnego programowania) i tak już zostało.

1

@Manna5: co ten dzieciak nabroił że chcesz go javascriptem karać? :/

3
kzkzg napisał(a):

@Manna5: co ten dzieciak nabroił że chcesz go javascriptem karać? :/

To, że toś umie JS nie znaczy, że zaraz będzie pisał w nim padający śnieg ;) .
Zamiast PHP poleciłbym Perla i książki ze zwierzętami od O'Reilly. Sam uczyłem się stąd
https://helion.pl/ksiazki/perl-wprowadzenie-wydanie-iv-randal-l-schwartz-tom-phoenix-brian-d-foy,perlw2.htm#format/d
perlw2.jpg
W książce są podane fajne i proste przykłady operacji na plikach i tekście. Można napisać sobie plik w notatniku i w tym samym notatniku obejrzeć wynik działania Perla. Ponieważ Perl używa wywołań systemowych jak bash, można się spodziewać zachowania takiego samego jak w przypadku poleceń typu exec, więc obsługa systemu przy okazji wejdzie do głowy.
Podobnie przyjazny pod tym względem jest Javasrcipt - można zrobić sobie prosty plik HTML i JSem grzebać: dodawać, usuwać i edytować elementy strony, rysować itp.

3

Scratha odradzam, bo później może być dziwnie jak się przyjdzie do prawdziwego języka. Silniki gier za trudne, tak jak pisanie na androida. Najbardziej polecałbym Pythona, bo ma prosta składnie między innymi.

6

Podziwiam Twojego siostrzeńca. Dziecko, które samo chce się uczyć jest warte swojej wagi w złocie ;-)

Wg mnie, i tak też edukuję moje dzieci, najbardziej wartościowe jest nauczenie dzieci uczenia się. Przede wszystkim zadbanie aby lubiły się uczyć. System polskiej oświaty i nauczyciele wkładają dużo wysiłku aby w dzieciach pęd do wiedzy zabić. Tobie proponuję abyś go w dziecku pielęgnował. Kolejnym krokiem jest nauczenia dziecka zdobywania wiedzy na własną rękę. Niech sam szuka. Pokaż mu jak. Jak używać google, YT, IG, FB. Jak korzystać z forum z quora. Niech nie boi się zdawać pytania publicznie. Niech drąży temat. Niech wnika. Niech dyskutuje jeśli ma odmienne zdanie. Niech potrafi go bronić argumentami. Niech potrafi przyjąć krytykę i odmowę. Naucz go samodyscypliny, wyznaczania celów i ustalania priorytetów. Dzielenia dużych celów na małe kroki.

Tak wyposażony nauczy się wszystkiego i spełni swoje marzenia :-)

Trzymam kciuki.

3
Marcin Badtke napisał(a):

nauczyciele wkładają dużo wysiłku aby w dzieciach pęd do wiedzy zabić.

Nauczyciel jest wykonawcą programu nauczaniu. Nie jest jego winą, że program nauczania jest durny. Łatwo jest krytykować nauczycieli jak się nie pracowało w tym zawodzie parę lat.

Zawodu już nie wykonuję, ale nie przypominam sobie, żebyśmy siedzieli godzinami na naradach jak na siłę zabić w dzieciakach pęd do wiedzy.

3
TheLearner napisał(a):
Marcin Badtke napisał(a):

nauczyciele wkładają dużo wysiłku aby w dzieciach pęd do wiedzy zabić.

Nauczyciel jest wykonawcą programu nauczaniu. Nie jest jego winą, że program nauczania jest durny. Łatwo jest krytykować nauczycieli jak się nie pracowało w tym zawodzie parę lat.

Zawodu już nie wykonuję, ale nie przypominam sobie, żebyśmy siedzieli godzinami na naradach jak na siłę zabić w dzieciakach pęd do wiedzy.

Może Marcin wyraził się zbyt stanowczo, jednak poruszył pewien ważny problem: sposób przekazywania wiedzy. U jednego nauczyciela PO chodziliśmy do parku, pokazywał nam różne rzeczy itp. Inni nauczyciel tego samego przedmiotu to kopiuj- wklej. Wszystkie jego zajęcia polegały na dyktowaniu materiału do zeszytu przez całą lekcję. Efekt? Więcej pamiętam u tego pierwszego. Nauczyciele mają niewiele do powiedzenia w kwestii materiału, ale za to mogą próbować czynić ten materiał lepiej utrwalonym.

3

Moim marzeniem było zostać programistą niestety słabe zdolności mi to uniemożliwiają. Postanowiłem uczyć programowania mojego 8 letniego syna. Pierwsza lekcja w styczniu 2021 to uświadomienie mu że są inne systemy liczbowe. Druga to potęgowanie dwójki i jest już lepszy ode mnie.

4

Ja bym polecił frontendowy JS. A właściwie JS + konsola lub canvas.
Bez bibliotek, po prostu samo kodowanie w tym co daje przeglądarka.
HTML-a można bardzo ograniczyć.
Mam na myśli coś takiego: https://dev.to/foqc/mandelbrot-set-in-js-480o
Można kodować w Notatniku / VS Code / Geany / cokolwiek innego.
A przebudowanie aplikacji ograniczyć do naciśnięcia F5.

2
0xmarcin napisał(a):

A może po prostu 10 lat to jeszcze za wcześnie? Poczekaj z 3 lata i wróć z tematem. A do tego czasu lego technic i przyjaciele...

Ja swoje pierwsze programy pisałem kilka miesięcy przed dziesiątymi urodzinami. :P Zaczynałem w Turbo Pascalu.
Bawiłem się też wtedy Q-BASIC i LOGO.

1

Ja mając z 11 lat uczyłem się tworząc w Ruby skrypty do RPG Makera (np. zmiana warunków pogodowych, system walki itd.). Może to też jest jakaś opcja.

4

W wieku 10 lat, mózg jeszcze dość szybko wszytko chłonie i łatwo wyrabia nawyki.

Dlatego, moim zdaniem błędem jest zaczynanie od języków wysokopoziomowych.

Na sam początek, na pierwszy dzień najlepszy byłby kod maszynowy i zaznajomienie z budową komputera, potem assembler, potem C / C++ i dopiero dalej takie języki jak Java, Rust, etc.

Jeżeli dzieciak będzie potrafił programować niskopoziomowo, znajdzie się w prawdziwej elicie programistów.

1

zastanawialem sie, jak szybko zmieni sie to w klasyczny dick contest :D

ps. moja propozycja wydaje sie najlepsza

2

Zgadzam się z tym, że asembler może mieć charakter edukacyjny. Dobrym ćwiczeniem jest napisanie prostego programu w C i wygenerowanie na jego podstawie kodu asemblera. Nie każdy z resztą wie, że kompilator tłumaczy kod C/C++ na asembler (tak w dużym skrócie) i dopiero z tego generuje program. Można zobaczyć jak poszczególne flagi kompilatora wpływają na program. Randall Hyde w książce "Profesjonalne programowanie. Część 2. Myśl niskopoziomowo, pisz wysokopoziomowo" pokazwał takie przykłady.
Sam z takiej zabawy zapamiętałem, że literały są trzymane w innym miejscu w pamięci, niż dane z innych źródeł (np. wczytane z dysku podczas działania programu). Nie dziwi wtedy tablica wartości funkcji sinus itp. wpisana na sztywno do programu :)

5

Mój 10-letni siostrzeniec chce się uczyć programować bo "chce robić gry" :)

OP ostatni raz był widziany 13 dni temu, więc pewno już tego nie przeczyta, ale się wyłamię i powiem, że zamiast zaprzęgać młodego od dzieciństwa do kieratu i wyścigu szczurów, niech da mu odetchnąć i spędzić przyjemne dzieciństwo. Jakby powiedział, że chce zostać strażakiem, to kupiłbyś mu gaśnicę?

Póki co, najlepiej po prostu śledzić jego postępy w nauce matematyki szkolnej i ewentualnie jeżeli jest wystarczająco zdolny, podsuwać mu z wyprzedzeniem materiał z wyższych roczników. A nad programowaniem zastanowić się jak będzie miał przynajmniej te 13/14 lat.

A przede wszystkim, niech się wybiega na boisku, czy pójdzie na jakieś zajęcia sportowe (karate, pływanie, cokolwiek), bo tego właśnie najbardziej brakuje współczesnym dzieciom. Rośnie cała generacja nieruchawych klusek, przylepionych wiecznie do ekranu, uzależnionych od małego migotaniem pikseli. A o tym jak tragicznie to wpływa na zdolności zapamiętywania i długotrwały koncentracji piszą już całe książki. Jak to jest, że latem, na idealnej pogodzie, sobie sam idę na Orlik pobiegać i porobić okrążeń i sprintów (i coś pokopać przy okazji) i świeci on pustkami, nie zaszczyci go w tym czasie żaden młody człowiek (co najwyżej gdzieś późno amatorzy papierosów się zbierają, co znać po niedopałkach). Kiedyś to było nie do pomyślenia ażeby boisko stało odłogiem. Czasem wyciągnę młodego kuzyna (który mieszka dosłownie naprzeciw, po drugiej stronie drogi) i po 20 minutach ma dość. Ale przed konsolą, TV czy smartfonem to potrafiłby siedzieć godzinami. I, rzecz jasna, on też mówi, że "zostanie informatykiem", choć dantejskie sceny u wujostwa się dzieją, gdy go usiłują zagnać do zadań z ułamków.

Żeby nie było, ja też spędziłem przed ekranem kawał dzieciństwa. A że nikt mnie do sportu i ruchu nie garnął to właśnie żałuję mocno, bo przez to wiele lat byłem tym popychadłem bez formy i dopiero jako dorosły mozolnie zbudowałem kondycję fizyczną. Łatwiej by mi było jakbym zaczął wcześniej.

2

@Spearhead:

Jakby powiedział, że chce zostać strażakiem, to kupiłbyś mu gaśnicę?

No nie wiem. Jak dziecko lubi pilkę nożną to się je zapisuje do drużyny. Jak lubi malować to na zajecia plastyczne. Jak grać/śpiewać to do szkoły muzycznej itd ;)

Rośnie cała generacja nieruchawych klusek, przylepionych wiecznie do ekranu, uzależnionych od małego migotaniem pikseli. A o tym jak tragicznie to wpływa na zdolności zapamiętywania i długotrwały koncentracji piszą już całe książki

Prawda, ale to chyba nijak sie ma do opisanej sytuacji. To jest taki sam problem jak z TV 20-30 lat temu. Problem jest jeśli ktoś siedzi przed ekranem i zajmuje się jakąś niezbyt wymagającą rozrywką czy szybkimi zmianami kontekstu. Nijak się to ma do celowego działania jakim jest programowanie. Powiedziałbym że wręcz przeciwnie - programowanie rozwija zdolności intelektualne, koncentracje i zapamiętywanie.

2

No nie wiem. Jak dziecko lubi pilkę nożną to się je zapisuje do drużyny. Jak lubi malować to na zajecia plastyczne. Jak grać/śpiewać to do szkoły muzycznej itd ;)

@Shalom programowanie to jednak trochę wyższy poziom abstrakcji i poziomu trudności niż kopanie piłki, śpiewanie czy bazgranie po kartce. Te trzy rzeczy już w jakimś stopniu i 6-latki są w stanie ogarniać. Dlatego pisałem, żeby jednak zaczekać do tych 13/14 lat, co najwyżej popatrzeć, czy można mu podsunąć matematykę z wyższej klasy.

Poza tym, podejrzewam, że wcale tak naprawdę nie interesuje się programowaniem, tylko lubi (jak każdy dzieciak) grać i zapytał wujka, skąd się gry biorą. Przecież sam OP pisze

Chłopak jest za mały, nie chwyta tego, mówi mi, że rozumie, ale tak naprawdę to potrafi tylko zmodyfikować przykład, który mu napisałem.

Polecanie mu całych ścieżek rozwoju, z assemblerem włącznie, to jakieś wariactwo.

O, inna rzecz. Niech się przykłada do angielskiego. To będzie niezbędne w informatyce, mocno przydatne w życiu nawet jak trafi gdzie indziej, a w tym wieku umysł właśnie jest bardzo chłonny na jego naukę - bardziej niż na abstrakcyjno-logiczne rzeczy pokroju programowania, czy bardziej zaawansowanej matematyki, do których mózg musi jednak bardziej dojrzeć,

Notabene, w tym wieku mniej więcej razem z siostrą czytywaliśmy klasyk My New Hobby English i do dziś pamiętam to "Peter is in America now" z pierwszej lekcji. Siostra poszła potem na filologię.

1

jak dzieciak jest w porządku to bym mu po prostu pokazała szafkę z książkami i niech se przegląda i wybiera co go zainteresuje

4

programowanie to jednak trochę wyższy poziom abstrakcji i poziomu trudności niż kopanie piłki, śpiewanie czy bazgranie po kartce. Te trzy rzeczy już w jakimś stopniu i 6-latki są w stanie ogarniać

Scratch? Lego? Jest wiele około-programistycznych rzeczy dla dzieci. Moi znajomi prowadzą zajęcia z robotyki/programowania dla dzieci i idzie im ok (jeśli kogos interesuje co tam oferują to https://robostudio.pl/ ) Nie trzeba przecież kogoś uczyć od razu asemblera, tak samo jak nie trzeba od razu grać w orkiestrze albo kopać piłki w ekstraklasie ;)

1

Ostatnio odkryłem aplikacje mimo.
W mimo można nauczyć się JavaScript oraz python.
Jest tam wszystko bardzo bobrze wytłumaczalne jak co działa.

5

Jak na razie mój syn został testerem prostych gierek w js (kółko i krzyżych, zgadnij liczbę od 1-100), które dla niego pisze. Tłumaczyłem też zmienne i działania na nich ale się sam pogubiłem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1