eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJaki język?Re: Jaki język?
  • 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)

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: