Czy większość programistów specjalizuje się w jednym stosie, pozostawiając inne rzeczy, czy też są ekspertami w wielu językach jednocześnie? Jeśli jest więcej niż jeden, ile jest standardowych?
Przez eksperta rozumiem nie tylko znajomość składni języka - ekspert zna wystarczająco dużo standardowych bibliotek, narzędzi, środowisk i składni, aby móc pisać niebanalne programy bez konieczności ciągłego przeszukiwania lub czytania książek / samouczków.
programming-languages
self-improvement
experience
Blueberryfields
źródło
źródło
Odpowiedzi:
Główną zaletą znajomości wielu języków nie jest ich bezpośrednie pisanie. Wszystkie inne rzeczy są jednakowe, wolę pracować z programistą C #, który zna również C, Python i Lisp (na przykład), niż tym, który kiedykolwiek hakował tylko w C #. Nie jest tak, że znajomość większej liczby języków jest lepsza, ale możliwość myślenia o problemach na wielu poziomach i z wielu perspektyw jest naprawdę pomocna.
Nie chodzi o sprawdzanie jeszcze jednego języka lub umieszczanie go w CV; musisz po prostu zrozumieć jego podstawowe pojęcia na tyle dobrze, aby zaprogramować je, aby uzyskać pełne korzyści. Nie uzyskasz tego dzięki podstawowej znajomości składni.
Bardziej bezpośrednią odpowiedzią jest „to zależy”.
W większych firmach oczekuje się / możesz się specjalizować, ale jak powiedziałem powyżej, uważam, że zrozumienie rzeczy wykraczających poza twoje ulubione narzędzie jest nadal korzystne.
W mniejszych miejscach naprawdę nie można tego uciec. Jeśli nic więcej, zwykle musisz utrzymywać swoją aplikację, a także ją budować, i prawdopodobnie nie powinieneś używać tych samych języków do uruchamiania dzienników / mungingu, tak jak robisz to podczas tworzenia aplikacji. Wydaje mi się, że technicznie można uciec od znajomości jednego języka, ale korzyść z posiadania dobrze działającego, silnie napisanego (lub przynajmniej zdolnego do asercji), prawdopodobnie skompilowanego języka jest bardzo ważna, i języka skryptowego do obsługi / Zadania konfiguracji / skryptowania wydają się dość duże. Na pewno nie chciałbym się bez tego obejść.
źródło
Masz bardzo interesujące pytanie:
Nie sądzę, że każdy programista powinien być „ekspertem” w konkretnym języku. Wierzę, że jako programiści mamy być ekspertami w programowaniu, projektowaniu algorytmów, myśleniu jasnymi krokami, ale język programowania jest czymś, czego się po prostu uczysz.
„Dobry” programista, mam na myśli to, że obsługuje projekty programistyczne bez obawy o klasyczne „Nigdy wcześniej z tym nie pracowałem”, powinien nauczyć się języka w mniej niż 5 dni roboczych. Uczysz się najlepszych praktyk, narzędzi i bibliotek głównie na 2 sposoby, 1: czytanie i 2: praca. Albo odbijesz głowę od kodu, albo przeczytasz kilka książek.
W ciągu kilku lat po założeniu, że „dobrzy programiści piszą tylko kod” bez kodu C #, kodu C ++ lub kodu Java, zdasz sobie sprawę, że po nauczeniu się programowania, język i technologie nie są już tak ważne. Jasne, będziesz wiedział, jak poruszać się po C # lepiej niż PHP, ale jeśli dobrze się nauczyłeś, znajdziesz drogę do Pythona, jeśli będziesz musiał.
Mam nadzieję, że moje pomysły jak ty!
źródło
Jeden, ale to nie znaczy, że możesz zaniedbać inne. Musisz wiedzieć wystarczająco dużo, aby uzasadnić, dlaczego ich nie używasz lub znać swoje ograniczenia, aby w razie potrzeby poprosić o pomoc.
źródło
Myślę, że to prawdopodobnie zależy od twojej osobowości, są ludzie, którzy lubią kopać w zakamarkach tematu, i są inni, którzy lubią mieć szeroki wgląd w rzeczy. Prawdopodobnie będziesz musiał dowiedzieć się, jakim typem osobowości jesteś. Nie stawiam jednego nad drugim, każdy ma swoje zastosowanie.
Jako pierwszy będziesz ekspertem, guru, specjalistą. Jako ten ostatni będziesz miał bardziej ogólne zastosowanie i może być używany w różnych sytuacjach, ale być może nie zagłębisz się zbyt długo w temat.
źródło
Jeden. Ale lepiej bądź w tym cholernie dobry.
źródło
Jeden
Ten przed tobą.
źródło
Jak powiedział Joel w podcastu SO, lepiej poznać wiele języków i wiedzieć, jak / kiedy używać właściwego języka do zadania. Są rzeczy, które możesz zrobić znacznie szybciej w jednym języku niż w innym. Myślę, że dobrze byłoby na przykład znać język imperatywny i funkcjonalny. Wiele razy nauka trudniejszego lub bardziej ezoterycznego języka uczy twojego mózgu, aby być ogólnie lepszym programistą.
źródło
Brak, ponieważ prawdopodobnie są programiści, którzy nie będą ekspertami w żadnym języku, ale lubią różnorodne środowisko i używają różnych języków w zależności od okoliczności, ponieważ niektórzy mogą znać kilka technologii po stronie serwera, takich jak PHP, ASP.Net w C # .Net lub VB.Net lub Java, kilka języków skryptowych po stronie klienta, takich jak JavaScript lub Flash, i nie wymaga to żadnego sprzętu używanego do umieszczania tutaj treści internetowych.
Jednocześnie mogą istnieć programiści, którzy są ekspertami w kilkunastu językach lub więcej, ponieważ przez większość czasu uczą się raczej wiernie, aby nadążyć za każdym krokiem w każdym języku.
źródło
Jedna, ale musi umieć czytać nietrywialne programy z prawdziwego świata, które od czasu do czasu są pisane w kilku innych językach. W pewnym sensie ten, w którym programista jest ekspertem, przypomina ich język ojczysty, myślą w nim, ale nauka i mówienie innymi językami jest bardzo dobra, ponieważ pokazuje, że programista może docenić inne sposoby myślenia. Jeśli potrafią myśleć w więcej niż jednym języku tak płynnym jak język ojczysty, to jest niesamowite.
źródło
To dobre pytanie, ale nie sądzę, żeby istniał standard. Zwykle dzięki temu, co widziałem, ludzie są pełnymi ekspertami w jednym języku wysokiego poziomu (C ++, Java itp.) W jednym środowisku (Windows / Linux, Mac, Solaris). Znają z grubsza jakiś inny język wysokiego poziomu, ale nie do końca go rozumieją. (np. C ++, ludzie Java znają się z grubsza). Z grubsza mam na myśli, że mogą porównać wydajność jednego zadania w języku, w którym są ekspertami, oraz w drugim języku. A potem są umiarkowani w niektórych językach skryptowych. (np. ludzie Linuksa znają bash, ludzie Windows znają VBA, ludzie WWW znają PHP).
Dla mnie liczy się podstawowa znajomość algorytmu niż język. Jeśli twoje podstawy są dobre, masz mniejsze szanse na bałagan w dowolnym języku.
Ale tak, czasem warto wiedzieć, który język może być lepszy do danego zadania. np. poniższy kod jest znacznie szybszy w pascal niż w C.
strcat (A, „Hello”); strcat (A, „WOrld”); strcat (A, „I say hi!”);
Wynika to z tego, że Pascal zapisuje długość łańcucha w pierwszej lokalizacji, a zatem łatwo jest przeskoczyć do ostatniej lokalizacji. W C zakończeniem łańcucha jest „\ 0”, a zatem będziesz musiał przejść cały łańcuch w celu wykonania operacji strcat.
źródło
To zależy od środowiska, w którym programujesz. W poprzedniej pracy większość mojej pracy była w Perlu; w tamtym czasie byłem w tym dość biegły. Teraz pracuję w miejscu, które ma starsze programy w trzech językach, które ledwo znam składni; Oczekuję, że będę je utrzymywał oprócz pracy nad nowymi projektami. Teraz jestem mniej mistrzem jakiegokolwiek języka, ale myślę, że lepiej się programowałem . Nauczyłem się myśleć bardziej abstrakcyjnie, najpierw zobaczyć duży obraz, a następnie wyszukać składnię i biblioteki, aby uzupełnić szczegóły.
źródło