Jestem dość biegły w Javie, C / C ++, JavaScript / jQuery i przyzwoicie dobry w Objective-C. Jestem dość produktywny, jeśli chodzi o języki i odpowiadające im frameworki, i z wystarczającą łatwością produkuję systemy na poziomie przedsiębiorstwa (a także te na małą skalę), utrzymując kod w czystości i utrzymywaniu (tak, mogę czytać własny kod po szóstej miesięcy :)
O ile nie wymaga tego platforma (iPhone, iPad itp.) Lub klient / organizacja wdrażająca, po prostu „dlaczego” powinienem nauczyć się nowego języka programowania? Dla żartu"? A co z tą zabawą, jeśli nie zrobię z nią nic wartościowego?
Wielu moich rówieśników jest gotowych zanurzyć się, aby nauczyć się „następnej nowej rzeczy / języka” i zwykle jest to Python, Ruby lub PHP (tylko wymieniając kilka popularnych). Teraz sama znajomość języka jest daremna. Musisz także znać frameworki, nauczyć się ich użycia / interfejsów API, a także „dobrych praktyk implementacyjnych” itp.
Czy z ekonomicznego punktu widzenia uczenie się nowego języka programowania przynosi jakieś korzyści? Jeśli język zostanie nauczony w szybki i brudny sposób, prawdopodobnie będzie on również używany do szybkiego i brudnego prototypowania / implementacji - ale nie uważam, że to uzasadniona inwestycja czasu / wysiłku.
Więc DLACZEGO powinienem (lub ktokolwiek w tej sprawie) uczyć się nowego języka programowania innego niż „jest fajnie, więc wypróbujmy” - jeśli inwestycja czasu może nie być tego warta na dłuższą metę?
źródło
Odpowiedzi:
Od pragmatycznego programisty , wskazówka nr 8 „Regularnie inwestuj w swoje portfolio wiedzy”:
Nie chodzi o następną „nową rzecz”. Chodzi o myślenie na różne sposoby poza normalnymi myślami.
Jest takie powiedzenie: „Kiedy jesteś młotem, wszystko wygląda jak gwóźdź”. Być może istnieje lepszy sposób na rozwiązanie problemu przy użyciu innej technologii. Jeśli tego nie zrobisz, możesz nie wiedzieć, że był dostępny.
źródło
Dlaczego ludzie wspinają się na Mt. Everest? Lub uruchom 100 mil w ciągu 24 godzin ? Dlaczego podejmujemy jakiekolwiek wyzwanie? Bo tam jest. Nie widzę nic złego w „Ars gratia artis”. Przychodzi moment, w którym nauka dla nauki staje się jej własną nagrodą. Ale jeśli chcesz mocniejszych powodów, aby nauczyć się nowego języka, oto kilka:
Nowe sposoby rozwiązywania problemów Nauka nowego języka, poświęcenie czasu na nurkowanie, daje szansę na ponowne zaprogramowanie się jako nowicjusz. Ta nowa perspektywa może nauczyć Cię technik, które mogą przenieść się na stary język. Pomyśl o wpływie Ruby on Rails na ASP.NET MVC lub o tym, w jaki sposób Java Hibernate została przeniesiona do C # (wraz z niezliczonymi innymi strukturami wpływającymi na rozwój .NET). Ekspozycja na różne języki może nauczyć cię nowych sposobów rozwiązywania problemów.
Właściwe narzędzie do właściwej pracy Wszystkie wymienione języki to hybrydy OO / proceduralne (lub czysto proceduralne w przypadku C). Spróbuj swoich sił w języku funkcjonalnym lub dwóch. Spróbuj zastosować silnię w Erlangu za pomocą rekurencji i obserwuj, jak szczęka uderza o podłogę, gdy 20000! zwraca w ciągu 5 sekund (brak przepełnienia stosu w witrynie). Następnie spójrz na moc skalowania aplikacji w celu przeszukiwania liczb i analizowania protokołów przy użyciu mniejszego kodu i w krótszym czasie niż potrzeba na uzyskanie dwóch wystąpień JVM rozmawiających przez RMI lub SOAP. Nauka innych języków / platform, które są ukierunkowane na rozwiązywanie określonych problemów, zapewni więcej narzędzi.
Poznawaj nowych ludzi / rozszerzaj swoją sieć Nurkowanie w nowym języku wystawia cię na nową społeczność. Poznawanie nowych ludzi jest dobre dla twojej kariery i osobiście.
Nowe możliwości Znajomość nowego języka może zwiększyć szansę na zdobycie tej pracy dzięki takiemu nowemu startupowi. „Człowieku, ta praca byłaby idealna, gdybym znała Ruby”. Poza tym możesz cieszyć się językiem na tyle, że zdecydujesz się zmienić ścieżki.
Dbaj o świeżość Praca z tą samą rzeczą na co dzień staje się nużąca. Posługiwanie się innym językiem może dać ci spokój od codziennego zgiełku i pozwolić odświeżyć się następnego dnia.
Bo tam jest. Naucz się nowego języka, ponieważ chcesz.
źródło
Myślimy słowami. Język, którego używamy, wpływa na sposób, w jaki to robimy. Interesujący jest przypadek dotyczący języka Pirahã - osoby posługujące się tym językiem nie mogą traktować czegoś jak pozornie „prostego” lub „intuicyjnego” jak liczby, ponieważ w języku, w którym je wychowano, nie ma słów na „określone ilości” (nawet „jednego” " i wiele").
W przypadku języków programowania jest to samo. Nowy język programowania może „otworzyć” umysł na niektóre aspekty programowania.
Biorąc pod uwagę twoje obecne zaplecze programistyczne, polecam nauczyć się funkcjonalnego języka, takiego jak Erlang lub Scala. Wreszcie, Clojure jest również bardzo solidnym językiem.
Jeśli chcesz poczuć się trochę bardziej jak w domu, wypróbuj potężny język skryptowy, taki jak Python lub Ruby.
źródło
Nie tylko chcesz uczyć się nowych języków, ale także języków, które są inne niż te, które już znasz. Jeśli wiesz, że nauka języka C # w rzeczywistości nie stanowi dla ciebie wyzwania, są one dość podobne. Idealnie powinieneś wybrać język, który bardzo różni się od tego, co wiesz. Jeśli znasz Java, JavaScript i Objective-C, potrzebujesz czegoś zupełnie innego
Jak na przykład:
Ruby to zabawny, słabo napisany język OO
Prolog Logiczny język programowania jest zupełnie inny
Współbieżność i tolerancja błędów Erlanga wypadły bardzo dobrze
Schemat Idź przeczytaj SICP i osiągnij oświecenie
Haskell Jeden z najpotężniejszych systemów typu na świecie, jeśli się skompiluje, prawdopodobnie będzie działał, a także powstrzyma cię przed popełnianiem różnego rodzaju dziwnych błędów i wiele więcej.
Lub po prostu wybierz siedem języków w ciągu siedmiu tygodni, co zrobi to, co mówi tytuł.
źródło
Twoje pytanie jest tak wiodące, że każe mi zadać następujące pytanie:
Jeśli jesteś programistą z zawodu, dlaczego na świecie nie chcesz nauczyć się czegoś nowego, aby wzbogacić swoje doświadczenie zawodowe?
Twoje pytanie przypomina mi postawę studenta, który kiedyś miałem. Rok lub dwa przed rokiem Y2K prowadziłem zajęcia Cobol (jako fakultatywne), na wniosek dyrektora ds. Usług karier na uniwersytecie, w którym prowadziłem wykłady. Miał tak wiele firm, które podchodziły do niego z ofertami pracy dla programistów Cobola, że myślał, że wyrządzimy naszym studentom szkodę, nie dając im możliwości uczenia się umiejętności i dodawania do ich zestawu umiejętności.
Miałem ucznia, który wziął klasę jako swoją ostatnią fakultatywną klasę na zakończenie studiów . W tym czasie pracował również jako programista C. Uczęszczał na lekcje Cobola, ponieważ nie miał innych wyborów i chciał zdobyć stopień naukowy. Więc przyszedł do klasy z chipem na ramieniu.
Rzuciłem mu więc wyzwanie, aby napisał program do odczytu danych z pliku o określonym formacie dla każdego rekordu danych wejściowych (tj. Ile znaków każde pole zajęło w linii, które to pole było pierwsze, drugie, trzecie itd. .)
Miał napisać swój program w C, co zrobił, i pokazał mi swój program. W tym samym czasie pokazałem mu moją wersję programu Cobol.
Potem rzuciłem mu piłkę krzywą:
Cały dzień poświęcił na stworzenie nowej wersji programu, która działałaby w nowym formacie danych. Obejmowało to zmianę co najmniej 20 lub 30 linii kodu oraz modyfikację kilku funkcji i modułów.
Potem pokazałem mu zmiany, które musiałem wprowadzić w moim programie Cobol. Zmodyfikowałem klauzulę obrazkową, aby odzwierciedlić nowy format danych.
Nie jestem pewien, czy całkowicie zrozumiał lekcję tego ćwiczenia, ale przynajmniej przestał narzekać na resztę semestru.
Tak więc - w odpowiedzi na twoje pytanie: powinieneś uczyć się nowych języków, ponieważ chcesz się UCZYĆ. A jeśli nie chcesz się uczyć - więcej mocy dla ciebie ... (Po prostu nie jestem pewien, czy zatrudniłbym cię z takim nastawieniem)
źródło
Istnieje kilka powodów, dla których nauka nowego języka może być warta inwestycji w czasie:
Nauka nowych języków może przynieść natychmiastowe korzyści, jak już zauważyłeś, w „szybkich i brudnych” rozwiązaniach. Jednak te natychmiastowe rozwiązania mogą skłonić programistę do zbadania i głębszego zapoznania się z architekturą związaną z nowym językiem w celu „prawidłowego” nauczenia się go. Te ćwiczenia szybkiego uczenia się można postrzegać jako inwestycję w badanie, czy nowy język jest wart dodatkowego czasu na szkolenie.
źródło
Jednym słowem: zbywalność .
Otwierasz swoje perspektywy zatrudnienia, kiedy możesz pokazać, że masz zdolność przystosowywania się i uczenia się nowych rzeczy. Jasne, możesz pisać aplikacje w jednym języku, w którym naprawdę się biegłeś, ale co się stanie, gdy dowiesz się, że twój ulubiony język staje się nieistotny dla branży, w której pracujesz. Właściwie pamiętam czas, kiedy do pisania własnych usług internetowych od podstaw w C lub C ++, obecnie używamy narzędzi, które wykonują dla nas całą „webbiness” (Think Rails itp.).
Chodzi o to, że kończysz jak aktorzy, którzy robią seriale telewizyjne, a potem nie mogą łatwo przejść do niczego innego, ponieważ są zawsze postrzegani jako ich pierwotna postać. „Kto na ziemi chce, żeby kapitanem Kirkiem był Indiana Jones? !!”. To samo dotyczy programistów, którzy kiedykolwiek korzystali tylko z jednego produktu. Jasne, poznasz to jak nikt inny, ale to nie pomoże ci, gdy będziesz traktowany jak boks jako Fortran, który nie może przejść do pracy z C #.
Jeśli chcesz mieć możliwość łatwego przenoszenia pracy i utrzymywania otwartych opcji, musisz poszerzyć swoje doświadczenie. Pracuj nad wieloma różnymi projektami w wielu różnych językach, najlepiej na co najmniej 2 lub więcej platformach, i utrzymuj się na rynku, by być czymś więcej niż tylko tym, czym jesteś dzisiaj.
Oczywiście istnieje wiele innych powodów, aby uczyć się nowego języka, czasem nawet po prostu do cholery. Otwiera umysł na inne możliwości, więc kiedy szef podchodzi do ciebie i mówi „czy możemy coś zrobić”, możesz powiedzieć tak, korzystając z dostępnych narzędzi.
źródło
Na tym etapie swojej kariery powinieneś nauczyć się nowych języków, jeśli uważasz, że uczynią cię lepszym programistą.
Większość wymienionych języków (Java / C / C ++ / JavaScript / Objective-C) to konwencjonalne OO / imperatyw. Uczenie się jeszcze jednego języka OO / imperatywnego prawdopodobnie nie nauczy Cię więcej o tego rodzaju programowaniu. Jeśli nie masz szczególnego zainteresowania, nie ma sensu uczyć się smaku miesiąca na specie.
Jestem również skłonny do sceptycznego nastawienia do twierdzeń o zwiększeniu produktywności rzędu wielkości. Warto jednak sprawdzić okazjonalny, wysokowydajny język, aby sprawdzić, czy ci się podoba.
Najlepszym powodem do nauki nowego języka jest nauka umiejętności ogólnego zastosowania. W tym celu zaleciłbym głębokie zanurzenie w funkcjonalnym języku (Haskell lub jeden z Lisps) z jednej strony, a także kod asemblera i architekturę systemów (x86 lub ARM) z drugiej.
Programowanie funkcjonalne złamie ci mózg i poprawi umysł, podczas gdy uczenie się architektury maszyny poprawi twoje możliwości debugowania i optymalizacji, nawet jeśli nigdy nie napiszesz innej linii montażu.
źródło
Każdy z nas decyduje, nad czym chcemy pracować, więc ...
Jeśli nie chcesz uczyć się PHP, nikt cię nie zmusza i jest mnóstwo obszarów, w których możesz programować, nawet nie wiedząc, jak napisać PHP.
Wiele osób patrzy na rynek pracy, aby zobaczyć, gdzie znajdują się gorące obszary i skoczyć na te technologie. Wiele osób uczy się jednego języka i trzyma się go, a 20 lat później zostają starszymi inżynierami utrzymania ruchu. A potem masz wielu ludzi, którzy są gdzieś pomiędzy tymi dwoma skrajnościami.
Ostatecznie chodzi o to, gdzie chcesz być.
źródło
Najlepszy argument, jaki znam, to to, że poszerza twoją perspektywę na to, na ile różnych sposobów można rozwiązać problem, lub jakąś logikę. Znajomość języków Java i C ++ daje dobry obraz zarówno natywnych, jak i wirtualnych dziedzin, ale można odkryć znacznie więcej „stopni swobody”.
Mam około 15 lat doświadczenia w C ++, 5 w Javie. Jest wiele języków, których się nauczyłem i które pozostawiłem (PHP, Pascal, montaż dla wielu różnych procesorów, między innymi) i mogę powiedzieć na pewno, że nawet te, których już nie używam, pozostawiły znaczący ślad na tym, jak myślę o problemie . Ponadto: nawet jeśli chcesz trzymać się, powiedzmy, Java, dla danego projektu, będziesz musiał znać alternatywę dla przedstawienia dobrych kontrargumentów swoim zwolennikom.
Mimo to nauczyłem się Pythona w tym roku i byłem zachwycony, jak elegancko można zrobić pewne rzeczy. Tak bardzo, że postanowiłem przekonwertować garść serwletów REST, które napisałem, z Javy na Python. Zalety w utrzymywaniu kodu były dość znaczące. Z pewnością pozostawił ślad na moim sposobie robienia rzeczy, nie tylko dlatego, że teraz wybieram Pythona do niektórych zadań, ale także dlatego, że mogę przyjąć podobne zasady projektowania przy kodowaniu w C ++ i Javie.
To powiedziawszy, nie sądzę, że powinieneś uczyć się wielu różnych języków przez cały czas, tylko ze względu na to. Zajmuje to sporo czasu, a „zakwaterowanie”, które musisz sobie wyobrazić, aby mogły one współistnieć z innymi, których już znasz, również wymaga czasu i wysiłku. Postanawiam uczyć się języka tylko wtedy, gdy jest wystarczająco dojrzały, ma dobrą bazę programistów i oferuje znacznie inne wyniki niż inne, które znam lub planuję się uczyć. Kiedy na przykład postanowiłem nauczyć się Pythona, rozważałem także Ruby i Perla, a później odrzuciłem je - przynajmniej na najbliższą przyszłość.
źródło
Ludzie uczą się nowych języków ...
Zaufanie = niesamowity kod!
Jak widać, istnieje wiele powodów, aby uczyć się nowego języka. Moja rada dla ciebie (i mój jedyny oryginalny cytat, który moim zdaniem jest dobry):
źródło
Zgadzam się z większością już opublikowanych odpowiedzi. Aby do nich dołączyć, sprawdź statystyki zebrane w ankiecie dotyczącej przepełnienia stosu w 2011 r. Istnieje bardzo wysoka korelacja między liczbą znanych języków a zarobionymi pieniędzmi. Nie mogą być bezpośrednio związane ze sobą, ale warto o tym pomyśleć.
Ludzie, którzy uczą się więcej języków, zwykle zarabiają więcej pieniędzy.
http://blog.stackoverflow.com/2012/02/survey-results/
źródło
Alfred North Whitehead napisał świetny esej zatytułowany „ Znaczenie dobrej notacji ”
Język programowania jest formą zapisu. Potrafię kodować OO w C; tak właśnie zaczął Stroustrup od C ++ - jako serii makr C prekompilatora. Jednak pisanie kodu OO w Javie, C ++ lub C # jest znacznie łatwiejsze i szybsze, ponieważ zawierają one prymitywy językowe, które łatwiej obsługują OO.
Wszystkie podane do tej pory powody uczenia się nowych języków są ważne, ale myślę, że najlepszym powodem do nauki nowego języka jest to, że nowa notacja może pozwolić ci myśleć w nowy sposób, co może pomóc w rozwiązaniu nowych problemów.
źródło
Większość lub wszystkie powyższe odpowiedzi dotyczą zawodu. Programowanie. Chcę przypomnieć, że zanim jesteśmy programistami - jesteśmy ludźmi.
Jednym z dobrych powodów, dla których nie chcesz uczyć się nowego języka programowania, jest pozwolenie sobie na odpoczynek lub robienie innych rzeczy poza programowaniem.
Z mojego doświadczenia, pracy w rolnictwie i pracy z drewnem, dużo myślałem o programowaniu - więcej niż uczenie się nowego języka. tzn. aby być dobrym programistą, najpierw musisz być dobrym człowiekiem. Jeśli nie masz dużego doświadczenia życiowego, oprócz programowania, twój pomysł na programowanie może być całkowicie błędny - nawet jeśli jesteś ekspertem.
Wiele pojęć związanych z programowaniem pochodzi bezpośrednio z codziennego życia: prostota, łatwość konserwacji, praktyczność, użyteczność, szybkość - a czasem powolność , modułowość itp .; są wszystkie koncepcje używane na przykład przez stolarza.
Wierzcie lub nie: osobiście wiele się nauczyłem o programowaniu, biorąc długie wakacje na zbieranie pomarańczy. Główną koncepcją, której się nauczyłem, była prostota. Od pracy jako budowniczy nauczyłem się innej koncepcji: zbuduj bazę tak dobrze, jak to możliwe - jeśli chcesz, aby ściany stały prosto.
Na koniec odpowiedź na twoje pytanie może brzmieć: weź urlop, dołącz do klasy taekwondo lub zajmij się ogrodem - wtedy twoje pytanie nie będzie Ci już przeszkadzać.
źródło
Wartość uczenia się nowego języka programowania jest w przybliżeniu odwrotnością liczby języków programowania, które już znasz.
Wynika to z faktu, że istnieje skończona liczba paradygmatów, a nauka nowego języka zwykle zapoznaje cię z co najmniej jednym lub dwoma, czyniąc cię bardziej doświadczonym i zdolnym jako programista. Niektórzy mogą wywrócić świat programowania do góry nogami. Ale kiedy uczysz się nowego języka z paradygmatami, które już znasz, znasz je i jesteś do nich przyzwyczajony.
źródło
Jak większość z nich już napisała, mam dobrą wiedzę praktyczną na temat C. Ostatnio pracowałem nad pewnym problemem, dla którego musiałem sprawdzić krzyżowo wyniki; to było matematyczne. Więc jaki jest najszybszy sposób na uzyskanie odpowiedzi, sprawił, że sprawdziłem szybszy język programowania do nauczenia się.
I dowiedziałem się, że bc , język dowolnego kalkulatora precyzji, narzędzie prawie dostępne na każdej platformie Unix.
Nie myślałem o Pythonie, Perlu ani nic takiego, ale odkryłem, że to rozwiązało moje problemy w mgnieniu oka. Sprawdziłem to na silni (20000), którą zasugerował jeden z przyjaciół, i dało to wyniki w mgnieniu oka bez awarii.
Ważne jest tylko do tego stopnia, że musisz znać nowy język, który obecnie ułatwi Ci pracę / problem.
Zdecydowanie, jeśli napiszę to w moim życiorysie, chyba nikogo to nie obchodzi, ale z mojej perspektywy rozwiązuje mój problem, zanim zaatakuję go w moim ulubionym języku „C”.
A także, jeśli zajdzie potrzeba nauki nowego języka, otrzymasz szansę z różnymi problemami i wieloma rozwiązaniami.
źródło
Każdy może stworzyć nowy język; ale wydaje się, że nikt nie rozumie, że „lepiej” rzadko jest tym samym, co „o wiele lepiej, że koszty adopcji są faktycznie uzasadnione”. Efektem końcowym są setki różnych języków, w których nikt nie jest w stanie zrozumieć całego kodu źródłowego, a programiści muszą marnować około jednej czwartej swojego czasu na nieproduktywność z powodu różnic językowych / frameworkowych / bibliotecznych.
W idealnym świecie istniałby jeden język programowania niskiego poziomu (np. C), jeden „bezpieczny” język programowania wysokiego poziomu (np. Java) i jeden język skryptowy. Byłby też duży młot do niszczenia „Wieży programowania w Babel”, stworzony przez ludzi, którzy nie rozumieją zalet standaryzacji i kosztu „rezygnacji” i ciągłego przekwalifikowania całej branży IT.
Z makroekonomicznego punktu widzenia nie ma nic złego w uczeniu się nowego języka programowania jako hobby, ale używanie tego nowego języka programowania do czegokolwiek sprawia, że stajesz się częścią problemu.
źródło