-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed0
0.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!border1.nntp.dca.gi
ganews.com!nntp.giganews.com!nx01.iad01.newshosting.com!newshosting.com!newsfee
d.neostrada.pl!unt-exc-01.news.neostrada.pl!atlantis.news.neostrada.pl!news.neo
strada.pl!bozon.softax.pl!news
From: Sebastian Kaliszewski <s...@r...this.informa.and.that.pl>
Newsgroups: pl.comp.programming
Subject: Re: Jaki język?
Date: Tue, 23 Feb 2010 13:10:21 +0100
Organization: TP - http://www.tp.pl/
Lines: 120
Message-ID: <v...@b...softax.pl>
References: <hlkh9u$9ji$1@nemesis.news.neostrada.pl>
NNTP-Posting-Host: 83.18.189.42
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: atlantis.news.neostrada.pl 1266924757 17500 83.18.189.42 (23 Feb 2010
11:32:37 GMT)
X-Complaints-To: u...@n...neostrada.pl
NNTP-Posting-Date: Tue, 23 Feb 2010 11:32:37 +0000 (UTC)
User-Agent: Thunderbird 2.0.0.23 (X11/20090817)
In-Reply-To: <hlkh9u$9ji$1@nemesis.news.neostrada.pl>
X-Original-Bytes: 6765
Xref: news-archive.icm.edu.pl pl.comp.programming:185067
[ ukryj nagłówki ]slawek wrote:
> Pytanie jest tak proste, że aż jest to "porażające".
Jak widać nie jest proste. Za to niektóre odpowiedzi zaiste porażające.
Niektóre to po prostu kategoria "zapomniał wół jak cielęciem był" ale o
niektórych nawet nie wiem co sądzić -- chyba świadczą o poważnym
oderwaniu od rzeczywistości :)
>
> Jaki język dla 10 latka, aby uczył się programować? Coś, co dobrze
> pokaże jakie naprawdę są możliwości komputerów.
>
> Basic? Czy raczej Python?
W przeciwieństwie do większości wypowiadających się ja akurat mam nieco
doświadczenia w uczeniu dzieci właśnie 10-14 letnich. Bardzo, zresztą,
zdolnych dzieci (ale dzieci a nie kosmitów).
Dzieci w wieku mniej-więcej 9-10 lat osiągają zdolność abstrakcyjnego
myślenia takiego jak dorośli (nawet te baaardzo zdolne). Co oznacza że
są w ogóle w stanie programować w naszym (dorosłym) rozumieniu tego
słowa (czyli zapisać algorytm "własnymi słowami", dzieci młodsze
potrafią "popychać żółwia" ale zapisania algorytmu nie ma się co
spodziewać). Ale należy pamiętać, że w wieku 10lat jest to zdolność
świeża i nigdy nie będzie poparta doświadczeniem w posługiwani się nią
ani wiedzą tej zdolności wymagającej.
Zatem, choć dziecko jest w stanie pojąć programowanie, nie może się ono
opierać o jakieś wcześniej poznane abstrakcyjne konstrukcje, bo takich
nie ma (wcześnie poznane konstrukcje były konkretne -- zbór 6 jabłek).
Czyli, np nie ma co bazować na pojęciach "wyższych rzędów" takich jak
funkcja, relacja, itp. Te pojęcia mogą co najwyżej pojawić się
naturalnie, ale bez opierania się o ich definicję. Można bazować na
pojęciach podstawowych, takich jak liczba, zbiór, figura geometryczna.
Nie należy też np. zaczynać od takich rzeczy jak wskaźniki.
Przy czym dziecko (w ogóle prawie każdy początkujący programista) nie
rozumie na czym polega coś takiego "elegancja kodu". Nie rozumie po co
są jakieś wcięcia, itp. Kod początkującego często jest chaotyczny przy
czym wygląda jak bezładny ciąg znaków z bardzo małą ilością
jakichkolwiek odstępów (a jeśli te odstępy są to często w dziwnych
miejscach). Odpadają zatem jęzki typu "executable line noise" i języki
których skłania niejaką zachęca do zrobienia śmietnika, pomieszania
różnych rzeczy itp. Innymi słowy odpadają PHP i Perl. Im język
porządniejszy tym lepiej (czyli Python, Pascal)
Nie można też dziecka zawalić kupą rzeczy których znaczenia na początku
nie zrozumie ani (zresztą) nie chcemy mu objaśniać. To odwala wszelkie
języki w których zrobienie czegokolwiek wymaga głębszej magii i/lub
odwołania np. do 20 różnych bibliotek, utworzenia 20 pośrednich obiektów
itp. Czyli z jednej strony odpada C (z uwagi na reprezentację napisów --
albo będą niepojęte magiczne gwiazdki albo trzeba by tłumaczyć wskaźniki
które na tym etapie są zbyt trudne) a z drugiej Java i jej brat C#.
Przy tym dziecko jest mniej cierpliwe od dorosłych i chce w rozsądnym
dla niego czasie zobaczyć efekty tego co robi. Często warto znaleźć lub
samemu przygotować jakąś bardzo prostą w obsłudze bibliotekę której
dziecko będzie używać. Często tak robiłem dla swoich podopiecznych --
np. prosta biblioteka w której ekran był reprezentowany jako tablica
2-wymiarowa i do której każdy wpis oznaczał zmianę konkretnego punktu na
ekranie.
Z doświadczenia własnego, z "dorosłych narzędzi" polecam Pythona lub też
Pascala (FPC). Można się też pobawić Smalltalkiem. Albo po prostu
systemy dedykowane dla dzieci -- tu i Logo też jest fajne (to
uproszczony język funkcyjny) i wiele wiele innych o których była już w
tym wątku mowa. Choć system dorosły ma tę fajną zaletę, że można
powiedzieć, że w tym się pisze "pradziwe" programy -- to tak samo jak
można mieć dziesięć samochodzików zabawek, ale poprowadzenie
prawdziwego, dorosłego samochodu (choćby po pustym parkingu) to jest to!
I rzecz ważna: typowy dzieciak nie będzie specjalnie podniecony jakimś
czysto tekstowym wynikiem. Grafika dużo silniej działa na wyobraźnie a
więc i na motywację. Z mojego doświadczenia wdzięczne tematy to automaty
komórkowe (life, symulacja płomienia (y[i,j] = (x[i,j] + x[i-1,j-1] +
x[i+1,j-1] + x[i,j-1]) / 4 - 1), rozchozenie się pożaru, itd) oraz
(proste!) fraktale typu płatek Kocha czy drzewko Pitagorasa.
>
> C++ wydaje się za trudny, C tym bardziej. Fortran/Algol - do muzeum.
> Brainfuck/Devil... nie, nie chcemy tego dzieciom robić.
>
> Lego... Lisp... Ada... Paszczal/Modula - z tego wszystkiego to chyba
> Paszczal jeszcze byłby wcale dobry (a jest jakiś kompilator na
> GPL/LGPL?), choć ma w sobie rzeczy denerwujące.
Paszczal jest ok i jest FPC.
>
> Kepler. Sorry, fajne, fajne... ale to chyba inna bajka.
>
> Java/Javowate - no, nieźle, nieźle... Java Script jest w miarę prosta -
> ale co można pisać w tym? Tzn. co można pisać, co będzie atrakcyjne dla
> 10-latka?
Java "ma złą kulturę" Java script jest zbyt "technologiczny".
>
> Prolog? Prosty, elegancki. Zaczyna mi się podobać ten pomysł. Tylko czy
> ktoś kto umie pisać programy w Prologu umie pisać programy? Z drugiej
> strony - coraz bardziej mi się to podoba.
Prolog niby fajny, ale nie wiem czy nie zbyt obciążający i wymagający
podstaw teoretycznych. Żeby nie było -- "czemu to jedno mi zaraz
rozwiązał a to obo miele już od godziny?" No i jest mało wizualny -- dla
typowego dzieciaka coś nie nie wypluje obrazka jest mało ciekawe.
>
> Ma ktoś jakieś pomysły?
Albo dedykowane dla dzieci albo Python + np. pygame albo Paszczal +
samemu napisana mała i prosta biblioteczka.
\SK
--
"Never underestimate the power of human stupidity" -- L. Lang
--
http://www.tajga.org -- (some photos from my travels)
Następne wpisy z tego wątku
- 23.02.10 11:48 Grzegorz Krukowski
- 23.02.10 12:09 Krzysiek Kowaliczek
- 23.02.10 14:35 Mif
- 23.02.10 14:38 Mif
- 23.02.10 14:47 Mif
- 23.02.10 14:55 Mif
- 23.02.10 14:58 Mif
- 23.02.10 18:08 jacem
- 23.02.10 18:21 jacem
- 24.02.10 06:47 Krzysztof Warunek
- 25.02.10 00:27 slawek
- 25.02.10 00:44 slawek
- 25.02.10 00:33 slawek
- 25.02.10 00:27 slawek
- 25.02.10 00:50 slawek
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-01 "Chciałem zamówić kurs tym"
- 2024-11-30 Windykatorzy ścigają spadkobierców z mandat nieboszczyka za przekroczenie prędkości???
- 2024-11-30 Łódź => Technical Artist <=
- 2024-11-30 Lublin => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-30 Warszawa => Microsoft Dynamics 365 Business Central Developer <=
- 2024-11-30 Bieruń => Team Lead / Tribe Lead FrontEnd <=
- 2024-11-30 Zielona Góra => Senior PHP Symfony Developer <=
- 2024-11-30 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-30 Lublin => Spedytor międzynarodowy <=
- 2024-11-30 Warszawa => Mid IT Recruiter <=
- 2024-11-30 Warszawa => Fullstack Developer <=
- 2024-11-30 Żerniki => Dyspozytor Międzynarodowy <=
- 2024-11-30 Warszawa => System Architect (background deweloperski w Java) <=
- 2024-11-30 Katowice => Key Account Manager (ERP) <=
- 2024-11-30 Immatrykulacja...