Uczenie się wielu języków jednocześnie [zamknięte]


35

Czy ucząc się nowych języków, lepiej poświęcić się jednemu językowi w 100% i poczekać, aż opanujesz go, aby przejść do innego języka lub pracować nad nauką różnych języków w tym samym czasie?

Jeśli ma to znaczenie, obecnie uczę się C ++ i chciałbym również znać Javę i Python.


12
Często nie ma czegoś takiego jak 100% płynność. Ani Jon Skeet, ani Eric Lippert nie znają 100% C #.
Job


3
Nie ucz się języków, naucz się używać języka do implementacji konkretnego programu. To znaczy, jeśli jesteś programistą, nie ma znaczenia, jakiego języka używasz, ponieważ możesz osiągnąć ten sam rezultat. Co gorsza, gdy tylko odłożysz jeden język, aby „nauczyć się” innego, i tak zaczniesz zapominać o poprzednim.

Tak długo, jak naprawdę uczysz się obu języków.
Tulains Córdova

@Maxpm Czy możesz opowiedzieć o swoich doświadczeniach z nauką wielu języków jednocześnie ...
Rahul Patil

Odpowiedzi:


31

Nie tylko nie widzę problemu z nauką wielu języków jednocześnie, ale myślę, że może to bezpośrednio przynieść korzyści, ponieważ coś w jednym języku może rozwiązać problem, który możesz mieć w innym języku. Na przykład moim głównym językiem jest C # i podczas pracy z LINQ korzystałem z formatu SQL (co jest w porządku, wcale go nie pukam, ale po prostu nie wydawało się to „fajnym sposobem” na to). Trzymałem się z dala od Lambdas, ponieważ, szczerze mówiąc, ich nie rozumiałem, a dokumentacja C #, którą widziałem, nie zawierała jasnej definicji (dla mnie). Potem zacząłem zbierać książki na F # i zacząłem się tego uczyć, co dało mi moment „ah ha!”, Kiedy zrozumiałem, jakie są Lambdy.

Przekonałem się, że wraz z coraz większymi doświadczeniami z innymi językami (i frameworkami) stałem się lepszy w C # (i ASP.Net). Dlatego uważam, że nauka wielu języków jednocześnie nie jest wcale taka zła!


1
Całkowicie się zgadzam i zacząłem od C #. W tym języku napotkałem wiele rzeczy, które z perspektywy mojego początkującego były bardzo trudne do zrozumienia, a gdybym je zrozumiał, zrozumienie, do czego były przeznaczone lub dlaczego zostały użyte, było równie trudne. Od tego czasu dowiedziałem się o kilku innych językach i to zrobiło różnicę na całym świecie. Zwłaszcza, że ​​każdy język jest inny, możesz nauczyć się różnych aspektów programowania z każdego języka.
fender1901

49

Jeśli jest to twój pierwszy język, myślę, że lepiej byłoby nauczyć się go wystarczająco dobrze, aby zrozumieć, jak działa język programowania.

Gdy masz już dobre fundamenty, możesz wybrać tyle, ile chcesz.


2
+1 Myślę, że ma to duży wpływ na to, czy uczysz się pierwszych trzech języków, czy czwartego, piątego, szóstego itd.
keithjgrant

12

Myślę, że ważną umiejętnością dla programistów jest umiejętność uczenia się nowych języków programowania. Jako taki sugeruję, aby najpierw spróbować nauczyć się jednego języka, a następnie dodać inne.

Niezależnie od tego, jaki jest Twój pierwszy język, proces nauki dodatkowych języków powinien:

  • Znajdź dobre odniesienie do składni dla nowego języka
  • Zidentyfikuj mocne strony nowego języka, a nie tylko koduj w nowym języku, tak jakby to był już język, który znasz (programowanie z akcentem)
  • Poznaj obszary nowego języka, które nie są odwzorowane na języki, których używałeś wcześniej
  • Znajdź przykłady kodu i bez ich przeglądu spróbuj zakodować to samo od zera i zobacz, jak Twoja implementacja różni się od przykładu

Z biegiem czasu, gromadząc języki, będziesz tworzyć swój własny wewnętrzny abstrakcyjny język pseudokodu, który pomoże ci tłumaczyć między znanymi językami. Ten język wewnętrzny jest strukturą, której będziesz używać do szybkiego uczenia się nowych języków.


1
+1 za „zidentyfikuj mocne strony nowego języka ...”. Bardzo fajnie
Nick Burns

8

Równoległe uczenie się języków jest czymś normalnym. Na przykład programowanie sieciowe. Masz do czynienia z co najmniej trzema językami: po stronie serwera (php, java, .net, ruby, python ...), kod klienta (skrypt java i html), baza danych (sql).


ani htmlteż nie sqlsą języki programowania.
aeid

litera l oznacza język
Boris Pavlović

7

Nie widzę problemu w uczeniu się wielu języków jednocześnie. W rzeczywistości nigdy nie opanowujesz języka, więc naprawdę, za każdym razem, gdy pracujesz z więcej niż jednym językiem, prawdopodobnie uczysz się ich obu.

Możesz skoncentrować się na jednym języku, aby zapoznać się z podstawami, aby uniknąć pomieszania dwóch języków. Jest to szczególnie ważne, jeśli uczysz się podobnych języków, takich jak Java i C #.


JavaScript / Python może być dobrym wyborem ze względu na ich różnice. Jako przykład.
nick indiessance

6

Uczę programowania od kilku lat, więc mogę podzielić się z tobą moim doświadczeniem. Zakładam, że C # jest twoim pierwszym językiem, więc moje doświadczenie w nauczaniu programowania ludzi, którzy nigdy wcześniej nie programowali, może być przydatne.

Przede wszystkim powiem, że nauka więcej niż jednego języka jest czymś, co powinien zrobić każdy doświadczony programista. Ale to nie znaczy, że powinieneś uczyć się kilku języków jednocześnie, jeśli dopiero zaczynasz.

Przez lata uczniowie wykazali, że język utrwala się w umyśle (przynajmniej ten pierwszy), czasem trochę więcej, czasem trochę mniej. Jeśli próbujesz uczyć więcej niż jednego języka w ciągu roku, uczniowie często je pomieszają i mylą pojęcia i języki. Chociaż uczniowie robią postępy, popadają w wiele złych nawyków, które trudno później wyeliminować. Jeśli uczysz się sam, ryzyko jest większe.

Zauważyłem jednak, że to pomaga, jeśli uczysz dwóch języków o zupełnie innej składni. Kiedy dwa języki programowania wyglądają naprawdę inaczej, umysł może postrzegać je jako naprawdę różne byty bez wzajemnego zanieczyszczania się. (Kiedy jeden język programowania pomaga zrozumieć trudne pojęcia w innym języku, to dobrze; gdy jeden język zmusza do pisania złego kodu w innym języku, to jest źle).

Dlatego zalecam trzymanie się jednego języka programowania przez pierwszy rok. Alternatywnie, dobrym pomysłem może być nauczenie się dwóch języków jednocześnie, o ile są one / wyglądają zupełnie inaczej. Jeśli twoim pierwszym językiem jest C #, na pewno trzymałbym się z dala od C, C ++, Objective C i Java; i prawdopodobnie Python, Ruby i JavaScript. Polecam połączenie C # z funkcjonalnym językiem, takim jak Haskell, Scheme, F #, Erlang, Clojure, a może Scala.


5

Myślę, że uczenie się wielu języków naraz jest w rzeczywistości lepsze niż uczenie się jednego naraz, ponieważ jeśli języki są wystarczająco różne, każdy daje ci przerwę od drugiego. Postaraj się je rozłożyć, aby zacząć od nowego, gdy przejdziesz przez etap „absolutnego nowicjusza” poprzedniego; w ten sposób będziesz mieć znacznie większą szansę na zachowanie nie tylko tego, czego nauczyłeś się o języku, ale także tego , jak nauczyłeś się nowego języka. (Uogólniona umiejętność uczenia się języka to coś, za co będziesz bardzo wdzięczny w późniejszym okresie programowania).

To powiedziawszy, nauka pierwszego języka wymaga ogromnej inwestycji czasu i energii, a po prostu możesz nie mieć czasu na podjęcie kolejnego dużego projektu podczas tego procesu. Jeśli myślisz o założeniu innego języka, ponieważ masz dość C ++ - nie rób tego! Zachęci cię do zwlekania. Jeśli zastanawiasz się nad uruchomieniem innego języka, ponieważ ciągle wspominasz o projektach napisanych w (powiedzmy) Javie i jesteś sfrustrowany, że nie możesz łatwo odczytać i przeanalizować kodu - zrób to! To świetny powód do nauki innego języka w dowolnym momencie.


2

Odkryłem, że nauka wielu języków jednocześnie może prowadzić do dłuższego uczenia się jednego określonego języka (to oczywiste). Jednak w moim przypadku pozwoliło mi zdecydować, które języki preferuję i jaki styl kodowania najbardziej mi się podoba.

W moim przypadku zacząłem od C #, potem dostałem się do Python i F #. Naprawdę podobał mi się funkcjonalny styl F #, który skłonił mnie do wypróbowania Scali i Clojure. Teraz, dzięki nauce wszystkich tych języków, Scala dobrze pasuje do tego, co robię. Ponadto jestem teraz bardzo pewny OOP i funkcjonalnych stylów i potrafię kompetentnie czytać i pisać w kilku językach. To świetna umiejętność.

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.