Mój tata niecierpliwi tempo nauki programowania. Co ja robię? [Zamknięte]

200

Więc mój tata kupił mi 5 książek o programowaniu (C ++, Java, PHP, JavaScript, Android) około miesiąc temu. Jest architektem i nic nie wie o programowaniu. Kupił mi je, ponieważ powiedziałem mu, że programowanie jest fajne i chciałem się tego nauczyć.

Jak zapewne wiesz, bycie dzieckiem (mam 14 lat) i mówienie o nauce programowania z nudnych książek nie jest najłatwiejsze. Zawsze mnie rozprasza. Powiedziałem mu wcześniej, że nie muszę kupować książek i mogę po prostu oglądać samouczki online… ale nie, jest taki staroświecki. Pozwala mi tylko korzystać z książek.

Ostatnio zaczął mnie pytać, co z tym zrobiłem, i pokazałem mu program C ++, który pobiera to, co wpisujesz, a następnie przypisuje wartości do każdej litery (A jest pierwszą literą w alfabecie, więc otrzymuje wartość z 1) .. i tak dalej. Następnie sumuje wszystkie wartości i mówi o tym. Zatem słowo „dodaj” miałoby wartość 9.

^^ To nie było dla niego imponujące. Krzyczał na mnie i powiedział mi, że wszystko robię. To nieprawda. Jest niezwykle tradycyjny i uparty i nie słucha niczego, co miałem do powiedzenia. Co mam mu powiedzieć?

PS: Jeśli masz jakieś wskazówki dotyczące zagospodarowania przestrzennego książki, daj mi znać

EDYCJA: Dziękuję bardzo wszystkim, nie masz pojęcia, ile to znaczy wiedzieć, że są ludzie, którzy rozumieją moją sytuację. Przeczytałem każdy i rozważę opinię wszystkich. ¡Gracias!

David
źródło
15
Komentatorzy: komentarze mają na celu poszukiwanie wyjaśnień, a nie dłuższą dyskusję. Jeśli masz rozwiązanie, zostaw odpowiedź. Jeśli Twoje rozwiązanie jest już opublikowane, głosuj za nim. Jeśli chcesz omówić to pytanie z innymi, skorzystaj z czatu . Aby uzyskać więcej informacji, zobacz często zadawane pytania .
7
Nawiasem mówiąc, powinieneś pokazać mu ten wątek. Może pójść z nim dalej, jeśli zobaczy opinię profesjonalnego programisty na temat twoich postępów.
Collecter
15
@David To nie jest tradycyjne, to bycie okropnym rodzicem i samolubną osobą. W tym momencie nie chce, żebyś odniósł sukces, bo inaczej byłby z tobą w dole. On naprawdę chce być tatą odnoszącego sukcesy dzieciaka. Niestety, niewiele możesz na to poradzić, ponieważ jest to twój ojciec i nie możesz lekceważyć. To, co powiedziałbym, to grymas i znieść to, a kiedy przyjdzie czas na studia, wybierz daleko sobie ligę bluszczu.
Lee Louviere,
15
Nie dziwię się, że to zostało zamknięte (to nie na temat), ale jest to jedno z tych pytań, w których chciałbym mieć tag / flagę na „nie na temat, ale i tak zachowaj”. :)
Cyklop
12
Zapytaj tatę, co
porabiał,

Odpowiedzi:

197

Pokazałem mu napisany przeze mnie program C ++, który pobiera to, co wpisujesz, a następnie przypisuje wartości do każdej litery (A jest pierwszą literą w alfabecie, więc otrzymuje wartość 1) .. i tak dalej. Następnie sumuje wszystkie wartości i mówi o tym. Zatem słowo „dodaj” miałoby wartość 9.

Nie wiem, co powinieneś zrobić z tatą. Ale:

Jeśli zrobiłeś to wszystko sam, zaczynając od zera, ucząc się z książek, za miesiąc , to cholernie imponujące. Zrobiłeś to w C ++, który jest jednym z najstraszniejszych istniejących języków programowania.

Istnieje wiele osób biorących udział w rozmowach kwalifikacyjnych, które poważnie starają się o pracę programistyczną, które miałyby z tym problem. Zobacz historię.

Mogę tylko zasugerować: rób to, co lubisz. Zignoruj ​​swojego tatę w tym kontekście; nie wie o czym mówi. Masz talent do programowania i chęć do nauki - główne składniki, aby stać się świetnym programistą.

Joonas Pulakka
źródło
8
Tak, uczyłem się ambitnie (ten konkretny program sprawił mi około 60 bólów głowy).
David
8
@David: Biorąc pod uwagę, że jest architektem, zrozumiałe jest, że zależy mu na tym, jak wszystko wygląda . Ale jeśli nic nie wie o programowaniu, nie powinien go krytykować. Grafika, wygląd i działanie oprogramowania to tylko wierzchołek góry lodowej .
Joonas Pulakka
12
Poważnie? „Fatbooth” ma pewne algorytmy manipulacji grafiką, których nauka i opanowanie zajmuje lata. Jeśli twój ojciec chce, abyś opanował rozpoznawanie twarzy, powinien kupić książkę na ten temat. Może to wyglądać na łatwe (ponieważ jest łatwe w użyciu), ale jest trudniejsze do osiągnięcia niż mogłoby się wydawać, dając wiele 60 bólów głowy łącznie. Zakładanie, że aplikacje takie jak „Fatbooth” jest łatwe do wykonania, jest poważną (ale skrytą) zniewagą dla programistów.
Spoike,
121
+1 za cholernie imponujące . Jest, szczególnie biorąc pod uwagę skąd pochodzisz. Wydaje mi się, że możesz zapytać tatę, w ilu budynkach w ogóle był zaangażowany, a tym bardziej sam pracował, miesiąc po rozpoczęciu nauki od zera. Ułóż rzeczy w terminach, z którymi może się odnosić.
CVn
13
@Joonas: Nie wspominając już o tym, że projektowanie graficzne, użyteczność i projektowanie interfejsu to tak naprawdę wszystkie dziedziny, które generalnie mają bardzo niewiele wspólnego z programowaniem .
Toby
88

Pokaż mu ten post przez Peter Norvig. Norvig jest szefem działu badań i rozwoju w Google i wykłada w Stanford, a zwłaszcza w sztucznej inteligencji, napisał standardową książkę wprowadzającą na temat sztucznej inteligencji. Jak długo nad tym pracujesz? Nie spodziewałbym się niczego więcej po miesiącu pracy nowicjusza bez dodatkowych instrukcji, szczególnie z czymś tak drażliwym jak C ++. Wszystko, czego warto się nauczyć, jest warte nauki.

Inżynier światowy
źródło
83
  1. Pamiętaj, że twój tata prawdopodobnie myśli, że jesteś najmądrzejszym dzieckiem na świecie, a on stara się pomóc ci dowiedzieć się o czymś, co podobało ci się.

  2. Wiedz, że chociaż twój tata jest bezsprzecznie w błędzie (pięć zupełnie różnych tematów na raz można rzucić jednemu dziecku naraz), ma również trochę racji. Wiele osób próbuje programować, naśladując „samouczki”, które znajdują w Internecie. Nie zawsze jest to zła rzecz, ale IMO zwykle nie prowadzi do solidnego zrozumienia. Właściwa książka nauczy Cię najpierw podstaw. To może nie być tak zabawne, jak wykonywanie samouczków, które wykonują coś błyskotliwego, ale Twoja szansa na długoterminowy sukces znacznie wzrośnie, a liczba pytań, które musisz zadać na stackoverflow.com spadnie.

  3. Przynajmniej zapomnij o wszystkich książkach oprócz jednej. Wygląda na to, że już zacząłeś używać C ++, więc idź z tym, jeśli ci się spodoba.

  4. Od czasu do czasu poczujesz się zniechęcony. Czasami wydaje się, że połowa programowania blokuje się, a druga połowa blokuje się. Oderwanie się jest cenną umiejętnością, a im więcej ćwiczysz, tym lepiej. (Unikanie utknięcia na pierwszym miejscu jest również cenną umiejętnością, więc ćwicz także.)

  5. Nauka pierwszego języka komputerowego polega na rozwijaniu oprogramowania, a nauka rysowania polega na projektowaniu budynku. To może nie być najciekawsza część, ale jest to wymagana umiejętność.

  6. Jeśli możesz zmusić go do słuchania, spróbuj rozbić wszystkie rzeczy, których musiałeś nauczyć się pisać swój mały program. Nauczenie się korzystania z narzędzi zajmuje trochę czasu, a on na pewno nie rozumie, jak to wszystko działa.

  7. Teraz, kiedy już masz prosty program i najwyraźniej nauczyłeś się trochę C ++, jakie ciekawe programy możesz napisać? Co powiesz na kalkulator kredytowy, który akceptuje stopę procentową, kwotę kredytu i okres kredytowania oraz drukuje harmonogram płatności? Lub kalkulator, który odczytuje wzór cząsteczkowy taki jak „H2SO4” lub „C6H12O6” i drukuje masę cząsteczki? To nie jest zbyt skomplikowane niż program, który już napisałeś.

Caleb
źródło
47
+1 „Zapomnij o wszystkich książkach oprócz jednej”
PA.
9
+1 za świetne, praktyczne pomysły. Podczas nauki najtrudniejsza część często wymyśla pomysł na projekt w tym samym czasie, gdy zasłaniają cię nowe informacje.
Morgan Herlocker
5
+1 „Pamiętaj, że twój tata ...” Miło mieć tam punkt widzenia ojca, nawet jeśli stłumi entuzjazm Davida własną radością z pomocy.
John MacIntyre
7
Zrób małe narzędzie do rozwiązywania problemów / obliczania architektury, angażując tatę!
Vaibhav Garg
3
+1 za pierwszy punkt. Myślę, że bardzo ważne jest, aby rodzice myśleli o swoich dzieciach jako o najmądrzejszych na świecie. W końcu, gdyby nie takie podejście, OP nie zrobiłby tak wiele w ciągu miesiąca, jestem tego pewien. Jednak może to być narzut, jeśli powoduje OP tyle bólu głowy.
Anton Strogonoff,
53

Kupił mi je, ponieważ powiedziałem mu, że programowanie jest fajne i chciałem się tego nauczyć. ... co mam mu powiedzieć?

„Tato, twoje podejście do tego sprawia, że ​​nauka programowania absolutnie nie sprawia przyjemności . Odrzuć to”.

Blrfl
źródło
4
nie najlepsza rada. Tata nie chce otrzymywać odpowiedzi w ten sposób
CyprUS,
1
tak, ale jeśli OP po prostu tam siedzi i bierze to, tata ma wrażenie, że ma rację; jego dziecko wcale nie pracowało bardzo ciężko. Dzieciak musi w pewnym momencie odezwać się, aby jego tata zrozumiał, jak ciężko pracuje.
Kevin
1
@ CyprUS To prawda, ale teraz kulę się na słowo robotyka. To była miłość mojego życia rok temu. Miałem Lego Mindstorms Kit z zainstalowanym RobotC i tak dalej. Uwielbiałem to, dopóki mój tata nie dostał „prawdziwych” kół zębatych i silników i nie powiedział mi, żebym zrobił coś „prawdziwego” jak ramię robota. Nienawidzę robotyki z pasją.
chandsie
48

Jako architekt musi z pewnością ciągnąć cię za nogę lub być niegrzecznym.

Zbadaj go, kiedy zaczął: Zapytaj go, czy narysował drapacze chmur ze szczegółowymi planami wodno-kanalizacyjnymi, obliczył siły i obciążenie materiałami oraz czy dokonał oceny ryzyka katastrofy (np. Uderzenia samolotu z wężami) po miesiącu spędzonym z książki, kiedy był tak młody jak ty. Może to go uspokoi.

Okej, może nie jest to najlepsza rada, jaką mogę ci udzielić, aby porozmawiać z rodzicem. Rozumiem, że posiadanie ojca, który karze postęp, zamiast zachęcać, jest trochę obciążające jako dziecko, ale traktuj to jako zachętę, by robić lepiej. Może mieć problem z postawą, ale to nie oznacza złej woli.

Spoike
źródło
44
Również rada dla twojego taty (choć poza zakresem pytania): Porzuć postawę Gordona Ramsaya . Działa tylko w Hell's Kitchen, ponieważ kandydaci to doświadczeni dorośli, od których oczekuje się, że będą umieć gotować i robić perfekcję w swojej restauracji, a Gordon przyznaje, kiedy trzeba. Jeśli zrobisz to początkującym początkującym lub dzieciom, to tylko odstraszy je od nauki praktyki. Warto zauważyć, że Ramsay jest milszy w swoim innym serialu telewizyjnym, ponieważ nie chodzi o jego własny interes.
Spoike
30

Byłbym ciekawy, jakich książek używasz. Nie wszystkie z nich są w rzeczywistości dobre. Ponadto nie każda książka jest odpowiednia dla wszystkich.

Nie określiłeś wieku, więc założę, że masz dużo poniżej 18 lat. Zacząłem uczyć się, kiedy miałem około 8 lat.

Jako dziecko korzystałem z wielu zasobów podczas nauki programowania. Miałem instrukcje dołączone do mojego TI 99 / 4A, które zawierały wiele zabawnych programów do rysowania obrazów i animowania postaci. Internet nie był dla mnie dostępny, ale były nawet magazyny komputerowe skierowane do dzieci, z programami, w których mogłem pisać i uzyskiwać natychmiastowe informacje zwrotne, oraz artykuły na temat rozwiązywania innych rodzajów wyzwań. Bardzo podobała mi się seria powieści szpiegowskich, która pozwoliła mi pisać i debugować programy zawarte w tej historii. Niestety nie sądzę, że tego rodzaju zasoby wciąż istnieją, ale istnieje kilka książek programistycznych skierowanych do młodszych ludzi, takich jak książka Hello World na temat Python i Kraina Lisp (choć to również fajne dla dorosłych).

Nie wiem o tobie, ale był czas, kiedy miałem dość pisania programów, które robią rzeczy bardzo podobne do tego, co właśnie opisałeś. W końcu przeszedłem do bardziej zaawansowanych rzeczy. Napisałem kilka miernych gier, niektóre dema odtwarzające różne dźwięki i animacje w odpowiedzi na naciśnięcia klawiszy, a także niektóre pomoce naukowe. Kiedy miałem około 10 lub 11 lat, napisałem program, który pomógł mi zapamiętać układ okresowy pierwiastków poprzez wielokrotne wypytywanie mnie. (W tamtym czasie moje umiejętności zapamiętywania były lepsze niż obecnie, więc za pierwszym razem prawie tyle samo wpisałem dane, co w quizie, ale chodziło o postęp).

Twój ojciec może nie zdawać sobie z tego sprawy, ale książki są tylko częścią tego procesu, gdy uczysz się programować. Znalezienie małego problemu i próba wymyślenia, jak go rozwiązać, to druga połowa równania. Druga połowa to znalezienie książki, która uczy cię trochę na raz i pozwala uzyskać coś fajnego na urządzeniu. W moim przypadku książki, które podkreślały grafikę i animację, były tymi, które mnie przekonały.

Jako dziecko moje oczy błyszczały, gdy czytałem książki o algorytmach sortowania i skomplikowanych strukturach danych, dopóki nie nauczyłem się wystarczająco, by zobaczyć, jak odnoszą się do problemów, na których mi naprawdę zależy. Nie każde słowo w książkach, które przeczytasz, będzie fascynujące. W porządku. Dostaniesz się do tych rzeczy, kiedy będziesz ich potrzebować; jakiś problem, który chcesz rozwiązać, przypomni Ci o technice, która według ciebie nie była interesująca trzy tygodnie, trzy miesiące lub trzy lata temu, a ty wrócisz, przejrzysz ją i rozwiążesz.

Miesiąc to niezbyt długi czas na naukę programowania. Piszę kod w takiej czy innej formie przez około 30 lat, w tym w dzieciństwie, i wciąż uczę się czegoś nowego każdego dnia. Jestem pewien, że w pierwszym miesiącu miałem swój pierwszy komputer, spędziłem dużo czasu grając w Munch Mana i znacznie mniej godzin próbując zrozumieć programy przykładowe w moim podręczniku. Ucz się w tempie, które Ci odpowiada. W tej chwili nie ma presji i to świetnie.

„Wkręcanie się” jest tym, co powinieneś robić, kiedy uczysz się programowania. Hakerzy (rodzaj Paula Grahama) przeszukują, próbując zrozumieć, jak działa ich system, jak działa ich język programowania, jak działają ich narzędzia. Próbujesz czegoś, nie udaje ci się, rozumujesz przez napotkany problem i próbujesz czegoś innego, dopóki coś nie działa. Nie przejmuj się tak bardzo.

O ile twój ojciec nie pracuje nad tymi samymi książkami, prawdopodobnie nie rozumie, jak wiele się nauczyłeś. Nie spodziewałbym się, że będę w stanie zaprojektować dom lub wieżowiec po przeczytaniu książki o architekturze przez miesiąc, zwłaszcza jako nastolatek.

Aby spojrzeć na to z perspektywy czasu, przez ostatnie cztery tygodnie pracowałem w niektórych ezoterycznych zakątkach funkcji silników Ruby on Rails. Na dzień dzisiejszy mam wreszcie coś do pokazania z punktu widzenia użytkownika. W tym czasie nauczyłem się tony i opracowałem wiele krytycznych fundamentalnych kodów, które działają całkiem dobrze, ale to mój profesjonalny odpowiednik pozwalający użytkownikom na wpisywanie niektórych rzeczy i odzyskanie czegoś innego: na pierwszy rzut oka zwykły użytkownik nie robi tak imponującego wrażenia , ale włożono w to dużo pracy. Gdyby ktoś powiedział mi, że pieprzę się przez cztery tygodnie, byłbym bardzo zawiedziony, ale wiedziałbym również, że tylko w najmniejszym stopniu rozumieli, co sprawiło, że wszystko stało się tak „proste”.

JasonTrue
źródło
2
+1 za wycięcie zębów w TI 99 / 4A. Prawie ta sama historia była dla mnie zabawą, a rozpoczęcie pracy było o wiele bardziej dostępne (a może tak się wydawało). Moja córka (10) wykazuje zainteresowanie nauką programowania, a ja najtrudniej jest mi wymyślić ciekawy, ale iteracyjny sposób na rozpoczęcie pracy. Do OP od zera wiedzy do 1 miesiąca i robienie tego, co mówiłeś, brzmi wprost na PAR.
Ominus,
Ominus (i David), spójrz na Przetwarzanie i tę książkę z Manning: manning.com/pearson
JasonTrue
4
+1 za nie wszystkie książki są dobre. Z mojego doświadczenia wynika, że ​​większość książek jest skierowana do osób, które już rozumieją programowanie. Niewiele jest skierowanych do nowo przybyłych, ale poleciłbym ten i / lub ten .
David
@David dzięki za link. Zamówiłem książkę dla córki dziś rano.
Ominus,
@Jason: Wspomniał, że był dzieckiem w wieku 14 lat
CyprUS
19

Wygląda na to, że w tej sytuacji twój tata nie jest kimś, kto daje ci pozytywne wsparcie i wsparcie w tym, co robisz. Proste rozwiązanie: nie używaj go do tego.

Wykonuj własne projekty i wykonuj je, ponieważ są zabawne, a nie dlatego, że on (lub ktokolwiek inny) chce, abyś je wykonał. Wybierz coś, co jest dla Ciebie zabawne. Nie musisz uczyć się całego języka / technologii z książki. Zamiast tego po prostu majstruj przy różnych rzeczach. W końcu, gdy wszystko stanie się łatwe, będziesz szukać nowych koncepcji / wyzwań. I odkryjesz, że chcesz czytać książki, które dziś uważasz za nudne (lub przynajmniej niektóre sekcje).

Jeśli kiedykolwiek utkniesz i potrzebujesz pomocy w kodowaniu czegokolwiek, Stackexchange to świetny zasób, jak już się dowiedziałeś.

DXM
źródło
16

Wydaje mi się, że twój tata ma skłonność do nierealistycznych oczekiwań, a może masz historię rozpoczynania rzeczy, a nie ich realizacji, albo jedno i drugie. Ważne jest, aby zdać sobie sprawę, że nic z tego tak naprawdę nie ma znaczenia, liczy się tylko to, że lubisz to, co robisz, i że robisz to lepiej.

Mam bardzo trudny czas z książkami, które mnie nie zabawiają, zawsze tak jest. Uczę się najlepiej, obserwując, jak inni ludzie robią rzeczy, zadając pytania, gdy nie rozumiem celu czegoś, a następnie walczę, dopóki nie zrozumiem. Walka czyni nas silniejszymi i daje nam prawo własności do naszych ostatecznych osiągnięć, być może dlatego tak trudno jest wydostać się z macicy.

Biorąc to pod uwagę, jednym z najostrzejszych narzędzi w twoim zestawie narzędzi będzie zdolność do pozostawania otwartym, produktywnej pracy w krytyce i nie wykluczania porad opartych na źródle. Dobre książki o programowaniu zazwyczaj cię chwytają, inspirują i oczekują, że powrócisz do nich po uderzeniu w ścianę. Bez nich będziesz robił wiele niesamowitych rzeczy bez początkowego zrozumienia, co dokładnie robisz. Programowanie to bardzo celowa sztuka, dlatego zachęcam do szukania książek, które są napisane w sposób łatwy do strawienia.

Od dłuższego czasu programuję zawodowo i mogę powiedzieć, że moja satysfakcja jest naprawdę moja. Mój szef nie do końca rozumie, dlaczego rzeczy, które napisałem, są tak niesamowite, moja żona zasypia, kiedy opowiadam jej o moim dniu, a moi przyjaciele robią wszystko, aby nie pytać mnie o moją pracę. Cieszę się z moich zwycięstw i okazjonalnej okazji, by podzielić się nimi z moimi rówieśnikami. W tym przypadku twój tata nie jest jednym z twoich rówieśników.

Kontynuuj i ulepszaj. Przyzwyczaj się do faktu, że nie-programiści muszą zobaczyć coś imponującego wizualnie, zanim będą pod wrażeniem. Dlaczego nie spróbować szczęścia w pisaniu czegoś takiego jak generator zestawów Mandelbrot / Julia ? To może pokazać mu rodzaj postępu, którego szuka, przez jakiś czas odsuwając go od twojej sprawy. Za dziesięć lat zrobisz coś bardzo podobnego, aby pozbyć się nietechnicznego kierownika, abyś mógł wykonać prawdziwą pracę.

Pamiętaj tylko, że robisz to, ponieważ lubisz to.

Tim Post
źródło
1
Słuchaj tego człowieka, on wie, o czym on mówi;)
drxzcl
2
hehe, podoba mi się fakt, że nie-programiści muszą zobaczyć coś imponującego wizualnie, zanim zostaną pod wrażeniem ”. Napisanie generatora fraktali było jednym z moich pierwszych projektów w szkole informatycznej. I byłem pod wrażeniem :)
Guillaume
Prawdopodobnie najlepsza odpowiedź w całym tym wątku ...
Venki
15

Trudno powiedzieć, czy to pytanie jest najlepsze na forum dla rodziców, czy na forum programowania. Obawiam się, że moja rada nie jest celowa, ponieważ uważam, że w tym pytaniu można znaleźć wiele „problemów” dotyczących relacji ojciec-syn.

To powiedziawszy, na czym chciałbym się skupić, to świetna okazja dla ciebie i twojego ojca, aby połączyć się w temacie, z którym oboje możecie w jakiś sposób dzielić pasję. Będąc ojcem i znając własnego ojca, wiem, jak desperacko chcemy, aby nasze dzieci nas słuchały, postępowały zgodnie z naszymi instrukcjami i uczyły się od nas. Nasze dzieci są często zmuszane do działania przeciwnego. Zatem fakt, że oboje podzielacie ten wspólny interes, jest cudowny.

Ojcowie na pewno mogą być uparci, ale nadal uważam, że jest szansa, aby poprzez to ćwiczenie uformować własną indywidualność i wybór. Nie z poczucia buntu, ale z własnego zapału i ambicji, aby dobrze znać temat programowania. Osobiście wydaje się, że twój ojciec rzucił cię w głąb, jeśli chodzi o programowanie. Oczywiście nie może to być MIPS asembler lub LISP, ale C ++? Jawa? Yikes. Uwielbiam programować, ale czytanie tych wcześnie mogło mnie całkowicie wyłączyć. Żartuję. :)

Chciałbym więc zapytać: co Cię inspiruje ? Jakie rzeczy chcesz zbudować? Odpowiedz na to pytanie, a następnie poszukaj własnych książek i samouczków na ten temat. Chodź tutaj i zadawaj pytania. Zbuduj coś. Następnie pokaż ojcu, co zbudowałeś. Powiedz mu, czego się nauczyłeś. Podziękuj mu za zaangażowanie i powiedz mu, że go doceniasz. Mówię to, ponieważ o to w końcu chodzi. Chce się z tobą podzielić, ponieważ cię kocha. Czasami ojcowie mają trudności z wyrażeniem tego w tradycyjny sposób, dlatego szukamy tych pośrednich sposobów na powiedzenie tego samego. Czasami nie możemy tego zrobić. Ale nie zapominaj, że w tym wszystkim jest pragnienie bycia bliżej Ciebie.

Byrne Reese
źródło
15

Wygląda na to, że nikt jeszcze tego nie sugerował:

Ostatnio zaczął mnie pytać, co z tym zrobiłem, i pokazałem mu program C ++, który pobiera to, co wpisujesz, a następnie przypisuje wartości do każdej litery (A jest pierwszą literą w alfabecie, więc otrzymuje wartość z 1) .. i tak dalej. Następnie sumuje wszystkie wartości i mówi o tym. Zatem słowo „dodaj” miałoby wartość 9.

^^ To nie było dla niego imponujące. Krzyczał na mnie i powiedział mi, że wszystko robię. To nieprawda. Jest niezwykle tradycyjny i uparty i nie słucha niczego, co miałem do powiedzenia. Co mam mu powiedzieć?

Jeśli się nad tym zastanowić, ten program nie robi wielkiego wrażenia na kimś, kto używa komputerów i nie wie nic o programowaniu.

Pokaż tacie, jak to zrobiłeś. Przeprowadź go przez kod źródłowy. Prawdopodobnie (zdecydowanie) nie zrozumie tego, ale pokaże, ile pracy w to włożyłeś i ile rozumiesz, a może odejdzie z bardziej pozytywnym wrażeniem, ile rzeczywiście wykonałeś.

benzado
źródło
3
Zasłużyło to na znacznie większe uznanie, niż się stało. Dobre, niekonfrontacyjne rozwiązanie, które może sprawić, że tata lepiej zrozumie hobby swojego syna.
Fergus In London
@FergusMorrow Zgadzam się. Ta odpowiedź była zdecydowanie za mało pozytywna.
stommestack
12

Rób co chcesz

To twoje życie. Mozesz robić wszystko na co masz ochotę. Nie pozwól nikomu (nawet tacie) kontrolować twojego życia.

Zakładam, że lubisz programować mniej więcej i chcesz zostać odnoszącym sukcesy specjalistą (a twój tata chce, wszyscy chcą). Ale chodzi o to, że nigdy nie odniesiesz sukcesu, dopóki nie wiesz, co robisz i chyba ci się to podoba .

Opanowanie dowolnej dziedziny jest trudne. Nie możesz tego zrobić tylko pod czyimś wpływem. I nikt nie wie, co powinieneś zrobić lepiej niż ty . Chcesz dzisiaj odpocząć i masz ochotę grać w gry przez cały dzień? To twoja decyzja i jesteś za nią odpowiedzialny. Powinieneś nauczyć się być odpowiedzialnym za swoje decyzje i swoje życie. Odpowiedzialność za swoje decyzje jest obowiązkowa dla każdego odnoszącego sukcesy specjalisty.

Co robisz w tej sytuacji? Stań na swoim miejscu, nie słuchaj nikogo i rób wszystko, co uważasz za wartościowe.

Anton Barkovsky
źródło
3
PO jest nieletnim legalnym (najwyraźniej 14). Oczekuje się, że jego rodzice będą kontrolować jego życie, a ślepa walka przez następne cztery lata najprawdopodobniej sprawi, że wszyscy będą nieszczęśliwi.
jwodder
1
@jwodder: Jeśli ci rodzice czują, że muszą kontrolować to, czego ich chłopiec uczy się w wolnym czasie , być może najlepiej zacząć walczyć jak najszybciej. Ja też mam dzieci, takie same jak Dawid. Gdyby moje dziecko nie mogło mi powiedzieć, że się myliłem, kiedy myślała, że ​​tak, bałbym się o jej przyszłość. 14-latek nie ma 7 lat, wie coś o świecie i wie kilka rzeczy, których nie wiedzą jego rodzice. A jeśli okaże się, że nie jest tym, czego chcieli, ponieśli porażkę przez wszystkie poprzednie lata i nie mają już szansy na nadrobienie zaległości, a przynajmniej przez kontynuowanie tego, co robili przez 14 lat.
sbi
10

Prosiłeś o książki. Szczerze mówiąc, lepiej poradzisz sobie z rozwiązywaniem problemów niż czytanie książek. Znajdź zagadkę lub problem, który Cię pasjonuje. Project Euler jest doskonałym źródłem, a CodeGolf może od czasu do czasu oferować ciekawe pytania. Moim pierwszym projektem programistycznym była aplikacja C ++, która znalazła liczby pierwsze. Podręcznik, z którego wówczas korzystałem, oferuje prostą implementację, taką jak ta:

bool isPrime(int x){
    int c = 1;
    while(c < x){
        if(x%c == 0){
            return False;
        }
        c=c+1
        /*c+=1 if compiler is set to '98 or more recent*/
    }
    return True;
}

co jest bardzo nieefektywne. Znalazłem około 500 pierwszych liczb pierwszych z tą funkcją, zanim zrezygnowałem z niesmakiem z powodu jej powolności. Tata i ja świetnie się bawiliśmy, próbując zoptymalizować powyższe, i chociaż była to prosta aplikacja, która nawet nie zapisała swoich wyników w pliku, dobrze się bawiłem, a powstały produkt był fajny.

Czy nauczysz się czytając książki? tak, ale nie mogę podkreślić wartości, jaką jest po prostu grzebanie w języku programowania i uczenie się metodą prób i błędów.

Jeśli uczysz się programowania dla swojego taty, przestań i znajdź swój własny powód, zrób to. Mój wciąż mnie nęka, żebym zbudował mu automatyczny system handlu na dużą skalę. Jestem śmiertelnie poważny, kiedy mówię, że musisz znaleźć coś , nad czym chcesz popracować, ponieważ w przeciwnym razie prawdopodobnie całkowicie zrezygnujesz z programowania, ponieważ zobaczysz to jako obowiązek, a nie hobby lub sport.

Spróbuj przeczytać książkę Linusa Torvaldsa „Just For Fun”, w której opowiada o początkach systemu operacyjnego Linux. Tytuł mówi wszystko.

Poważnie. Po prostu zhakuj jakiś problem. Kiedy utkniesz, zaangażuj starca.

Jeśli twój tata nie docenia twojej pracy, to nie dlatego, że jest rozczarowany. Jest architektem, nie wie, jak skomplikowane są niektóre rzeczy. Spróbuj przeprowadzić go przez kod, choćby tylko logikę, i spraw, by docenił logikę, której nauczyłeś się, pisząc ją.


TL; DR


  1. Po prostu zadzieraj z czymś. Rozwiązać problem. Jeśli nie możesz go rozwiązać, znajdź czyjeś rozwiązanie i spróbuj je zrozumieć.
  2. Baw się dobrze z numerem 1
  3. Ilekroć się czegoś uczysz lub robisz postępy, pamiętaj, aby powiedzieć starszemu człowiekowi.
  4. Tempo się. Każdy uczy się na swój własny sposób i we własnym tempie. Po prostu trzymaj się tego, a ostatecznie będziesz mieć umiejętności robienia tego, co chcesz.
rmckenzie
źródło
1
W rzeczywistości wyraźnie stwierdza, że ​​nie prosił o książki ... Z resztą zgadzam się
Paul
6

Spróbuj znaleźć książkę, która jest szczególnie wstępem do programowania dla nowicjuszy. Może coś takiego jak Hello World! Programowanie komputerowe dla dzieci i początkujących Warren Sande.

Powinieneś także zobaczyć, co ma twoja biblioteka. Większość bibliotek powinna mieć kilka książek dla początkujących.

Alger
źródło
5

Moim zdaniem masz dwa problemy:

  1. Chcesz nauczyć się programowania i sprawić, by było przyjemnie (zabawa jest niezbędna, ułatwia wszystko)
  2. Masz klienta, który tak naprawdę nie rozumie nic na temat programowania, ale ma pojęcie, czego chce. (Twój tata w twoim przypadku)

MOIM ZDANIEM:

  1. W przypadku pierwszego problemu po prostu wchodzisz na takie strony i zadajesz takie same pytania. Znajdź zasoby takie jak https://softwareengineering.stackexchange.com/questions/62224/how-to-become-a-professional-programmer/62263#62263 . Pomyśl o czymś, co chcesz stworzyć (gra, lista rzeczy do zrobienia, system zarządzania kolekcją filmów, kolejna najlepsza platforma społecznościowa) i po prostu zacznij pisać. Lub zacznij od rozwiązywania zagadek Gdzie mogę znaleźć puzzle programistyczne i wyzwania?

  2. Twój drugi problem jest trudniejszy, musisz kształcić swojego ojca (choć wydaje się, że nie jest zbyt chętny). Podczas nauki będziesz lepiej wyjaśniać mu, co jest trudne w programowaniu. Możesz spróbować użyć metafor, takich jak jej wyjaśnienie. Co to jest dobra metafora programowania? . Inna wskazówka jest taka, że ​​generalnie nieprogramiści nie mają złożoności świetnego algorytmu, ale łatwo ich zniechęcają ładnie wyglądającymi interfejsami. W zależności od wybranej platformy możesz łatwo generować dość wyglądające interfejsy, aby zaimponować tacie. Użyj na przykład:

Mam nadzieję że to pomoże.

KeesDijk
źródło
+1 Podoba mi się twój post, ale nie sądzę, żeby ktokolwiek tutaj sugerował, że ten dzieciak dowie się, jakie są oczekiwania jego ojca. Wydaje się nieco przedwczesne wykluczanie oczekiwań ojca, nie wiedząc, jakie są.
user179700,
5

Chciałbym tylko dodać, że byłem kiedyś w bardzo podobnej sytuacji, mój tata tak naprawdę nie rozumiał, co oznacza pozytywne wzmocnienie. Ale widząc, jak byłem wytrwały i odporny na jego czasami surową dezaprobatę, udało mi się to utrzymać. Jakieś dwadzieścia lat później relacja z moim tatą bardzo się zmieniła, poprawiła, ale subtelne niuanse z tamtych czasów nadal istnieją.

To jest po prostu trudny okres w twoim życiu i najważniejsze jest to, że dobrze się bawisz, robiąc to bardziej niż cokolwiek innego.

John Leidegren
źródło
5

Jeśli chodzi o język programowania, zgadzam się, że powinieneś skupić się tylko na jednym.

Właściwie polecam taki, którego jeszcze nie masz: Python. Python jest językiem, który jest dość łatwy do nauczenia się, ale także dość silny. C ++, Java, PHP i JavaScript są znacznie bardziej złożone.

Istnieje kilka książek Manninga, które uczą programowania przy użyciu Pythona. Zdecydowanie rozważyłbym „Witaj, świecie!”, Nawet jeśli jest on skierowany do nieco młodszej grupy demograficznej.

Jeśli chcesz kontynuować korzystanie z C ++, polecam tę książkę:

Chociaż jest to raczej „odniesienie”, a mniej „samouczka”. Nie jestem świadomy dobrego samouczka C ++ - istnieje mnóstwo książek typu „naucz się szybko C ++”, ale nie sądzę, aby były one bardzo przydatne. (C ++ jest dość trudnym językiem do nauki w pierwszej kolejności; większość programistów C ++ zaczęła od łatwiejszego języka).

Stephen Cleary
źródło
Zgadzam się, python jest lepszym wyborem jako pierwszy język. C ++ jest świetny, ale jest bardzo wydajny i trudny w użyciu - to jak nauka latania samolotem przed nauką chodzenia. Za pomocą Pythona możesz korzystać z bibliotek od samego początku i robić fajne rzeczy. Twoja funkcja string_add zawiera 5 wierszy czytelnego kodu. Np. def string_add(a_string): \n\t sum = 0 \n\t for letter in a_string:\n\t\t sum += ord(letter) - ord('a')+1 \n\t return sum(\ N - nowa linia \ t-tab) lub przy użyciu bardziej zaawansowanego programowania funkcjonalnego jest to jedna linijka. string_add = lambda a_string: sum(map(lambda ch: ord(ch)-ord('a')+1, a_string))
dr jimbob
+1 Zajęło mi około roku, aby nauczyć się C ++, podczas gdy zajęło mi tylko dziesięć minut, aby nauczyć się języka Python.
prawej strony
+1 Poleciłbym również programowanie Head First, które wykorzystuje Python.
David
4

O C ++, Java, PHP, JavaScript i Android (abyś mógł wybierać między nimi, ponieważ próba opanowania wszystkiego naraz może się nie powieść):

  • C ++: Jest to niezwykle potężny język. Ale zbyt potężny, zbyt bezlitosny, zbyt tajemniczy na początek. Aby zrozumieć, musisz zrozumieć wiele rzeczy. Myślę, że to kiepski wybór języka na rozpoczęcie zbyt programu.
  • Java: Popularny wybór dla początkujących. W pewnym sensie jest to przeciwieństwo C ++: C ++ oferuje dowolny możliwy sposób strzelania sobie w stopę, podczas gdy Java próbuje nie dopuścić do niczego, co mogłoby być poza twoją kontrolą, co w rzeczywistości jest dość paraliżujące. Jest to trochę zbyt uproszczone, zbyt trywialne, zbyt restrykcyjne, aby pokazać ci dużo programowania. I nie można wiele zrobić w Javie, nie znając dużo standardowego API i kilku frameworków. Java jako technologia ma wiele do zaoferowania, ale ma swoje wady jako język.
  • PHP: Bardzo popularny język, głównie ze względu na niską barierę wejścia. PHP jako język dojrzał i jest teraz bogaty w funkcje, których oczekuje się od współczesnego języka. Jednak PHP niesie ze sobą dużo bagażu ze względów historycznych. Tak więc, chociaż faktycznie pozwala pisać dobre programy, niewiele osób tak robi i nie znajdziesz tak wielu informacji o tym, jak to zrobić. A standardowa biblioteka to bałagan. Jeśli zdecydujesz się napisać PHP, radzę zacząć od frameworka od samego początku, ponieważ zazwyczaj promują one solidne rozwiązania typowych problemów. Osobiście polecam symfony , flow3 i CakePHP . Moja rada jest jednak taka: nie zaczynaj od tego.
  • JavaScript: zaskakująco silny język, gdy go poznasz. Ma „kilka” dziwactw , ale tak naprawdę powinieneś być w stanie z tym żyć. Chociaż początkowo był używany do dodawania interaktywności do stron HTML, JavaScript może być teraz używany w wielu polach. Oprócz klasycznego zastosowania, może być stosowany do pulpitu i rozwoju przenośnych aplikacji z platformy jak Appcelerator , PhoneGap i AIR oraz tworzenie serwerów przy użyciu node.js .
    Istnieje wiele bibliotek i frameworków JavaScript. Sugeruję sprawdzenie knockout i jQuery, a także qooxdoo i ext.jsjeśli szukasz czegoś pełnego. Ponadto w przypadku programowania na serwerach powinieneś sprawdzić express.js .
    Chciałbym również zwrócić uwagę na CoffeeScript , język, który kompiluje się w JavaScript, ale ma kilka przydatnych dodatków.
  • Android: w przeciwieństwie do pozostałych czterech, jest to platforma. Platformy należy wybrać w zależności od tego, co chcesz zrobić. Jeśli jest to tworzenie aplikacji mobilnych na urządzenia z Androidem, to idź. Nie jestem pewien, czy najlepiej zacząć od tego, ale ostatecznie musisz stworzyć rzeczy, które uważasz za fajne.

W każdym razie naprawdę ważne jest, aby było to przyjemne. To, że tworzysz rzeczy, uważasz za fajne. To zaspokoi niektóre z twoich potrzeb lub z którymi możesz się bawić. Programowanie jest dla tych, którzy lubią to. Potrzebujesz zestawu narzędzi, który pozwala tworzyć aplikacje z kilkoma liniami kodu. JavaScript / CoffeeScript może być dobrym punktem wyjścia.
Osobiście chciałbym wskazać Ci Ruby. Nauczył mnie wiele o programowaniu i niefortunnie mnie nie znało, kiedy zaczynałem programować. Zasadniczo istnieją dwie wspaniałe książki (obie dostępne za darmo):

  • Dlaczego Poradnik - osobiście dla mnie było to trochę za dużo rozrywki (żartów, kreskówek itp.) W tej książce, ale może ci się to podobać.
  • Pragmatic Ruby - działał idealnie dla mnie. Jest trochę wytrawny, ale po prostu zajmuje się podstawowymi.

Oprócz tego proponuję sprawdzić buty . To świetne narzędzie z niesamowitą zintegrowaną pomocą, w tym materiałami referencyjnymi, samouczkami i pokazami. Pierwsze rzeczy będą gotowe w ciągu kilku dni.

I prawdopodobnie na później chciałbym wskazać wam haXe . Myślę, że to świetny język (mój wybrany język), a ostatnio wydano całkiem nowy przewodnik dla początkujących . Jednak haXe nie ma dostępnych narzędzi, które sprawiają, że tworzenie aplikacji jest równie proste jak w JavaScript i Ruby. Dlatego może być początkowo nudne, a nawet frustrujące, co niweczy cały cel.

back2dos
źródło
Zdecydowanie poleciłbym mu obciąć zęby na C / C ++. Zrobiłem to samo i uważam, że nauka każdego języka jest zaskakująco łatwa, ponieważ prawie wszystkie współczesne języki wywodzą się z C / C ++.
CyprUS
@CyprUS: Chociaż zgadzam się, oboje warto się uczyć, ale nie sądzę, aby któryś z nich był dobrym wyborem, aby rozpocząć naukę programowania. Nie rozumiem też, w jaki sposób LISP lub rodzina Smalltalk czerpałyby cokolwiek istotnego z obu tych elementów.
back2dos,
Myślę, że musimy pozwolić chłopakowi zdecydować, co chce zrobić. To powiedziawszy, LISP / SmallTalk są zbyt ezoteryczne, aby były ogólnie przydatne (moja opinia)
CyprUS
@CyprUS: Oferowałem tylko porady. W końcu musi wybrać. Nie miałem na myśli LISP ani SmallTalk, ale (częściowo) nakładającą się klasę nowoczesnych języków, które stworzyli, w szczególności Ruby, Squeak, Objective-C, Lua, Scala, Erlang, Clojure, JavaScript, F #, Nemerle, Scheme. Wszystkie z nich są faktycznie używane, a niektóre z nich należą nawet do najpopularniejszych języków .
back2dos,
3

To całkiem sporo, czego można się spodziewać za miesiąc. Raczej powinieneś skoncentrować się na nauce jednego języka lub paradygmatu naraz, bo może to być przytłaczające. Zbyt duże odepchnięcie naraz jest również dobrym sposobem na wyłączenie go. Możesz uczyć się lepiej, pracując nad konkretnym programem, który Cię interesuje. Jeśli interesują Cię telefony z Androidem, prawdopodobnie lepiej jest używać Javy niż C ++. Być może spodziewał się czegoś w stylu interfejsu użytkownika jak typowy klient, więc jego rozczarowanie nie zniechęci :)

Niektóre książki Head First mogą uczynić naukę nieco mniej suchą, jeśli jesteś zmuszony trzymać się książek.

Dozorca więzienny
źródło
3

Myślę, że powinieneś odłożyć na bok bardziej formalne rzeczy i rzucić okiem na Scratch - http://scratch.mit.edu/ - pozwala ci radzić sobie z większością konstrukcji programistycznych w łatwiejszy sposób, jednocześnie ucząc się tych rzeczy potrzebujesz pętli itp.

Pozwala również na bezbłędną wielowątkowość, co jest być może najtrudniejszą częścią do wykonania ręcznie i która jest potrzebna, aby dać interesujące wyniki w dzisiejszym świecie.

Nie lekceważ tego, ponieważ wykorzystuje kolory i podejście do programowania podobne do klocków Lego. Możesz wiele z tym zrobić, nie gubiąc się w szczegółach technicznych.

użytkownik1249
źródło
+1 - Scratch to wspaniały i przyjemny sposób nauki. W rzeczywistości został zaprojektowany z myślą o przedziale wiekowym, ale nadal jest Turing Complete. Sprawdź także BYOB (Build Your Own Blocks), aby uzyskać obiektowe rozszerzenie do Scratch.
Morgan Herlocker
3

Zapytaj tatę, czy mógłby zaprojektować wieżowiec w twoim wieku. Takie jest programowanie. Nauka wymaga czasu, ponieważ jest tyle do nauczenia się. To jak jazda na rowerze, tyle że masz tysiąc pedałów, kół zębatych, uchwytów, gałek i nie możesz wybrać, który z nich użyć w danym momencie. To wymaga praktyki.

Nie wątpię w ciebie. Zajmowałeś się C ++ na wczesnym etapie, aby zostać programistą. To dla mnie imponujące .

Trzymaj się i powodzenia w karierze programisty!

Jörgen Sigvardsson
źródło
3

Wiem, że jest już wiele odpowiedzi. Ale nie widziałem tej rady: postaraj się, aby twój ojciec ci pomógł. Spróbuj wybrać coś włochatego w książce C ++, które możesz zrozumieć, i poproś go o pomoc.
Daj mu książkę i pozwól mu czołgać się w C ++. Jestem prawie pewien, że dzięki temu zda sobie sprawę, jak trudne jest kodowanie.

Guillaume
źródło
3

Spróbuj zmienić tę sytuację dla własnego dobra. Po prostu zaakceptuj, że to, co dotychczas osiągnąłeś, nie wystarcza i spróbuj zrobić lepiej ... Będziesz miał wystarczająco dużo trudnych chwil, gdy będziesz pracował dla szefa, jeśli nie zaczniesz z tym radzić sobie i poprawiać odtąd .

Gdybym tylko pracował dwa razy ciężej, gdy byłem w twoim wieku ...

Jasio
źródło
3

Wkład twojego ojca nie sprzyja twojemu procesowi uczenia się. Tak, istnieje wiele sposobów przejścia przez naukę programowania, jak wspomnieli inni. Jednak moim zdaniem pokazałeś fenomenalny postęp w C ++. Twój program dodający byłby czymś, z czym ledwo mogłem sobie poradzić po pierwszym semestrze programowania w Javie.

Są dwie rzeczy, z którymi musisz się zmierzyć, jeśli chcesz kontynuować:

1) Zajmij się swoim ojcem.

Posłuchaj, każdy tata ma ekstrawaganckie sny dla swoich dzieci. Jednak ich oczekiwania mogą być bardzo wysokie i ostatecznie doprowadzą do czegoś, co nie będzie nawet możliwe w niektórych bajkach. Poleciłbym sprowadzić kogoś zewnętrznego w tej sytuacji, aby lepiej ocenić twój postęp i sprowadzić ojca na ziemię. Możesz spróbować porozmawiać z rodziną / znajomymi, których znasz z doświadczeniem programistycznym, a nawet ludzie w tej społeczności mogą wysłać mu wiadomość e-mail w imieniu naszych własnych doświadczeń i wiedzy. Jest to najważniejszy krok ze wszystkich, ponieważ jeśli twój tata się nie ochłodzi, stracisz zainteresowanie razem.

2) Znajdź fokus.

Nie sprzyja uczeniu się wszystkiego na raz. Wybierz język i trzymaj się go. Podczas czytania książki na określony język. Podążanie za przykładami z książki nie jest właściwą drogą. Regurgitacja jest procesem uczenia się dla niektórych, ale nie dla wszystkich (szczególnie dla mnie). Ważne jest, aby atakować go z dowolnej liczby kątów, którymi możesz się interesować. Programowanie książek różnych autorów w tym samym języku, ale różne zastosowania mogą zwiększyć twoją ciekawość, w jaki sposób chcesz używać języka i wgląd w własne pragnienie programowania (tworzenie gier? projektowanie aplikacji? testowanie? itd.). Możesz także wybrać się na osobistą przygodę w tworzeniu programu. Zastanów się, co chcesz robić, niezależnie od tego, co wiesz w tej chwili, a następnie badaj to podczas programowania. Z biegiem czasu ty W końcu chcę wypróbować inne języki programowania, które są ze sobą powiązane lub nie. Możesz również zdać sobie sprawę, że nie chcesz robić wszystkiego razem.

Przede wszystkim pamiętaj, że nie liczy się wynik końcowy, to podróż. Nie zapomnij się dobrze bawić!

Jonathan
źródło
3

Otrzymałeś dobre opinie i porady na temat aspektów programowania twojej sytuacji. Ale chcę dodać coś z innej perspektywy ...

Mam wrażenie, że doświadczasz negatywnych myśli na temat swojego taty - wywarł na ciebie presję i skomentował, co wywołało u ciebie trochę zmartwień i zmartwień - i które pozbawiły cię frajdy z programowania. Szkoda i myślę, że większość ludzi zgodzi się, że programowanie jest fajne - programuję od ponad trzydziestu lat i nadal sprawia mi to przyjemność.

Ale myślę, że twój tata naprawdę jest po twojej stronie. Zrobił to, co uważał za słuszne, próbował pomóc, kupił ci książki, aby dać ci dobry początek. Ale pomylił się (a ja mówię jako tata, czasem coś źle robimy!). Dla niego książki są prawdopodobnie miejscem, w którym zaczął w swojej karierze architekta (zakładam, że zaczęło się to zanim internet i www były powszechnie dostępne, jeśli w ogóle). Więc według jego sposobu myślenia książki są od początku.

Zakładając, że twój tata jest po twojej stronie (i jestem pewien, że tak jest), problem polega na tym, że po prostu nie rozumie, jak trudne może być, kiedy zaczynasz programować - więc pokaż mu wszystkie odpowiedzi, którymi był opublikowałem tutaj - jestem pewien, że twój tata jest dobrym facetem, on zrozumie i będzie cię wspierać.

Powodzenia w programowaniu - wygląda na to, że zaczynasz dobrze.

Simon Knights
źródło
może dodanie „cudowności” nie będzie zbyt duże, prawda? Stworzenie takiego programu będzie trudne dla wielu moich przyjaciół, zapewniam cię
CyprUS,
@CyprUS - Nie komentowałem jego konkretnych umiejętności (choć jestem pewien, że są w porządku). To naprawdę miało związek z jego tatą.
Simon Knights
3

Jedna rzecz nie wymieniona w innych odpowiedziach:

Jak zapewne wiesz, bycie dzieckiem (mam 14 lat) i mówienie o nauce programowania z nudnych książek nie jest najłatwiejsze. Zawsze mnie rozprasza. Powiedziałem mu wcześniej, że nie muszę kupować książek i mogę po prostu oglądać samouczki online… ale nie, jest taki staroświecki. Pozwala mi tylko korzystać z książek.

Na pewno musisz popracować nad tą częścią. Internet jest kluczowym narzędziem każdego programisty i trzeba z nim pracować.

Po pierwsze, programowanie polega na rozwiązywaniu problemów. Jeśli nie wiesz, jak zrobić X w języku XYZ, google go i szukać rozwiązań. * Szybkie znajdowanie rozwiązań jest dla programisty równie ważne jak używanie klawiatury.

Po drugie, inną kluczową umiejętnością jest posługiwanie się dokumentacją . Książki są zwykle jak samouczki - oferują wskazówki, ale nie oferują pełnej wiedzy - i tu przydatna jest dokumentacja. Na przykład: programujesz w C ++, masz miesiąc doświadczenia. Wcześniej czy później (powiedziałbym niedługo) będziesz musiał użyć standardowej biblioteki ... a może już ją wykorzystałeś? Jeśli tak, to dobry znak, prawdopodobnie twoja książka nie jest zła w tym przypadku. W każdym razie - warto wiedzieć, co jest już obecne w standardowych bibliotekach C ++, a co nie. W tym celu przydatne jest utrzymywanie otwartego odnośnika takiego jak http://cplusplus.com/ podczas programowania.


Internet jest kluczowa dla kodowania, a nawet większe znaczenie dla uczenia się kodu. Jeśli twój tata go nie rozumie i spodziewa się, że nauczysz się programowania tylko z książek , to jego podejście przynosi efekt przeciwny do zamierzonego i sprawia, że ​​postępujesz wolniej (i możliwe, że masz złe nawyki).

Kos
źródło
2

Nie ma pojęcia o procesie skłaniania się do programowania. Możesz przeczytać wszystkie te książki i nadal nie możesz napisać niczego przyzwoitego, ponieważ najdłużej zajmuje się prawdziwe zrozumienie tego, co możesz zrobić i jak do tego podejść.

Powiedziałeś tacie, że lubisz programować - nie pozwól mu go zepsuć. I z pewnością nie próbuj uczyć się 5 języków programowania, przynajmniej nie teraz. Trzymaj się stosunkowo prostej aplikacji, takiej jak Java, którą możesz przenieść na inne, gdy już ją opanujesz.

Nawiasem mówiąc, jeśli chodzi o książki, jest to właściwy sposób, ponieważ uczysz się języka we właściwy sposób. Postępowanie zgodnie z samouczkami często prowadzi do wykrycia złych nawyków itp.

Powodzenia; i daj mu znać, że robisz to poprawnie, postęp jest powolny, ale uczysz się tak dużo podczas robienia tego.

Alex Coady
źródło
2

Myślę, że wielu programistów w wieku 25-35 lat dorastało, grając w Nintendo i Sega. Znaczna część z nich / nas dokonała przemyślenia, dlaczego warto grać w grę, kiedy można stworzyć własną. Jest to bardzo samolubna motywacja, która może doprowadzić cię do bycia lepszym programistą. To poczatek. Później możesz przejść od pisania gier wideo (problemy wirtualne) do gier o wyższych stawkach (problemy w świecie rzeczywistym). Podobnie jak ta recepta dla tego pacjenta, która nie będzie oddziaływać niekorzystnie z innym przepisanym lekiem, czy te ciężarówki mogą realizować największą ilość dostaw przy minimalnej ilości gazu w celu zmniejszenia zanieczyszczenia, lub w jaki sposób mogę zapewnić zakup tego zapasu za taką cenę, jaką chcę, gdy 1000 innych kupuje go w tym samym czasie.

Mark Lapasa
źródło
1

Architektura jest zakorzeniona w świecie fizycznym, o którym uczysz się od urodzenia. Dla studenta architektury architektura gra na legosie byłaby stratą czasu. Twój tata zakłada, że ​​skoro znasz matematykę, znasz podstawy i powinieneś być w stanie zacząć produkować. To nie prawda. On nie wie pierwszej rzeczy o programowaniu, ponieważ nawet nie zdaje sobie sprawy, że nie jest to gałąź matematyki .

Programowanie to nowy świat. Najlepszym sposobem na opanowanie go jest nauczenie się go tak, jak nauczyłeś się świata fizycznego: zanurz się i eksperymentuj. Jednym słowem, graj. Czas na klocki Lego.

Dla porównania rozważ astronautów. Oni także mają nowy świat, na który są całkowicie nieprzygotowani. Muszą zacząć od podstaw, takich jak poruszanie się po pokoju.

Jako następny krok zasugerowałbym stworzenie gry, w której komputer wybiera losową liczbę, a ty próbujesz zgadnąć, a ona powie ci, czy zgadujesz za wysoko, czy za nisko.

Wypróbuj też wiele różnych języków! Nie wszystkie naraz, ale może na tydzień.

Gdy zdobędziesz trochę doświadczenia, stworzenie pełnoprawnej gry wideo jest jednym z największych wyzwań, jakie możesz podjąć jako programista-czeladnik. Gry wideo dotykają prawie każdego zakątka naszej dyscypliny, a zbudowanie jednego z nich to świetny sposób na rozwijanie umiejętności. Jest to również idealne miejsce do eksperymentowania i uczenia się na coraz wyższych poziomach umiejętności.

Kevin Conner
źródło
0

Poświęć trochę czasu na naukę języków programowania, im więcej ćwiczysz, tym więcej zajmiesz się programowaniem, tym razem stworzyłeś bardzo prosty program, który jest całkiem ładny dla początkującego, ale w miarę postępów upewnij się, że tworzysz dobry program, który może być właściwie używany przez twojego ojca, cóż, jeśli zapytasz mnie, w ten sposób pomogłem ojcu w jego pracy.

Po prostu porozmawiaj ze swoim tatą i wyjaśnij mu różne rzeczy. Jestem pewien, że naprawdę to zrozumie i jestem pewien, że pewnego dnia będziesz doskonałym programistą.

Źródło
źródło
0

Studiuję jako inżynier oprogramowania, a postęp nauki programowania w mojej edukacji był czymś więcej niż tylko czytaniem książki.

Przede wszystkim polecam Ci naukę języka C, ponieważ jest to język łatwy w obsłudze, a wiele innych języków (takich jak C ++, Object-c) jest zbudowanych na C. Sposób, w jaki to zrobiliśmy, polegał na zakupie mikroukładu ( w naszym przypadku Atmel Mega16 z zestawem STK 500, który jest po prostu płytką z diodami LED i przyciskami), a potem po prostu bawiliśmy się nim, zaprogramowaliśmy programy, aby zrobić bip i bop. To więcej zabawy niż tylko czytanie i pisanie programów IMO na cześć świata.

Gdy C stanie się dla Ciebie spacerem do parku, przejdź do C ++ i programowania obiektowego (OOP). OOP jest kluczową koncepcją w wielu językach i sposobami myślenia o programowaniu, dlatego jest koniecznością, jeśli poważnie podchodzisz do programowania. Zanim zanurzysz się w nim, zapoznaj się z teorią stojącą za OOP - w przeciwnym razie może to być trudny proces :-)

Na koniec zalecę zapoznanie się z różnymi typami danych, takimi jak stosy, kolejki, sterty itp., Które doskonale rozumiesz podczas programowania i czytania o nowych językach.

Powodzenia przyjacielu!

Kasper Munck
źródło
Poleciłbym coś innego niż C ++ do nauki OOP. Python jest dobry. C ++ jest tak złożonym językiem, że próba uczenia się z nim koncepcji OO jest bardzo bolesna; kiedy już się ich nauczysz, będziesz wiedział, co zrobić z wieloma jego nieprzezroczystymi funkcjami.
nmichaels,