Najlepsze sposoby na nauczenie początkującego programowania? [Zamknięte]


324

Oryginalne pytanie

Obecnie uczę mojego brata programowania. Jest całkowicie początkujący, ale bardzo inteligentny. (I tak naprawdę chce się uczyć). Zauważyłem, że niektóre z naszych sesji utknęły w drobnych szczegółach i nie wydaje mi się, że byłem bardzo zorganizowany. ( Ale odpowiedzi na ten post bardzo pomogły ).

Co mogę zrobić lepiej, aby skutecznie go uczyć? Czy istnieje logiczny porządek, którego mogę użyć, aby przejrzeć koncepcję według koncepcji? Czy są komplikacje, których powinienem unikać do później?

Językiem, w którym pracujemy, jest Python , ale porady w każdym języku są mile widziane.


Jak pomóc

Jeśli masz dobre, dodaj w odpowiedzi:

  • Ćwiczenia dla początkujących i pomysły na projekt
  • Materiały do ​​nauczania początkujących
  • Screencasty / posty na blogu / darmowe e-książki
  • Drukuj książki, które są dobre dla początkujących

Opisz zasób z linkiem do niego , abym mógł obejrzeć. Chcę, aby wszyscy wiedzieli, że zdecydowanie korzystam z niektórych z tych pomysłów. Twoje zgłoszenia zostaną zebrane w tym poście.


Materiały online dla początkujących nauczycieli:


Polecane drukowane książki dla początkujących


Nie rozumiem, dlaczego należy to zamknąć. Przynajmniej 295 użytkowników uznało to pytanie (i 92 odpowiedzi) za wystarczająco pomocne, aby go poddać pod głosowanie, a 290 posunęło się do uznania go za jeden z ulubionych. Pytanie spowodowało bardzo przydatną agregację zasobów dydaktycznych. Tak naprawdę nie zaowocowało to „kłótniami” ani „debatami”, ale naprawdę wieloma świetnymi radami, jak rozwiązać jeden z trudnych „ludzkich czynników” w programowaniu. Myślę, że zamknięcie takiego pytania jest drakońskie i szkodliwe dla społeczności StackOverflow.
Justin Standard

@JustinStandard Czy zastanawiałeś się nad konwersją zmian na kilka odpowiedzi na komentarze? Np. Tutaj , tutaj i tutaj
Jason Plank

Odpowiedzi:


118

Musiałem współpracować z kilkoma początkującymi (nigdy nie napisałem linii kodu) programistami, a jesienią będę robił warsztaty po szkole z uczniami szkół średnich. To najbliższa mi dokumentacja. To wciąż praca w toku, ale mam nadzieję, że to pomoże.

1) FizzBuzz. Zacznij od programów wiersza poleceń. Możesz pisać zabawne gry lub narzędzia bardzo szybko i bardzo szybko uczysz się wszystkich funkcji językowych, bez konieczności wcześniejszej nauki narzędzi GUI. Te wczesne aplikacje powinny być na tyle proste, aby nie trzeba było używać żadnych prawdziwych narzędzi do debugowania, aby działały.

Jeśli nic innego jak FizzBuzz to dobre projekty. Kilka pierwszych aplikacji nie powinno mieć do czynienia z bazami danych, systemem plików, konfiguracją itp. Są to pojęcia, które dezorientują większość ludzi, a kiedy dopiero uczysz się składni i podstawowych funkcji frameworka, naprawdę nie potrzebujesz więcej złożoności.

Niektóre projekty:

  • Witaj świecie!
  • Weź rok mojego urodzenia i oblicz mój wiek (po prostu (teraz - wtedy) bez miesięcznych korekt). (prosta matematyka, wejście, wyjście)
  • Zapytaj o kierunek (w górę, w dół, w lewo, w prawo), a następnie powiedz użytkownikowi o swoim losie (wpadnij do dziury, znajdź ciasto itp.). (Logika logiczna)
  • FizzBuzz, ale licz raz na sekundę. (Pętle, timery i więcej logiki)
  • W zależności od wieku niektórzy naprawdę lubią aplikację, która nazywa użytkowników losową zniewagą w określonych odstępach czasu. (Pętle, tablice, timery i losowe, jeśli interwał zostanie ustawiony losowo)

2) Prosty projekt Gdy już dobrze opanują funkcje językowe, możesz rozpocząć projekt (proste, fajne gry działają dobrze.). Powinieneś postarać się, aby pierwszy projekt mógł zostać ukończony w ciągu 6-12 godzin. Nie marnuj czasu na jego wczesne zaprojektowanie. Pozwól im to zaprojektować, nawet jeśli jest do bani. Jeśli się rozpadnie, porozmawiaj o tym, co się stało i dlaczego się nie udało, a następnie wybierz inny temat i zacznij od nowa.

W tym miejscu zaczynasz wprowadzać możliwości debugowania swoich narzędzi. Nawet jeśli widzisz problem po przeczytaniu kodu, powinieneś nauczyć go, jak korzystać z narzędzi, a następnie pokazać im, jak możesz go zobaczyć. Służy to podwójnemu celowi uczenia narzędzi do debugowania i uczenia się, jak identyfikować błędy bez narzędzi.

Gdy projekt stanie się funkcjonalny, możesz go użyć do wprowadzenia narzędzi refaktoryzacyjnych. Dobrze, jeśli możesz rozwinąć projekt za pomocą prostych funkcji, których nigdy nie planowałeś. Zazwyczaj oznacza to refaktoryzację i znaczące debugowanie, ponieważ bardzo niewiele osób po raz pierwszy pisze nawet w połowie przyzwoity kod.

Niektóre projekty:

  • Gra Wisielec
  • Eksperymentowanie z robotyką ( Vex i Mindstorms są opcjami)

3) Prawdziwy projekt Rozpocznij prawdziwy projekt, który może zająć trochę czasu. Używaj odpowiedniej kontroli źródła i ustal harmonogram. Uruchom ten projekt jak prawdziwy projekt, jeśli nic więcej jego dobre doświadczenie związane z narzędziami.

Oczywiście musisz to dostosować dla każdej osoby. Najważniejszą rzeczą, jaką znalazłem, jest zastosowanie nawet pierwszych prostych aplikacji do tego, co dana osoba jest zainteresowana.

Niektóre projekty:

  • Tetris
  • Silnik blogów oparty na plikach tekstowych
  • Bardziej zaawansowana robotyka

To jest świetny przewodnik. Osobiście nie mogę zakodować wyjścia z papierowej torby (tak naprawdę chciałbym, aby ktoś to robił w prawdziwym życiu), więc wygląda to na dobry przewodnik do nauki siebie.
keyofnight

To bardzo dobra odpowiedź. Jedynym moim zastrzeżeniem jest to, że Tetris nie jest dobrym wyborem dla pierwszej lub drugiej gry. Na tym poziomie wykrywanie kolizji może być trudnym problemem - świetnie, jeśli potrafią go rozwiązać.
phkahler

@phkahler Rozumiem twój punkt widzenia, ale uważam, że Tetris jest interesujący, ponieważ istnieje tak wiele implementacji OSS / demo, które możesz przeanalizować przed i po napisaniu kodu.
Eric Haskins

30

Możesz spróbować użyć Alice . Jest to program 3D przeznaczony do stosowania we wstępnych zajęciach programowania.

Dwie największe przeszkody dla nowych programistów to często:

  • błędy składniowe
  • motywacja (pisanie czegoś sensownego i zabawnego zamiast wymyślonego)

Alice używa interfejsu przeciągnij i upuść do konstruowania programów, unikając możliwości błędów składniowych. Alice pozwala konstruować światy 3D i sterować kodem (proste) postacie 3D oraz animację, co zwykle jest o wiele bardziej interesujące niż implementacja list połączonych.

Doświadczeni programiści mogą patrzeć na Alice jak zabawkę i drwić z przeciągania i upuszczania linii kodu, ale badania pokazują, że to podejście działa.

Uwaga: Pracowałem nad Alice.


Dowiedziałem się o tym podczas ostatniego wykładu Randy'ego Pauscha. Rozumowanie tego projektu zaskoczyło mnie.
Jesvin Jose

28

Polecam Logo (inaczej żółw), aby sprowadzić podstawowe pojęcia. Zapewnia dobrą piaskownicę z natychmiastową graficzną informacją zwrotną, a także można demonstrować pętle, zmienne, funkcje, warunki warunkowe itp. Ta strona stanowi doskonały samouczek.

Po Logo przejdź do Python lub Ruby. Polecam Python, ponieważ jest oparty na ABC, który został wymyślony w celu nauczania programowania.

Ucząc programowania, muszę poprzeć sugestię EHaskins dotyczącą prostych projektów, a następnie złożonych projektów. Najlepszym sposobem na naukę jest rozpoczęcie od określonego wyniku i mierzalnego kamienia milowego. Koncentruje się na lekcjach, pozwala uczniowi na rozwijanie umiejętności, a następnie na te umiejętności, i daje uczniowi coś, co może pochwalić się znajomym. Nie lekceważ potęgi posiadania czegoś do pokazania w pracy.

Teoretycznie możesz trzymać się Pythona, ponieważ Python potrafi prawie wszystko. To dobry pojazd do nauki programowania obiektowego i (większości) algorytmów. Możesz uruchomić Python w trybie interaktywnym jak wiersz poleceń, aby sprawdzić, jak to działa, lub uruchomić całe skrypty jednocześnie. Możesz uruchamiać skrypty interpretowane w locie lub kompilować je w pliki binarne. Istnieją tysiące modułów rozszerzających funkcjonalność. Możesz zrobić kalkulator graficzny, taki jak ten dołączony do systemu Windows, lub klienta IRC lub cokolwiek innego.

XKCD nieco lepiej opisuje moc Pythona: „Lecisz! Jak?”  "Pyton!"

Następnie możesz przejść do C # lub Java, chociaż nie oferują wiele, czego Python jeszcze nie ma. Ich zaletą jest to, że używają składni w stylu C, z której korzysta wiele (czy mogę powiedzieć, że większość języków). Nie musisz jeszcze martwić się o zarządzanie pamięcią, ale możesz przyzwyczaić się do nieco większej swobody i mniejszego trzymania się ręki dzięki tłumaczowi języka. Python wymusza odstępy i wcięcia, co jest przyjemne przez większość czasu, ale nie zawsze. C # i Java umożliwiają zarządzanie własną białą spacją przy jednoczesnym zachowaniu silnego wpisywania.

Stamtąd standardem jest C lub C ++. Wolność w tych językach jest prawie egzystencjalna. Teraz jesteś odpowiedzialny za zarządzanie pamięcią. Nie ma śmieci, które mogłyby ci pomóc. To tutaj uczysz naprawdę zaawansowanych algorytmów (takich jak scalesort i quicksort). To tutaj dowiadujesz się, dlaczego „błąd segmentacji” jest przekleństwem. To tutaj pobierasz kod źródłowy jądra Linuksa i patrzysz w Otchłań. Zacznij od napisania okrągłego bufora i stosu do manipulacji ciągami. Następnie awansuj.


W rzeczywistości nie zarządzasz w pełni pamięcią w C. Możesz mieć malloc itp. I zarządzać nią za darmo. Musisz tylko powiedzieć systemowi, kiedy chcesz więcej pamięci i kiedy skończysz z pamięcią, której używasz.
compman


12

Pakiet Python VPython - Programowanie 3D dla zwykłych śmiertelników ( samouczek wideo ).

Przykład kodu:

from visual import *

floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue)
ball = sphere (pos=(0,4,0), radius=1, color=color.red)
ball.velocity = vector(0,-1,0)
dt = 0.01

while 1:
    rate (100)
    ball.pos = ball.pos + ball.velocity*dt
    if ball.y < ball.radius:
        ball.velocity.y = -ball.velocity.y
    else:
        ball.velocity.y = ball.velocity.y - 9.8*dt

VPython odbijająca się piłka http://vpython.org/bounce.gif


Dobry dla osób, które dopiero poznały podstawowe pojęcia. Tworzenie wizualizacji to świetny sposób na motywowanie ludzi do nauki programowania.
phkahler

12

Rozpocznij od grafiki Turtle w Pythonie.

Chciałbym użyć grafiki żółwia, która jest standardem w Pythonie. Jest wizualny, prosty i możesz użyć tego środowiska do wprowadzenia wielu koncepcji programowania, takich jak iteracja i wywołania procedur, zanim przejdziesz zbyt daleko w składni. Rozważ następującą interaktywną sesję w Pythonie:

>>> from turtle import *
>>> setup()
>>> title("turtle test")
>>> clear()
>>>
>>> #DRAW A SQUARE
>>> down()        #pen down
>>> forward(50)   #move forward 50 units
>>> right(90)     #turn right 90 degrees
>>> forward(50)
>>> right(90)
>>> forward(50)
>>> right(90)
>>> forward(50)
>>>
>>> #INTRODUCE ITERATION TO SIMPLIFY SQUARE CODE
>>> clear()
>>> for i in range(4):
        forward(50)
        right(90)
>>>
>>> #INTRODUCE PROCEDURES   
>>> def square(length):
        down()
        for i in range(4):
            forward(length)
            right(90)
>>>
>>> #HAVE STUDENTS PREDICT WHAT THIS WILL DRAW
>>> for i in range(50):
        up()
        left(90)
        forward(25)
        square(i)
>>>
>>> #NOW HAVE THE STUDENTS WRITE CODE TO DRAW
>>> #A SQUARE 'TUNNEL' (I.E. CONCENTRIC SQUARES
>>> #GETTING SMALLER AND SMALLER).
>>>
>>> #AFTER THAT, MAKE THE TUNNEL ROTATE BY HAVING
>>> #EACH SUCCESSIVE SQUARE TILTED

Próbując wykonać dwa ostatnie zadania, będą mieli wiele nieudanych prób, ale niepowodzenia będą interesujące wizualnie i szybko się nauczą, gdy będą próbowali dowiedzieć się, dlaczego nie narysowali tego, czego się spodziewali.



11

Kluczowe jest to, że dana osoba musi mieć problem, który chce rozwiązać. Jeśli nie masz programu, który chcesz napisać (i czegoś sensownego i dobrze zdefiniowanego, a nie „Chcę napisać następne Quake!”), Nie możesz nauczyć się programować, ponieważ nie masz nic, co by cię motywowało . To znaczy, możesz przeczytać książkę i z grubsza zrozumieć składnię i semantykę języka, ale dopóki nie będziesz mieć programu, który chcesz napisać , nigdy nie zrozumiesz pokrzywy.

Jeśli ten impuls istnieje, wszystko inne to tylko drobne szczegóły.


Myślę, że najlepszym sposobem na naukę dowolnego przedmiotu technicznego jest nauka rozwiązywania małych, narastających problemów.
cbednarski





4

Jeśli jest zainteresowany, czy drobne szczegóły nie są dobre? Używając Pythona, już odciąłeś GUI, dzięki czemu pomyłka zniknęła. Dlaczego nie wybrać projektu, gry lub czegoś i wdrożyć go. Klasyczna gra polegająca na zgadywaniu liczb hi-lo może być po prostu zaimplementowana z wiersza poleceń w 20-30 liniach kodu (w zależności od języka) i daje zmienne, warunki, pętle i dane wejściowe użytkownika.



4

Pozwolę mu napisać mnóstwo kodu. Pozwól mu wjechać we wszystko, co robisz, i bądź dostępny, aby odpowiedzieć na pytania.

Wierzcie lub nie, ale po kilku miesiącach pisania ton gównianego kodu zacznie rozumieć i zacznie pisać lepsze programy. W tym momencie możesz zagłębić się w szczegóły (pamięć itp.), A także mówić o ogólnych zasadach projektowania.

Słyszałem, że to, co odróżnia wielkich artystów od przeciętnych, polega na tym, że za każdym razem, gdy ćwiczą, poprawiają coś, bez względu na to, jak małe. Pozwól swojemu bratu ćwiczyć, a on poprawi się za każdym razem, gdy usiądzie przy klawiaturze.

Edycja: [Justin Standard]

Esteban, to przypomina mi ostatni post z horroru programistycznego i myślę , że masz rację. Myślę jednak, że nadal warto znaleźć metody, które pokierują jego praktyką. Bez wątpienia chcę, żeby pisał tyle kodu, ile wie, jak to zrobić. To jeden z powodów, dla których proszę o przykładowe projekty.


Tak, wiem, o którym poście mówisz o Justinie. Czytanie tego przypomniało mi, że większość rzeczy, których się nauczyłem, pochodzi z prób i uczenia się na własnych błędach. Naprawdę nie mogę wystarczająco podkreślić wagi uczenia się poprzez działanie!
Esteban Araya

2

Po pierwsze, zacznij jak wszyscy inni: z programem Hello World . Jest to proste i daje im podstawowe wyczucie układu programu. Spróbuj przypomnieć sobie czas, w którym programowałeś po raz pierwszy i jak trudne były niektóre z tych koncepcji - zacznij od prostych.

Po Hello World przejdź do tworzenia podstawowych zmiennych, arytmetycznych, a następnie do logiki logicznej i instrukcji if / else. Jeśli masz jeden ze swoich starych podręczników programowania, sprawdź niektóre z pierwszych przykładów i poproś go o przejrzenie tych. Tylko nie próbuj wprowadzać zbyt wiele naraz, bo będzie to przytłaczające i zagmatwane.


2

Coś, na co powinieneś bardzo uważać, ucząc swojego brata programowania, polega na tym, aby nie polegał zbyt mocno na tobie. Często, gdy pomagam innym, zaczynają myśleć o mnie jako książce odpowiedzi na wszystkie ich pytania i zamiast eksperymentować w celu znalezienia odpowiedzi, po prostu mnie pytają. Często najlepszym nauczycielem jest eksperymentowanie i za każdym razem, gdy twój brat ma pytanie: „Co się stanie, jeśli dodam 2 do łańcucha?” powinieneś mu powiedzieć, żeby spróbował i przekonał się sam. Zauważyłem również, że kiedy nie mogę komuś przekazać koncepcji, pomaga zobaczyć przykładowy kod, w którym możemy spojrzeć na każdy segment indywidualnie i wyjaśnić go kawałek po kawałku. Na marginesie, osoby początkujące w programowaniu często mają problem z ideą programowania obiektowego,


2

Uczyłem programowania, a twój brat ma jedną główną przewagę nad większością moich uczniów, których chce się uczyć :)

Jeśli zdecydujesz się na C, znajomy ma witrynę , na której są programy, których używają starsze generacje, zapamiętują jako podstawowe wpisy. Bardziej złożone z nich używają ncurses, co w pewnym sensie neguje ich użycie jako pomocy dydaktycznej, ale niektóre z nich są małymi drobiazgami i można uczyć się ładunków bez nauki.

Osobiście uważam, że Python i Ruby stworzyliby świetne pierwsze języki.

EDYCJA: lista zadań programowania dla początkujących pojawiła się z dnia na dzień może być właśnie tym, czego szukasz.


2

To zależy od stylu uczenia się twojego brata. Wiele osób uczy się szybciej, brudząc sobie ręce i po prostu wchodząc w nie, krystalizując koncepcje i ogólny obraz w miarę postępów i zdobywania wiedzy.

Ja wolę zacząć od dużego obrazu i przejść do drobiazgowości. Pierwszą rzeczą, którą chciałem wiedzieć, było to, jak to wszystko pasuje do siebie, a potem cały ten gobbledygook zorientowany obiektowo, a następnie o klasach, instancjach i tak dalej. Lubię poznać podstawowe pojęcia i trochę teorii, zanim nauczę się składni. Miałem trochę przewagi, ponieważ 20 lat temu napisałem kilka gier w języku BASIC, ale od tamtej pory niewiele.

Być może przydatne jest śledzenie procesu produkcyjnego, zaczynając od ogólnej misji, następnie planu i / lub schematu blokowego, a następnie opracowując jakiś pseudo-kod (skłaniający się do składni, której ostatecznie użyjesz) przed napisaniem kodu.

Złotą zasadą tutaj jest podkreślenie stylu uczenia się twojego ucznia.


2

Jeśli twój brat ma dostęp do iTunes, może pobrać wykłady wideo z wstępnego kursu informatyki prowadzonego przez Richarda Bucklanda na University of New South Wales. Jest angażującym instruktorem i obejmuje podstawy informatyki i języka C. Jeśli nic więcej, powiedz swojemu bratu, aby zagrał w tle w vids, a niektóre koncepcje mogą zatopić się w osmozie. :)

COMP1917 Wyższe obliczenia - sesja 2008 1 http://deimos3.apple.com/WebObjects/Core.woa/Browse/unsw.edu.au.1504975442.01504975444

Jeśli link nie działa, oto ścieżka:

Strona główna -> iTunes U -> Inżynieria -> Comp1917 Higher Computing - sesja 2008 1




2

Myślę, że Python to świetny pomysł. Dałbym mu kilka podstawowych zadań do samodzielnego wykonania i powiedziałbym mu, że wszelkie ślepe zaułki, które trafi, prawdopodobnie zostaną rozwiązane przez podróż do Google. Przynajmniej dla mnie samodzielne rozwiązanie problemu zawsze sprawiało, że lepiej się trzymał niż ktoś, kto powiedział mi rozwiązanie.

Niektóre możliwe projekty (bez określonej kolejności):

  • Symulator rzutu monetą. Pozwól użytkownikowi wprowadzić żądaną liczbę prób rzutu monetą. Wykonaj go i wyświetl wyniki wraz z procentem dla głów lub ogonów.

  • Stwórz konwerter temperatury z menu, które pobiera dane od użytkownika, aby wybrać rodzaj konwersji, którą użytkownik chce wykonać. Po wybraniu konwersji i wykonaniu jej należy powrócić do menu głównego.

    Oto przykład rozszerzonego konwertera z tym samym pomysłem: http://pastebin.org/6541

  • Stwórz program, który przyjmuje dane liczbowe i wyświetla ocenę literową, na którą tłumaczyłby. Skończy to na ocenie danych wejściowych względem instrukcji if i elif w celu znalezienia, do czego pasuje.

  • Zrób prosty quiz, który obejmuje kilka opcji wielokrotnego wyboru lub wypełnij puste pytania. Na koniec wyświetli się sposób, w jaki zrobił to użytkownik. Może wybrać dowolne pytania.

  • Weź wkład pewnej (prawdopodobnie dużej) liczby groszy i zamień ją na większe nominały. Na przykład 149 groszy = 1 dolar, 1 kwartał, 2 dziesięciocentówki i 4 grosze.

  • Utwórz prosty menedżer list. Być w stanie dodawać / usuwać listy oraz dodawać / usuwać wpisy na tych listach. Oto przykład menedżera listy świąt: http://pastebin.org/6543

  • Utwórz program, który zbuduje, a następnie przetestuje, czy wprowadzone liczby tworzą magiczny kwadrat (z tablicą 2D). Oto przykładowy kod, ale tak naprawdę powinien on wydrukować kwadrat na każdym kroku, aby pokazać, gdzie użytkownik znajduje się w obszarze tworzenia kwadratu: http://pastebin.org/6544

Sugerowałbym także zrobienie kilku rzeczy z xTurtle lub innym modułem graficznym, aby pomieszać rzeczy i uniknąć nudy. Oczywiście, jest to bardzo praktyczne programowanie, a nie skrypty, do których wiele osób naprawdę używałoby Pythona, ale podane przeze mnie przykłady pochodzą w zasadzie bezpośrednio z czasów, gdy uczyłem się przez Pythona i okazało się to dla mnie świetne. Powodzenia!



2

Jeśli twój brat lubi łamigłówki, poleciłbym Python Challenge . Nie użyłbym tego jako formalnego narzędzia do nauczania w samouczku 1 na 1, ale jest to coś, co może zrobić, gdy nie jesteście razem, aby rzucić wyzwanie sobie i dobrze się bawić.



2

Po przejrzeniu kilku bezpłatnych e-książek znalazłem najlepszą książkę do nauki programowania, która została opublikowana przez O'Reily Press. Używa Pythona jako języka i zapewnia programy do pracy od samego początku. Wszystkie są bardziej interesujące niż „Hello World”. Warto wydać na to pieniądze, a ponieważ już trochę nie było, możesz znaleźć tańszą używaną kopię w serwisie eBay lub Amazon.


1

Jeśli chcesz nauczyć się podstaw programowania, nie będąc specyficznym językiem, istnieje aplikacja o nazwie Scratch, która została stworzona w MIT. Został zaprojektowany, aby pomóc ludziom w rozwijaniu umiejętności programowania. Gdy użytkownicy tworzą projekty Scratch, uczą się tworzyć warunki, pętle itp. Istnieje również społeczność projektów scratch, z których można pobierać projekty - w ten sposób możesz eksplorować programy innych ludzi i zobaczyć, jak zostały zbudowane.


1

Myślę, że kiedy już opanuje podstawy (zmienne, pętle itp.), Powinieneś spróbować pomóc mu znaleźć coś konkretnego, co go interesuje, i pomóc mu nauczyć się, jak to zrobić. Wiem, że jestem o wiele bardziej skłonny i zmotywowany do zrobienia czegoś, jeśli mnie to interesuje. Pamiętaj też, aby pozwolić mu zmagać się z niektórymi trudniejszymi problemami - nic nie jest bardziej satysfakcjonujące niż chwila, w której sam to rozwiążesz.


1

Nauczono mnie uczenia się, jak rozwiązywać problemy w sposób agnostyczny w języku za pomocą schematów blokowych i PDL (Program Design Language). Po kilku tygodniach nauczyłem się konwertować napisany przeze mnie PDL na język. Cieszę się, że nauczyłem się w ten sposób, ponieważ większość lat spędziłem na programowaniu, rozwiązywaniu problemów bez przywiązania do języka. Język, którego używam, zawsze był szczegółem implementacji, a nie częścią projektu.

Kluczową umiejętnością jest konieczność rozwiązania problemu poprzez podzielenie go na podstawowe kroki. Myślę, że to jedna z rzeczy, które oddzielają tych, którzy mogą programować od tych, którzy nie potrafią.

Jeśli chodzi o sposób, w jaki radzisz sobie z kolejnością pojęć języka, uważam, że najłatwiejszym sposobem jest zdecydowanie, że masz na myśli projekt i zajęcie się pojęciami, gdy są potrzebne. Dzięki temu możesz je zastosować, gdy są potrzebne do czegoś, co chcesz zrobić. Ucząc się języka, dobrze jest mieć na myśli kilka prostych projektów i kilka o stopniowej złożoności. Wybór tych pomoże ci zmapować potrzebne pojęcia i ich kolejność.


1

Poleciłbym także obejrzenie niektórych screencastów - są one generalnie tworzone w kontekście konkretnej technologii, a nie języka, chociaż jeśli wyświetli się kod Pythona, zrobi to :). Chodzi o to, że są tworzone przez dobrych programistów i patrzą, jak dobry program jest dobry. Ty i twój brat moglibyście także trochę programować, może to być jeszcze lepszy pomysł. Tylko nie zapomnij wyjaśnić DLACZEGO robisz coś w ten sposób, a nie w ten sposób. Myślę, że najlepszym sposobem na naukę programowania są dobre przykłady i staram się nawet nie dostrzegać złych.


1

Robert Read napisał przydatny przewodnik How to be Programmer , który obejmuje szeroki zakres zagadnień programistycznych, które mogą być pomocne dla początkujących.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.