Nauka programowania od czego zacząć?

W dniu 2011-09-16 17:26, Piotrek pisze:

Otóż to. Programowanie to nie nauka języka, składni i poleceń, to sposób myślenia o problemie, o możliwych zdarzeniach, i możliwych sposobach rozwiązania ich. Najpierw jest algorytm, i sposób jego tworzenia, a dopiero potem można myśleć o jakimś sposobie jego przelania w jakiś język który coś wykona. Cała sztuka to umiejętność projektowania algorytmu. Choćby to było na kartce, i choćby to miał być algorytm "jak zrobić jajecznice"

Reply to
BartekK
Loading thread data ...

Lelek@ napisał:

Ma to też drugą stronę. Jakiś czas temu pomagałem córce znajomych w (szkolnej) nauce C++ (a może C, nie pamiętam dokładnie). Liceum, jedno z lepszych, a ona z tych najzdolniejszych i najbardziej ambitnych. Jakaś taka podstawowa numeryka, liczby pierwsze, równania kwadratowe itp. Zdziwiła się bardzo informacją, że w tym lub podobnym języku napisane jest Windows, Office i właściwie wszystko czego używa. "To musi byc okropnie trudne, tak wszystko zaprogramować żeby działało i wyglądało" -- na twarzy miała takie współczucie, że chyba gotowa była w tym momencie zapłacić Gatesowi dziesięć razy więcej niż żąda. Musiałem jej wytłumaczyć na czym w praktyce wygląda pisanie programów. W szkole nikt jej tego nie powiedział.

Reply to
Jarosław Sokołowski

Pan Jacek napisał:

[...]

Ale tego akurat w żadnym wypadku nie można nazwać pedofilią.

Reply to
Jarosław Sokołowski

Każdy odpowie inaczej, ja też dorzucę swoje trzy grosze.

Nie wiem czy 8 lat to nie jest za wcześnie. Ja zacząłem programować gdzieś tak w wieku 10-11 lat. Zaczynałem od BASIC-a na Spectrum i Atari. Przy czym BASIC na spectrum był teoretyczny (programy pisałem na kartce) ze względu na brak dostępu do sprzętu.

Następnie po kilku latach po przesiadce na peceta był Pascal. To wymagało całkowitego przeprogramowania myślenia na strukturalne konstruowanie algorytmów, zdziwienie że nie ma numerowanych linii i da się bez goto. W zasadzie w tym wieku (miałem z 15 lat) można się szybko przestawić i BASIC mi krzywdy nie zrobił, a dodatkowo znam zalety programowania strukturalnego.

Natomiast uważam za swój największy błąd zajmowanie się Pascalem zamiast C. Po przyjęciu nawyków pascalowych przejście do C jest niesamowicie trudne i w zasadzie nigdy mi się w pełni nie udało tego zrobić, bo C zająłem się już znacznie później. Odpowiednio wczesne uczenie alokacji pamięci i uważania na indeksowanie zmiennych (aby program nie wywalał się z niewiadomego powodu), odpowiednio wczesne zwracanie uwagi na pewne galimatiasy konstrukcyjne pozwoliłoby mi na kodowanie w C "bez zastanowienia", jednak tego etapu nigdy nie osiągnąłem, gdyż C uczyłem się w wieku, kiedy umysł nie chłonie wszystkiego i wiele rzeczy się momentalnie zapomina, a potem godzinę szuka błędu typu wyjście za tablicę o jeden rekord. Dlatego byłem zmuszony po wejściu windowsa przejść na Delphi zamiast jakiegoś C++ i to wspominam ze smutkiem. Tutaj nauczyłem się dopiero myślenia obiektowego (bo Delphi jest obiektowe, a Pascal nie był) na tyle, na ile musiałem. Potem miałem okres skutecznego programowania w czystym C, ale to wymagało częstego sięgania do książek, gdyż zapominałem pewne sprawy bardzo szybko.

Co ja mogę doradzić?

  1. Zacznij od nauki Logo. Niech córka spróbuje pisać proste programy sterujące żółwiem, potem może wprowadzać bardziej skomplikowane elementy, pętle, instrukcje warunkowe (rysowanie jakichś wielkich ażurowych wzorków). Trzeba zachęcić do zabawy w eksperymentowanie - co będzie gdy zmienię tę linię w taki sposób i dlaczego?

  1. Przejdźcie potem na czyste C i realizujcie np. książkę "Algorytmy" z Helionu. Niech to będzie czyste C, nieobiektowe, z samym stdin i stdout. Tak, żeby wiedzieć co to są pętle for, do-while, repeat-until, co to jest funkcja, jak grupować kawałki kodu w funkcje, i tak dalej. Do tego np. rekurencja.

  2. Jak czyste C opanujecie dość dobrze, lecimy C++ (uważam i będę uważał, że od tego języka trzeba się zacząć uczyć programowania obiektowego). Też na stdin/stdout. Realizujemy myślenie obiektowe, czyli konstruowanie obiektów, dziedziczenie.

  1. Potem można robić GUI i nauczyć się odniesienia obiektowości do elementów tegoż GUI.

Jeśli córka to zrealizuje (ale to kwestia lat), to nie będzie miała żadnego problemu z przejściem na dowolny język programowania, bo elementy, schematy i konstrukcje są w zasadzie identyczne, a zmienia się tylko składnia i detale. Natomiast to, że opanuje C/C++ z dobrym zrozumieniem granicy między nimi będzie zaletą i atutem, bo wszystkie nowsze języki są łatwiejsze i myśleć tam trzeba mniej. Jak na studiach każą jej przeliczyć 1500 wyników badań w taki sam sposób, to napisze sobie stronę kodu w R albo Octave i zrobi obliczenia w 15 minut idąc potem do koleżanki, a inni studenci będą 5 nocy obklikiwać je w mozolnie zrobionych arkuszach. Jak trzeba będzie przekonwertować 1500 zdjęć, to napisze sobie skrypt shellowy do imagemagicka, zamiast się zastanawiać nad makrami albo ręcznie przerabiać każde. Do takich przykładowych ułatwień życia ma służyć szaremu człowiekowi umiejętność programowania.

Nigdy też nie podzielałem i nie podzielam opinii, że należy się uczyć programowania od programowania obiektowego, co spotyka się w niektórych książkach. Znam osoby, które tak zrobiły i mają wielkie problemy z zakodowaniem pewnych rzeczy (generalnie wszystko robiłyby obiektowo).

Luke

Reply to
Luke

W dniu 2011-09-17 04:05, Maciek pisze:

Umiejętność formatowania tabelek w wordzie umożliwia zdobycie pracy jakieś 2x lepiej płatnej niż bycie nauczycielem w szkole.

Dlatego kumaty nauczyciel informatyki (czy jak ten przedmiot się teraz nazywa), to rzadkość. Czasami się trafi jakiś pasjonat, ale niezwykle rzadko.

Reply to
Tomasz Pyra

Wiesz moja córka już mówi płynnie po angielsku i uczy się też chińskiego, a twoja ?

Reply to
rennes

Tak ale to trzeba omawiać. Nawet taką prostą czynność jak nakarmienie kota. Można kazać rozpisac przypadki co należy zrobić i co będzie jak to czy tamto.

Reply to
rennes

Moja córka ma własny komputer od chyba 4 rokużycia. Najpierw miała laptopa z core2duo i grała w larę croft, a teraz ma potężną maszynę i dwa monitory, a ma niecałe 9 lat. Ja ją cisnę żeby nie szła drogą wykluczenia społecznego. Uczę wszystkiego od zaznaczania tekstu klawiszami z sziftem i controlem, przez cmd i pingowanie jak nie działa internet. Jak coś nie gra to pokazuję gdzie się w windowsie ustawia. No i windows ma w wersji Angielskiej, a nie Polskiej. Nigdy nie kupiłem konsoli żeby nie zgłupiała od prostego interfejsu. Nie wiem ale ja prę z nauką żeby miała szerokie horyzonty. Zapisałem też na dodatkowe zajęcia po lekcjach na szachy, robotykę i chiński.

Reply to
rennes

Za to BASCOM robi krzywdę młodym z podstawówek :-) Po kilku latach z BASCOMEM nie będą już nigdy rozumieli tych wszystkich bitów w rejestrach :-)

Reply to
rennes

Chociaż moją córkę nauczyli w szkole rysować w paincie i formatować w wordpadzie. W domu ma open office i w nim cos córka pisze. Drukuje na drukarkach sieciowych :-) Świadomie wybierają na której chce drukować :-)

Reply to
rennes

zanim jeszcze pojawilo sie delphi@windows, to istnialo srodowisko turob-pascal, ktore udostepnialo od ktorejs tam wersji obiektowosc. obiektowy turbo pascal byl swietnym narzedziem edukacyjnym (oop, alokacje na stosie/stercie, kontrola zakresu tablic, itp.) z przyjemna biblioteka TUI (turbovision). a jak ktos potrzebowal na niskim poziomie dlubac, to assembler tez dalo sie wciagnac do dzialania.

Reply to
Paweł

Aha, i to pisze osoba, która pół roku temu zapytała się o: msgid: <iio2dt$58r$ snipped-for-privacy@opal.futuro.pl>

Reply to
Grzegorz Krukowski

tak czytam co piszesz i sie zastanawiam, kiedy Twoja córka ma czas na prozaiczne dziecinstwo? Horyzonty są ważne, ale czy Ty spełniasz marzenia córki, czy to Twoje ambicje?

Reply to
Darek

W dniu 11-09-17 23:13, Darek pisze:

Coś cię, za przeproszeniem, gryzie w dupe. :)

Reply to
Butek

Lelek@ napisał:

Niedałe 9 lat, a już dwa monitory! No no no, a ile będzie miała monitorów w wieku 29 lat!

Nie chcę krakać, ale można się nieźle wylkuczyć społecznie wsiąkając zbytnio w wirtualny świat.

Później może mieć problemy z ortografią języka ojczystego, jak tatuś.

Włosienica to też jest fajny wynalazek.

Szczególnie to ostatnie może jej się przydać.

Wanan,

-- Jarek

Reply to
Jarosław Sokołowski

Znasz takie pytania jak to: "Czy ktoś ma notę katologową to ATmega najchętniej w języku polskim" ? Znasz tego typu pytania? Wiesz co znaczy ukończyć studia i nie znać angielskiego? Tyle znaczy, że jesteś nikim, nic nie umiesz i się nie nauczysz. Pójdziesz do słabo płatnej pracy przybijać pieczątki albo pójdziesz jako inżynier elektronik do pracy w hurtowni -> dział "kariera".

Reply to
rennes

Pochwal się swoim dzieckiem, masz czym? moim zdaniem jest to powód do dumy :-) No pochwal się? masz plan zajęć po lekcjach zamiast świetlicy :-)

formatting link

Reply to
rennes

Java na Androida robi dziwne rzeczy, wcześniej w niej nie pisałem ale programuję od zawsze. W javie pierwszy raz cokolwiek pisałem. Pokaż może co ty ostatnio napisałeś od początku do końca?

Reply to
rennes
[...]

Kpij sobie ale to wcale takie głupie nie jest.

Dawno temu poszedłem na udry z dwoma szkołami i kuratorium - nie zgodziłem się, żeby mój syn poszedł do szkoły z językiem niemieckim - a tylko taka była dla niego dostępna zgodnie z rejonizacją. Wygrałem walkę - poszedł do szkoły z angielskim i dzisiaj pracuje dla BBC a nie przy kartoflach u bauera.

Jak doczekam wnuka czy wnuczki to sam będę namawiał do uczenia chińskiego obok angielskiego - to się naprawdę może przydać.

Reply to
RoMan Mandziejewicz

Oh przyda się. Szczególnie, że w szkole mają taki program dla absolwentów, fundowany przez kongres o nazwie "teach and travel". Można jeździć za darmola, uczyć angielskiego w innych krajach i samemu się uczyć np chińskiego. Wszystko w ramach czasu nauki aż do końca studiów. A i jak mówił ostatnio Pan Minister Rostowski PE, o zieloną kartę prościej :-) Córka ma jako dodatkowy język zachodni właśnie niemiecki i jeszcze chiński. Angielski jest wykładowy, chyba tylko po naszemu jest polski :-)

Reply to
rennes

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.