Jak masz szanse na naukę wielu języków? [Zamknięte]

9

Czytam Czy programista powinien skoncentrować się na przynajmniej liczbie języków? i dowiedziałem się, że nie znam języków z 2, 3 pierwszej odpowiedzi. Chcę nauczyć się więcej języków, aby zwiększyć swoją wiedzę i umiejętności programowania. Jednak zwykle w firmach używają ustalonych ram i języków oraz rzadko wprowadzają zmiany. Nie jestem więc pewien, czy mogę nauczyć się tych języków i myślę, że byłoby tak samo dla innych programistów.

Widziałem jednak wielu programistów, którzy znają tutaj wiele języków. Jak masz szanse na naukę wielu języków?

Aktualizacja

Myślę, że wielu ludzi czuje się nieswojo, ponieważ wydaje się, że wcale nie chcę studiować w wolnym czasie. Właściwie to nieprawda. :) Jestem entuzjastą programowania i dlatego opublikowałem tutaj tego rodzaju pytanie. Uczę się w wolnym czasie, ale pomyślałem, że nie wystarczy znajomość języków. W każdym razie dzięki za wszystkie odpowiedzi!

Sanghyun Lee
źródło
7
Po prostu ucz się nowych rzeczy w swoim wolnym czasie.
Jonas
1
Koleś, ta odpowiedź została napisana przez 39-letniego programistę. Myślę, że to dobra lista, ale nie zabijaj się nią.
Job
7
Nie „masz” szans. ROBIĆ szanse. Jeśli chcesz nauczyć się więcej języków, wyjdź i zrób to. Nie czekaj, aż pojawi się mityczna odpowiedzialność za pracę.
Joel Etherton,

Odpowiedzi:

10

Uważam, że najlepszym sposobem na naukę języka jest natychmiastowe użycie go do stworzenia czegoś przydatnego lub potrzebnego .

Na przykład czułem potrzebę zautomatyzowania wielu operacji, które musiałem wykonywać ręcznie za każdym razem. Powtarzające się zadania, tworzenie plików i folderów itp., Więc po prostu wybrałem język skryptowy, aby zrobić użyteczne narzędzie. Poszedłem do Perla i zacząłem uczyć się składni i funkcji potrzebnych do napisania skryptu dzięki samouczkom online i książkom.

W ciągu kilku dni uruchomiłem swoje narzędzie, a następnie w wolnym czasie uczyłem się nowych rzeczy o języku i dodawałem do niego więcej funkcji.


Inną świetną opcją, która przychodzi na myśl, jest: jeśli nie znajdziesz języka, który ci się podoba lub uważasz, że nie pasuje on całkowicie do twoich potrzeb, nadal możesz stworzyć własny język .

Robię to teraz z Perlem, wybrałem składnię, która pomogłaby mi najlepiej rozwiązać moje specyficzne problemy (ponieważ piszesz własny język, możesz wybrać odpowiednią składnię dla zadania, tę, która najlepiej opisuje i rozwiązuje konkretne problemy z domeną).

Wynik? Rozwój jest teraz znacznie szybszy, a sam kod jest o wiele bardziej opisowy, ponieważ jest to język specyficzny dla domeny. Kilka tygodni temu zadałem pytanie związane z tym tematem, zawierające wiele przydatnych linków.

Możesz użyć dowolnego języka skryptowego, aby utworzyć nowy, nawet z PHP.

Jose Faeti
źródło
Nie wiedziałem, że mogę stworzyć swój własny język za pomocą Perla. Czy mógłbyś to rozwinąć lub podać jakieś referencje?
Sanghyun Lee,
Poprosiłem o to tutaj . Zasadniczo musisz stworzyć skrypt, który zrozumie (parsuje) twoje dane wejściowe i wykona różne zadania na podstawie tego, co wpiszesz. Może to być jedynie zestaw funkcji lub zupełnie nowa składnia języka. W razie potrzeby możesz to wszystko zautomatyzować. Nie tylko w Perlu możesz użyć dowolnego języka skryptowego, aby utworzyć nowy.
Jose Faeti,
8

Tego rodzaju pytania zawsze mnie zaskakują. Użyłem 7 języków profesjonalnie, napisałem kod w około 5 innych językach w środowisku hobbystycznym i akademickim, i mogę czytać kod w kilkunastu innych językach. Ani razu nie nauczyłem się języka tylko dla niego. Zawsze mamy na uwadze konkretny i bezpośredni cel. Na przykład w ten weekend nauczyłem się wystarczającej liczby bibliotek Androida, aby rozpocząć pracę nad aplikacją dla mojej rodziny. Gdybyśmy mieli iPhony, nauczyłbym się Celu C.

Mam wrażenie, że znajomość wielu języków jest symptomem bycia wykwalifikowanym, a przynajmniej entuzjastycznym programistą, a nie przyczyną tego. Jeśli nie możesz wymyślić ważnego powodu do nauki nowego języka, nie wiem, ile by to przyniosło korzyści.

Karl Bielefeldt
źródło
3

Najlepszy sposób na naukę nowego języka, gdy masz problem do rozwiązania. Zamiast po prostu korzystać z tego, co jest dla ciebie wygodne, poświęć trochę czasu na sprawdzenie, jakie narzędzia (języki, frameworki, biblioteki) mogą być pomocne w rozwiązaniu problemu. Jeśli masz czas na naukę nowego narzędzia, skorzystaj z niego. Możesz nie być w stanie tego zrobić w pracy, gdy masz presję na harmonogram i ograniczenia technologiczne wynikające z czynników zewnętrznych, ale nie ma powodu, dla którego nie możesz przyjąć tego podejścia do osobistych projektów.

Thomas Owens
źródło
2

Musisz tylko mieć na to czas. Sprawdź książkę „Siedem języków w siedmiu tygodniach” od Prags. To da ci wprowadzenie do siedmiu bardzo interesujących języków, a stamtąd możesz przejść do różnych miejsc.

Zachary K.
źródło
1

Po prostu zacznij go używać. Oczywiście zbudowanie od podstaw systemu produkcyjnego w języku, w którym nigdy nie byłeś narażony, jest złym pomysłem, ale oto kilka sugestii:

  • Ucz się we własnym czasie. Wybierz projekt, który Cię interesuje, i jesteś pewien, że możesz go ukończyć samodzielnie. Najlepiej jest przeczytać tekst wprowadzający na temat nowego języka, aby ocenić, czy jest odpowiedni - każdy język ma swoje mocne i słabe strony, a najlepiej zacząć od problemu, w którym język miał się wyróżniać.
  • Rozpocznij wykonywanie zadań konserwacyjnych w istniejącym projekcie. W ten sposób możesz pobrać dużą część języka, nawet nie czytając dokumentacji: wiele można wywnioskować z przykładowego kodu, a dla części, w których musisz czytać dokumentację, będzie to znacznie wyraźniejsze, ponieważ widziałeś kod już. Łatwiej jest także wyszukać „co robi ten kod” niż „jak napisać kod, który robi X”.
  • Używaj nowego języka dla potrzebnych narzędzi i pomocników: skryptów powłoki, niepotrzebnego kodu do określonych zadań, szybkich obliczeń (np. Interaktywne interpretery wielu dynamicznych języków - python, lisp, haskell itp. - tworzą doskonałe kalkulatory). Jednak nie wszystkie języki są odpowiednie.
tdammers
źródło
1

Wybierz coś stosunkowo małego, co zrobiłeś w jednym języku, i opracuj zastępczą wersję w innym języku. Zrób to, aby rzucić sobie wyzwanie. Aby go ukończyć, dowiesz się wiele o drugim języku.

W ciągu ostatniego tygodnia postanowiłem nauczyć się i ponownie napisać zaplecze usługi sieciowej w NodeJS (wcześniej usługa JSP). Uruchomienie usługi szkieletu zajęło tylko jeden dzień, a kilka dni później Rozszerzyłem jego infrastrukturę, obsługę błędów, logowanie i dodałem monitorowanie na żywo. Jest teraz lepszy od oryginału. To, czy kierownictwo to akceptuje, czy nie, jest nieistotne, ponieważ czegoś się nauczyłem i jestem z tego bardzo zadowolony.

Fosco
źródło
1
  • Uważam, że część mojej pracy to „badania”. W 1998 r. Badania oznaczały naprawienie błędów Y2K. Reserch z ostatniego miesiąca oznaczał naukę Subversion. Od 40 lat prowadzę badania. Kiedy wymieniam języki, muszę je wymienić w kolejności alfabetycznej.

  • Kiedy uczę się języka, czytam instrukcję od deski do deski. Potem używam go przez kilka miesięcy. Następnie ponownie przeczytałem instrukcję obsługi. Drugie czytanie ujawnia wiele sztuczek i implikacji, za którymi tęskniłem za pierwszym razem.

  • Praktyczne badania obejmują normalne języki, takie jak C # i Pascal. Zaawansowane badania obejmują dziwne języki, takie jak LISP i FORTH. Prawdopodobnie nigdy nie będziesz używać LISP profesjonalnie, ale jego nauka znacznie poszerzy twój umysł.

  • Oczywiście w moim środowisku nie otrzymuję zapłaty za czas, płacę za dostawę. Jeśli uda mi się dostarczyć w ciągu dwóch tygodni, wykorzystując sześć godzin dziennie, mogę wykorzystać pozostałe trzy do badań. Jeśli zajmuje to dwanaście godzin dziennie, to nie ma badań.

  • Oczywiście wszystkie badania powinny mieć pewną użyteczność dla tej, która mi płaci. Małe narzędzia są dobre; następnym razem, gdy chcesz przetworzyć kod źródłowy C, wypróbuj go w Pythonie. (Nie, nie znam Pythona, ale słyszałem, że jest dobry do manipulacji ciągami.)

Andy Canfield
źródło
0

Czasami możliwości pochodzą z twojego zatrudnienia. Zazwyczaj istnieje jeden z trzech sterowników dla tego rodzaju możliwości.

  1. To zupełnie nowa technologia. Na przykład wiele firm zapłaciło za szkolenie C # dla swoich programistów w ciągu pierwszych dwóch lub trzech lat po wydaniu platformy .NET.

  2. Łatwo się nauczyć. Na przykład w sklepie z linuksem zobaczysz, że musisz napisać skrypty .bash. Jeśli korzystasz z sesji terminalowych itp., A istnieją inni programiści, którzy mają doświadczenie w ich pisaniu, powinieneś być w stanie zdobyć tę umiejętność, choćby zautomatyzować niektóre z twoich zadań.

  3. Jest to rzadko używana umiejętność techniczna, a Twoja firma nie chce tracić czasu i pieniędzy na znalezienie konsultanta do wykonania pracy. Na przykład nauczyłem się pisać XSLT, ponieważ potrzebowaliśmy łatwego sposobu na przekształcenie niektórych plików XML (log) do wyświetlenia.

Inne możliwości, które musisz zrobić dla siebie poza pracą. Wybierz ostrożnie - jakie technologie są przydatne w przyszłości? W takich przypadkach musisz poświęcić czas i wysiłek na naukę i stosowanie technologii. Powinno to być częścią ogólnego planu kariery i być może będziesz musiał zapłacić za zajęcia. (Miałem szczęście - kiedy nauczyłem się języka Java, uczyli go wieczorami w lokalnej szkole dla społeczności).

Jay Elston
źródło
0

Odpowiadając na twoje pytanie, z własnego doświadczenia (jestem dość nowy w branży, więc niewiele z tego), uczę się nowych języków, przeprowadzając badania, aby sprawdzić, który język najlepiej odpowiada moim potrzebom. Na studiach miałem projekt w dziedzinie kryptografii, który wymagał użycia dużych liczb całkowitych. W C ++ robiło się dość kombi, więc zwróciłem się do Javy, ponieważ dostarczyło ona klasę BigInteger. W mojej obecnej pracy widziałem, że skrypty powłoki nie były w stanie całkowicie rozwiązać mojego problemu, nie stając się zbyt złożonymi, więc nauczyłem się Perla. Ucz się w locie to moja rada jako jeden z wymagań. Oczywiście, jeśli się nudzisz, istnieje cały świat języków do odkrycia.

Abhishek Anand
źródło