Inny sposób uczenia się programowania

0

Jako że znam już powiedzmy sporo języków (java,c#,php,JS,ruby,python,delphi) pomyślałem że kolejnych nie będę się uczył tak jak pozostałych (tzn programując), tylko czytając kod innych. Pomyślałem o tym dlatego że wtedy nie musiałbym popełniać swoich błędów żeby się na nich czegoś nauczyć, tylko po prostu widziałbym w kodzie innych że inni tak nie robią, więc ja chyba wtedy też tak bym nie zrobił?

Mógłbym się tak przesiąść np o type'scripcie albo jakimś giga frameworku który wymagałby miesięćy/lat żeby go ugryźć. Co myślicie?

1

Nie znam się na psychologii, ale nie jestem przekonany, czy czytanie o błędach innych będzie mieć lepszy efekt od popełniania ich.

0
Silv napisał(a):

Nie znam się na psychologii, ale nie jestem przekonany, czy czytanie o błędach innych będzie mieć lepszy efekt od popełniania ich.

Nie zrozumiałeś tematu. Nie czytałbym o błędach.

0

Źle się wyraziłem może. Ale co oznacza "(...) widziałbym w kodzie innych że inni tak nie robią, więc ja chyba wtedy też tak bym nie zrobił?"

0
Silv napisał(a):

Źle się wyraziłem może. Ale co oznacza "(...) widziałbym w kodzie innych że inni tak nie robią, więc ja chyba wtedy też tak bym nie zrobił?"

No np nie widziałbym nigdy jak ktoś wstawia logikę do modeli, więc ja sam bym tak nie robił. Gdybym sam programował, być może wpadłbym na to żeby to tam wstawić i dopiero później nauczyłbym się że to zła praktyka.

0

Ach. W ten sposób rozumowałeś. Nie odczytałem tego. Przez zaniechanie poznawania. :) W takim razie zgadzam się z tą częścią. Druga strona medalu to ta, o której wspomniałem. Chodzi o to, że nie widziałbyś drogi do błędu (poprzez np. pisanie własnego kodu), toteż nawet jeśli byś wiedział, że nikt czegoś nie zrobi, to jeśli Tobie by to jakoś przyszło do głowy, to byś nie wiedział, czy to błąd, czy nie.

PS. Poza tym pozostaje jeszcze kwestia widocznych błędów innych. To, że nie widzisz czegoś, to raz, ale to, co widzisz, czy jest zawsze poprawne.

PS2. Swoją drogą, ciekawy eksperyment myślowy! :)

4
TomRiddle napisał(a):

Jako że znam już powiedzmy sporo języków (java,c#,php,JS,ruby,python,delphi)

W zasadzie to znasz powiedzmy 1 i pół jezyka. Różne dialekty imperatywno obiektowej bryndzy + dialekty totalnej bryndzy.

1
jarekr000000 napisał(a):
TomRiddle napisał(a):

Jako że znam już powiedzmy sporo języków (java,c#,php,JS,ruby,python,delphi)

W zasadzie to znasz powiedzmy 1 i pół jezyka. Różne dialekty imperatywno obiektowej bryndzy + dialekty totalnej bryndzy.

Tzn? Chciałbym poznać Twój punkt widzenia.

1

Staram się uczyć czasem naprawdę innych jezyków, ale u mnie działa tylko metoda learning by doing:
inne to prolog, idris, coq, agda, clojure, haskell (od biedy). Większośc innych to jakieś ścierwo - to samo tylko w innej składni ciągle.
erlang, elkixir nie poznałem, nie wiem

0

Trudno się tu nie zgodzić z Jarkiem, bo przecież czym się różni taka Java od C#? API trochę innę, jakis syntax sugar i tyle. Kod można przepisywać z jednego w drugi praktycznie 1:1
Z pozostałych wymienionych języków może JS jest trochę inny i wymaga lekkiej zmiany sposobu myślenia. Niemniej nadal jest to bardzo daleko od jakiegoś Ocamla czy Prologa.

Prawda jest taka że doświadczony programista może się raz dwa "nauczyć" nowego języka o znanym paradygmacie. Ot, po prostu uczysz się jak wyglądają pewne znane prymitywy w tym nowym języku i voila. Jak posadzisz gościa od C# przy Javie i każesz mu coś napisać, to myśle że da radę zrobić to "z marszu", z małą pomocą podpowiadania składki. Jak go posadzisz przy Ocamlu to wątpie żeby dał radę napisać cokolwiek co się skompiluje.

A co do nauki przez czytanie, to moim zdaniem strata czasu.

0

tylko ile % jesteś w stanie zapamiętać czytając kod? czy czytanie jest skuteczniejszą metodą niż praktyczne robienie czegoś? prędzej czy później większość rzeczy obviously zapomnisz, ale pisząc utrwalasz sobie wiedzę na dłużej. Dlaczego w zasadzie wybrałeś akurat czytanie?

1

Zakładając, że będziesz potrafił zapamiętać wszystko co przeczytałeś, to pewnie tak - mógłbyś się tak uczyć. Jednak człowiek zapamiętuje poprzez emocje i takie różne rzeczy, jak się frustrujesz bo nie potrafisz czegoś napisać i się udaje po godzinie - to masz mnóstwo emocji i duże prawdopodobieństwo, że wnioski z tej "walki" zapisały się w Twojej głowie.

Dopóki nie sprawdzisz to się nie dowiesz, spróbuj się tak uczyć i daj znać jakie były efekty.

0
Shalom napisał(a):

Trudno się tu nie zgodzić z Jarkiem, bo przecież czym się różni taka Java od C#? API trochę innę, jakis syntax sugar i tyle. Kod można przepisywać z jednego w drugi praktycznie 1:1
Z pozostałych wymienionych języków może JS jest trochę inny i wymaga lekkiej zmiany sposobu myślenia. Niemniej nadal jest to bardzo daleko od jakiegoś Ocamla czy Prologa.

Prawda jest taka że doświadczony programista może się raz dwa "nauczyć" nowego języka o znanym paradygmacie. Ot, po prostu uczysz się jak wyglądają pewne znane prymitywy w tym nowym języku i voila. Jak posadzisz gościa od C# przy Javie i każesz mu coś napisać, to myśle że da radę zrobić to "z marszu", z małą pomocą podpowiadania składki. Jak go posadzisz przy Ocamlu to wątpie żeby dał radę napisać cokolwiek co się skompiluje.

A co do nauki przez czytanie, to moim zdaniem strata czasu.

Niby tak, ale nie do końca. Ktoś by powiedział że frameworki Angular/Vue/React są do tego podobne ale wcale nie jest się tak łatwo przesiadać pomiędzy nimi tak samo jak pomiędzy Java/C#. Poza tym czy Php do Pythona tak podobny? Chyba nie aż tak.

Tak czy tak, nie taki był temat.

Pomysł wziął się stąd że czytając/oglądają filmiki jak ktoś kodzi można wszędzie (autobus, droga do pracy, przerwa, etc.) a programić można tylko przy kompie.

0

Pomysł wziął się stąd że czytając/oglądają filmiki jak ktoś kodzi można wszędzie (autobus, droga do pracy, przerwa, etc.) a programić można tylko przy kompie.

Jeżeli masz na myśli również wykorzystanie wolnego czasu, to w mojej opinii w porządku. Inna sprawa, czy masz ochotę w wolnym czasie zastanawiać się nad cudzym kodem, a nie odpoczywać.

0

Nauka nowego języka programowania nie powinna stanowić problemu dla programisty backend. Inaczej sprawa wygląda z nauką nowych frameworków. Dobry sposób to "inspiracja", czyli zrobienie kopii cudzego projektu.

2

IMO - nie da się nauczyć nowego języka wyłącznie o nim czytając, podobnie jak nie da się nauczyć teoretycznie jak używać młotka. Z drugiej strony, u mnie najlepiej działa połączenie teorii z ćwiczeniami - w drodze do pracy jakaś Coursera / Udacity filmiki itd., przy komputerze zrobienie zadań z kursu, utrwalenie i "upraktycznienie" wiedzy.

1

Pierwsze skojarzenie to jak czytanie o tym, żeby nie dotykać czajnika przy gotowaniu wody, bo można się oparzyć. Po takim czytaniu dotknie się gorącego garnka, bo czytając nie wiemy co to jest coś gorącego i co nam może zrobić.

Co do samej nauki jezyków, to jak Shalom wspomniał przesiadka się z C# na java to nie problem i można kodować, tylko co z tego, jak prawdziwa znajomość polega na znajomości użytecznych api i bibliotek, tak by pisać z palca, a nie szukać po dokumentacjach - a na to potrzeba już lat doświadczenia.

0
piotrpo napisał(a):

podobnie jak nie da się nauczyć teoretycznie jak używać młotka.

wasiu napisał(a):

Pierwsze skojarzenie to jak czytanie o tym, żeby nie dotykać czajnika przy gotowaniu wody, bo można się oparzyć. Po takim czytaniu dotknie się gorącego garnka, bo czytając nie wiemy co to jest coś gorącego i co nam może zrobić.

Moim zdaniem odnoszenie programowania do młotków i czajników to manipulacja. Przywołajcie argumenty merytoryczne, a nie losowe, nic nie wnoszące porównania.

Poza tym, gdzieś musi być granica, prawda? Kiedy wygooglałem pierwszy raz "map implementation with order" i nauczyłem się że taką jest np LinkedHashMap, albo kiedy zobaczyłem że es6 ma destrukturyzator parametrów function ({id}) to nie musiałem ich użyć w praktyce, żeby je zapamiętać i mieć je w głowie, gotowe do uużycia kiedy będą mi potrzebne.

Idąc waszymi przekonaniami, gdzieś pomiędzy tym prostym przykładem a znajomością całego framework'a musi być magiczny punkt kulminacyjny, w którym opłacalność takiej nauki spada do 0, prawda? Gdzie ten punkt?

1

TL;DR

Metody uczenia się nowego języka u mnie wg prędkości uczenia rosnąco:

  • wszystko sam, pisanie kodu z wykorzystaniem tylko dokumentacji języka
  • to co wyżej z wykorzystaniem książki referencyjnej (typu "Język C++. Kompendium wiedzy")
  • dodatkowo czytając kod biblioteki standardowej
  • dodatkowo czytając kod czyichś aplikacji
  • książka (1..100)
  • kurs wideo typu Coursera
  • kurs wideo typu bootcamp / udemy / helion / linkedin
  • kurs z prowadzącym humanoidem, któremu w każdej chwili można przerwać

Wraz ze wzrostem prędkości wzrasta płytkość tej wiedzy, ale skraca się "time to market".

1 użytkowników online, w tym zalogowanych: 0, gości: 1