Jak szybko wybrać nowy język, skoro znam kilka innych? [Zamknięte]


14

Jednym z rodzajów pytań, które wciąż pojawiają się na Programmers.SE, jest to, jak nauczyć się określonego języka, biorąc pod uwagę, że znasz kilka innych (zwykle poprzez duże doświadczenie lub edukację).

Jednak w niektórych przypadkach może być konieczne szybkie przyspieszenie pracy, rozwoju osobistego, a nawet sprawdzenie nowej, gorącej platformy.

Z własnego doświadczenia, jakie ogólne strategie zastosowałeś, aby szybko wybrać nowy język? Czy są jakieś specyficzne aspekty języka, na którym starasz się skoncentrować, zaczynając od zimna? Jakie rodzaje zasobów są pomocne w tym procesie?


6
Powiedziałbym, po prostu to zrób. Oficjalna dokumentacja i Google to jedyne potrzebne zasoby.
Fosco

@ Ponownie Niektóre odpowiedzi pokrywają się, ale celem tego pytania jest zbudowanie kanonicznej odpowiedzi na naukę języka (dowolnego języka) tak szybko i skutecznie, jak to możliwe. Drugie pytanie to mieszanka rekomendacji książkowych, podobnych odpowiedzi do podanych tutaj i ogólnych porad na temat uczenia się bez pośpiechu (czytanie tuż przed snem, czytanie specyfikacji języka, poświęcenie tygodni na zapoznanie się na podstawowym poziomie z kilkoma różnymi Języki).

Nie jestem pewien, jak przydatne jest zadane pytanie. Jeśli znam kilka języków programowania, prawdopodobnie nauczyłem się wybierać nowy język i prawdopodobnie skutecznie. Jeśli nie, w jaki sposób skorzystam z tego pytania?
David Thornley

1
@ David Znam pół tuzina języków, ale nauczyłem się ich zwykle po zajęciach w nich lub po kilku miesiącach pracy. Ale jeśli z drugiej strony muszę szybko wybrać język dla nowej pracy, to mi nie pomaga. Nie wątpię, że ludzie, którzy nauczyli się kilku języków, wybrali sposoby ich szybkiego nauczenia: mam nadzieję, że takie będą odpowiedzi.

@Mark Trapp: Dzięki, to dla mnie wyjaśnia.
David Thornley

Odpowiedzi:


18

Znalazłem najlepszy sposób na naukę nowego języka, robiąc, a nie tylko czytając. Tak więc, kiedy chcę (lub potrzebuję) nauczyć się nowego języka, zazwyczaj czytam kilka rozdziałów podręcznika na temat składni, ale potem zagłębiam się i coś tworzę, zamiast czytać i czytać książkę po książce.

Odkryłem, że w miarę pojawiania się problemów i pytań można znaleźć odpowiedzi (często w Internecie). Myślę też, że właśnie dlatego szkolenie w pracy jest tak cenne, ponieważ przez większość czasu produkujesz produkt roboczy, nawet jeśli jest to wersja robocza - i dlatego uczysz się przez działanie.

Zachęcam ludzi, aby po prostu zastanowili się, co ich interesuje, i zagłębili się w pisanie kodu lub tworzenie formularzy itp.

Później, po utworzeniu projektu po projekcie, dobra książka referencyjna nauczy Cię drobnych szczegółów, które w tym momencie łatwiej zrozumiesz.

Ponadto projekty zwykle zaczynają się od małych i stają się coraz bardziej złożone - od prostej aplikacji „Hello World” do małego i niezbyt przydatnego projektu, aż do pełnej aplikacji. Pod względem tego, na jakich aspektach języka się koncentruję, zależy to od zastosowanego języka - nigdy nie uczę się każdego interfejsu API lub frameworka (jak na przykład .NET). To zajmie o wiele za długo. Uczę się podstawowej składni, a następnie stamtąd rozgałęziam się, badając każde rozszerzenie w razie potrzeby. Z mniej modularnym językiem, takim jak CSS lub XSLT, po prostu uczę się najpierw najpopularniejszych konstrukcji i dodam inne w razie potrzeby.


Kiedy mówisz „po prostu zrób to”, czy są jakieś szczególne aspekty języka, na którym koncentrujesz się podczas nurkowania, aby upewnić się, że podnosisz go tak skutecznie, jak to możliwe? A może po prostu wykonujesz losowe przykładowe projekty, dopóki „nie kliknie”?

Cóż, projekty na ogół zaczynają się od małych i stają się coraz bardziej złożone - od prostej aplikacji „Hello World” do małego i niezbyt przydatnego projektu, aż do pełnej aplikacji. Pod względem tego, na jakich aspektach języka się koncentruję, zależy to od zastosowanego języka - nigdy nie uczę się każdego interfejsu API lub frameworka (jak na przykład .NET). To zajmie o wiele za długo. Uczę się składni rdzenia, a następnie stamtąd rozgałęziam się, badając każde rozszerzenie w razie potrzeby. Z mniej modularnym językiem, takim jak CSS lub XSLT, po prostu uczę się najpierw najpopularniejszych konstrukcji i dodam inne w razie potrzeby.
jqueryrocks

2
czy możesz dodać to z powrotem do swojej odpowiedzi? To świetna informacja.

5

To działa dla mnie:

  1. Poczytaj o tym.
  2. Użyj tego.
  3. GOTO 1.

Aby przeczytać o tym krok, staram się wybrać „odniesienie” do języka. Np. „Język programowania C”. Trzeba je skondensować do rzeczy i stopniowo budować swoją wiedzę. Potem czytam od deski do deski. Jestem szybkim czytelnikiem i nie zastanawiam się nad pierwszym czytaniem. Potem wrócę i odniosę się do konkretnych punktów, gdy próbuję używać języka. Prawdopodobnie spędzę więcej czasu na przykładach kodu w książce.

Pierwszą rzeczą, której potrzebujesz, jest składnia. Nie wiedząc, czy jest to POCZĄTEK, {lub wcięcie blokowe, ani jak deklarujesz zmienne, nie możesz nic napisać. Autor zwykle wprowadza najpierw ważniejsze części lub przeprowadzi samouczek obejmujący podstawowe użycie języka. Trudno podać bardziej ogólne wytyczne, ponieważ niektóre języki są bardzo różne od innych. Następną rzeczą jest ogólne zrozumienie języka, jaka jest ogólna filozofia, w jaki sposób podchodzisz do rozwiązywania problemów w kontekście języka.

Inną rzeczą, o której należy pamiętać, jest koncepcja „wykorzystaj lub strać”. Jeśli od jakiegoś czasu nie używałeś języka, powrót do prędkości zajmie ci trochę czasu (choć czas ten będzie krótszy z doświadczeniem). Gdy już uzyskasz składnię języka, musisz dowiedzieć się o bibliotekach itp.

Jest to więc proces iteracyjny. Sięgając głębiej przy każdej iteracji. Bez końca. Nawet po 20 latach używania języka wciąż jest coś do nauczenia się.


Czy możesz wyjaśnić więcej, co rozumiesz przez „czytać o tym”? Na czym szczególnie się koncentrujesz, kiedy zaczynasz czytać o nowym języku, który chcesz wybrać?

@Mark - zobacz moje zmiany ... Czy tego właśnie szukasz?
Guy Sirton

5

Weź projekt z prawdziwego świata

Z mojego punktu widzenia łatwiej jest się czegoś nauczyć, kiedy trzeba się tego nauczyć. Dla mnie było to z javascript, gdzie zaryzykowałem, akceptując duży projekt z dwumiesięcznym harmonogramem. To ja byłem tam każdego dnia i każdej nocy, próbując osiągnąć wyniki w tym niezależnym projekcie, a przez półtora miesiąca projekt został zrealizowany.

Przypadkowo nauczyłem się tam trochę SQL, potem skończyłem naukę na studiach i zgadnij co, ja też miałem łatwiejszy czas.

Jeśli nie chcesz ryzykować ...

Rzeczywistym kluczem do poprzedniej kwestii jest rozwiązanie rzeczywistych problemów ... ale pracuję lepiej pod wpływem stresu (lubię stres, myślę, że jest zabawny i mogę zostać uszkodzony, więc ...). Jeśli nie, po prostu uruchom projekt open source, który Cię interesuje i używa języka, którego chcesz się uczyć, i spróbuj wnieść swój wkład. Jeśli Twój kod jest do kitu, możesz otrzymać informację zwrotną w zależności od społeczności.

Są szanse, że zrobisz postęp, studiując kod.

Zdobądź wszystkie referencje, które możesz

Obejmuje to kilka książek, oficjalną dokumentację i wszystkie odniesienia, które można uzyskać. Chaces to, że w ten sposób będziesz wiedział, jak robić to samo na różne sposoby.

Inne społeczności - na przykład fora, listy mailingowe i tutaj - również liczą się jako odniesienia.


Dodałbym: „weź twardy problem ze świata rzeczywistego”. Wybierz coś, co wymaga pierwszego dnia głębokiej szyi. Mój pierwszy dzień z C # zastanawiałem się, jak dynamicznie ładować biblioteki dll, używać refleksji, aby uzyskać klasy, a następnie listę metod. Nauczyłem się dziś ton, nigdy wcześniej nie korzystałem z żadnej technologii .net.
Bryan Oakley,

2

Istnieje wiele sposobów nauki nowego języka, ale nie wszystkie są równie skuteczne. Uważam, że te trzy wytyczne są dla mnie najlepsze:

Zrób mapę tego, czego nie wiesz

Dowiedz się wcześniej, czego musisz się nauczyć. Znajdź przegląd lub ogólne źródło dokumentacji opisujące język w sposób abstrakcyjny. Dzięki temu zazwyczaj można uzyskać dość kompletny przegląd tego, o czym jest ten język. Użyj tego przeglądu, aby wyróżnić obszary, których nie znasz, ale są uważane za kluczowe dla języka. Czy rekurencja ogona jest koncepcją, której musisz nauczyć się, aby naprawdę opanować język? Być może będziesz musiał lepiej poznać swoje wyrażenie regularne, ponieważ język specjalizuje się w manipulacji ciągami. A może naprawdę będziesz musiał włączyć Algebrę, ponieważ wiele pojęć na mapie językowej pochodzi bezpośrednio od pojęć algebraicznych.

Zdobądź dobre zasoby, które pomogą Ci dowiedzieć się, czego nie wiesz

Możesz uzyskać dobre referencje na temat formuł algebraicznych, a może po prostu chcesz kupić „ JavaScript, dobre części ”. W przypadku niektórych krzywych uczenia się ta praca została już częściowo wykonana. Jeśli próbujesz nauczyć się języka C # na tle Java (i odwrotnie), istnieje wiele postów na blogach i witryn, które odwzorowują różnice i zawierają odniesienia / zasoby, które pomogą Ci się uczyć.

Upewnij się, że zasoby nie są tylko referencjami - upewnij się, że zawierają testy lub ćwiczenia, które pomogą Ci ocenić, czy właściwie nauczyłeś się koncepcji. Czytanie o rekurencji ogona to jedno, a gruczoł, jak to jest zaimplementowane w wybranym języku, to drugie.

Zbuduj coś prawdziwego

Niemal niemożliwa jest prawdziwa nauka bez konkretnego celu. Jest to szczególnie prawdziwe w przypadku sztuki stosowanej - właśnie tym jest użycie języka programowania. Upewnij się, że masz prawdziwy cel do osiągnięcia - budowanie czegoś jest zwykle najlepszym wyborem.


1

Zidentyfikuj paradygmat programowania

Zazwyczaj identyfikuję podstawowe paradygmaty języka. Myślę o problemach inaczej w zależności od paradygmatu.

Zidentyfikuj idiomy

Wszystkie języki mają idiomy. Idiomy różnią się rozmiarem i zakresem od struktury kodu, aż do poszczególnych fragmentów kodu. Zawsze powinieneś próbować używać idiomów języków.

Napisz kod

Zwykle piszę jakiś kod funkcjonalny. Wszystko, od sita Primes po zabawkowe aplikacje internetowe. Problemy, które wybieram, są zazwyczaj specyficzne dla tego, do czego zamierzam używać języka.


1

Zanurz się !!

Biorąc pod uwagę, że wiesz już, jak programować i znasz kilka języków, z wyjątkiem tego, że język ten wprowadza bardzo głęboką zmianę paradygmatu, powiedziałbym (jednocześnie):

  • znajdź projekt zwierzaka, który cię poprowadzi,
  • a na boku zaprogramuj kilka zagadek

Ucz się, ćwicz, aplikuj (aż będziesz zadowolony)

Klasyczne 99 Prolog Puzzles (tutaj 99 Puzzles in Scala ) lub Project Euler są zwykle dobrym miejscem do poszukiwania małych puzzli do ponownego wdrożenia. Lub czaj się wokół StackOverflow i napisz kilka fajnych odpowiedzi w języku docelowym, starając się nie przerabiać wiersz po wierszu, ale coś, co oddaje istotę twojego nowego języka.

Ucz się z łamigłówkami, czytaj blogi i eseje z boku, aby lepiej zrozumieć język i poczuć narzędzia i święte wojny nowej społeczności, i napisz swój projekt testowy, aby zastosować nową wiedzę i umiejętności oraz zobacz, na jakie przeszkody napotykasz.

Mówiąc o społeczności ...

Udostępnij się i wystaw się. (Nie za dużo.)

Być może chcesz także odwiedzić lokalną grupę użytkowników, znaleźć znajomych do pisania kodu (uzyskać konstruktywną krytykę i nie zamykać się w konkretnym sposobie myślenia) i subskrybować ten przerażający kanał IRC lub listę mailingową, na której zamieszczają dziwne słowa o AST drzewa i pisz filozoficzne tyrady o tym, że monady nie są monadami i jak raz spotkasz jakąś dziwną dziewczynę, nie możesz wrócić .


0

Wiem, że to brzmi kiepsko, ale zacznij coś kodować, nawet jeśli jest to głupie, i używaj wielu Google do rzeczy zgodnych z tym wzorem:

jak to zrobić [coś z jednego języka] w [innym języku]

Jeśli słowa są powszechne, użyj literałów cytowanych.

Jest to dość powszechne pytanie, że właściwie jedyne czasy, w których nie znajduję odpowiedzi, znajdują się, gdy znajduję stronę wyjaśniającą, dlaczego nie można tego zrobić.


0

Jako konkretna sugestia dotycząca używania języka:

Naprawić błędy

  1. Znajdź interesujący projekt open source w języku docelowym, najlepiej z publicznym narzędziem do śledzenia błędów, umiarkowanie aktywnym programowaniem i przyzwoitym pakietem testowym.
  2. Wybierz błąd, który chcesz naprawić, najlepiej taki, który denerwuje cię podczas korzystania z programu.
  3. Dowiedz się, dlaczego program wykazuje nieprawidłowe działanie.
  4. Napisz testy i kod, aby rozwiązać problem.
  5. Prześlij łatkę w górę.
  6. Popraw swoją łatkę, aż programiści z wyższego szczebla będą zadowoleni.
  7. Wróć do kroku 1 lub 2.

Ten proces jest zwykle bardziej satysfakcjonujący niż pisanie kolejnego programu zabawkowego, ale o wiele łatwiejszy niż rozpoczęcie własnego pełnego projektu od zera. Zostajesz narażony na niektóre idiomy języka w ich naturalnym kontekście i (przy odrobinie szczęścia) czyjeś wyobrażenie o tym, jak wygląda dobry kod.

Z drugiej strony może być również bardzo frustrujące, szczególnie jeśli wybierzesz paskudny błąd lub jeśli programiści odrzucą twoją łatę bez odpowiedniego wyjaśnienia przyczyny.

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.