Programista powinien skoncentrować się na co najmniej liczbie języków? [Zamknięte]

21

Dla mnie jestem osobą C # i Java. Uważam, że te 2 języki są dość podobne, więc łatwiej mi się krzyżować. Nie jestem pewien, czy dobrym pomysłem jest wybranie innych języków. jakieś pomysły?

Cyfrowy koleś
źródło
pytasz, ponieważ procesy rekrutacyjne szukają słów kluczowych przy wznowieniu?
Brian
@ 0A0D nie, to było w interesie osobistym. Jestem również programistą :)
Digital Dude

Odpowiedzi:

43

Mogę wymyślić co najmniej pięć powodów, dla których warto nauczyć się języka, i wydaje się, że ostatecznie powinieneś nauczyć się jednego z nich.

  1. Jeden język do zdobycia pierwszej pracy - prawdopodobnie Java / C # / C ++
  2. Jeden język do wykonania zadań - prawdopodobnie Bash / Perl / Python / Ruby
  3. Jeden język, który pochyli twój umysł - prawdopodobnie Haskell / Clojure / Scala / F #
  4. Jeden język z powodów specyficznych dla domeny - prawdopodobnie JavaScript / Cel C
  5. Jeden język, który zabrudzi ręce - prawdopodobnie C / Assembly
Eric Wilson
źródło
17
Jaki język rządzi nimi wszystkimi?
Tester101 28.10.10
4
Zgromadzenie rządzi nimi wszystkimi. I dlatego jest wymieniony jako ostatni. Najlepsze na koniec.
WernerCD
9
Tester101: angielski? ; o)
John Fisher
6
Oczywiście nie powinno być zaskoczeniem, że językiem, w którym musisz zdobyć pierwszą pracę, nie jest język, w którym pracujesz.
4
... a w ciemności zwiąż ich!
tchrist
53

Nie chodzi o to, ile języków się uczysz. Chodzi o naukę nowych koncepcji. Niektóre języki mogą nauczyć Cię wielu pojęć, podczas gdy inne mogą nauczyć tylko jednego.

Jeśli znasz język C #, prawdopodobnie nie nauczyłbyś się niczego nowego, ucząc się języka Java. Ale zrobiłbyś to, gdybyś nauczył się Haskell.

Kiedy więc wybierasz nowy język do nauki, wybierz coś, co nauczy Cię pojęć, których jeszcze nie znasz.

Frank Shearar
źródło
23
+1 „Język, który nie wpływa na sposób myślenia o programowaniu, nie jest wart poznania” -Alan Perlis
Inaimathi
20
@Inaimathi: Chyba że wiedza pomaga w opłaceniu rachunków.
Kramii Reinstate Monica
5
Tylko uwaga: zasugerowałem Haskellowi bez żadnego innego powodu niż to, że radykalnie różni się od C #. Oszust, który nosił azbest, chciał powiedzieć „naucz się Smalltalk, żebyś mógł nauczyć się OO”!
Frank Shearar
10
@Digital Dude: fakt, że jest trudny, jest w pewnym sensie sednem. Ten ból za czołem NIE jest złą rzeczą - to znak, że mózg rośnie. Jeśli chcesz ciągle uczyć się tej samej rzeczy w kółko, ucz się Java, potem C #, następnie Ruby, a następnie C ++ (woooh, bez śmieciarza - straszne!), A następnie C (bez klas - straszne!), To może oszalej i spróbuj Objective-C! (Ooooch - dwa dni temu nie mogłem przeliterować Maca, a teraz mogę zaprogramować jeden!). Chodzi mi o to, że jeśli chcesz nauczyć się czegoś NOWEGO, musisz zrobić coś INNEGO. Podążając tą samą drogą, po prostu dotrzesz do tego samego miejsca.
Bob Jarvis - Przywróć Monikę
4
@Kramii @Inaimathi Aha, ale język, który pomaga płacić rachunki, wpływa na twój sposób myślenia o programowaniu
slf
22

Powiedziałbym, że najważniejszą rzeczą jest umiejętność szybkiego uczenia się. To powiedziawszy, ważne jest, aby znać różne języki używane do różnych celów. Na przykład wiem:

1) Python i Perl dla kategorii języków skryptowych

2) C ++ jako język „framework”

3) Java dla aplikacji mobilnej

4) C dla ogromnej ilości starszego kodu

5) Niektóre przestarzałe języki, które znałem, gdy byłem młody (Basic, Pascal, Clipper itp.)

Powiedziałbym, że potrzebujesz przynajmniej głównego języka i skryptu. Znając C # powiedziałbym, że musisz nauczyć się języka Python, Perl lub Ruby. (Wybrałbym Python, ale to tylko kwestia preferencji).

Emiliano
źródło
1
Zgadzam się również z tym. Programista, który zna język, musi przynajmniej nauczyć się jednego z języków skryptowych, aby z nim pracować. Uważam, że jest to bardzo ważne + przydatne, gdy chcesz wykonać kilka testów. zwłaszcza tworzenie gier ... itd. Chyba wybiorę Python jako mój dodatkowy język :)
Digital Dude
2
karma za umiejętność szybkiego uczenia się
Ayush Goyal
Oprócz języka skryptowego, czasem pomocna może być również znajomość języka skryptowego powłoki. Niektóre typowe zadania w systemie są łatwiejsze do rozwiązania w języku powłoki niż nawet w języku skryptowym, takim jak Python.
CodexArcanum
znajomość C # różni się od bycia ekspertem w tym języku
Brian
1
Pascal nie jest językiem przestarzałym; w Delphi jest obecnie mnóstwo rzeczy.
Mason Wheeler
8

Dobrze jest uczyć się jednego nowego języka programowania każdego roku. Ale zamiast uczyć się czegoś podobnego do tego, co już wiesz, radzę ci nauczyć się czegoś zupełnie innego, jak Scala lub F #. Pokażą ci nowe sposoby robienia rzeczy i ostatecznie wzbogacą twoje umiejętności programistyczne.

Paweł Dyda
źródło
Dzięki! Wiem trochę tu i tam, ale zdałem sobie sprawę, że tak naprawdę nie jestem w stanie całkowicie opanować jednego języka. Zawsze pojawiają się nowe rzeczy ...: /
Digital Dude
2
@Digital Nie musisz opanować każdego języka. Powinieneś być zaznajomiony z tymi pojęciami, więc jeśli pojawi się problem, który najlepiej rozwiąże język, możesz podjąć tę decyzję. Może także narazić Cię na pojęcia, których możesz używać w swoich głównych językach.
KeithB
8

Powinieneś skoncentrować się na językach, których potrzebujesz i których używasz do tego, co robisz . Naprawdę nauka języka pochodzi z praktyki, więc możesz czerpać z niego korzyści, kiedy go ćwiczysz. Jeśli masz zamiar nauczyć się nowego języka w wolnym czasie, zrób to, wdrażając go w zadaniach o coraz większej złożoności, aby naprawdę go opanować.


źródło
7

skoncentruj się na żadnym. skoncentruj się na nauce i pisaniu czystego kodu; jasne, wyraziste, proste i, co najważniejsze, nie powielane.

zapoznaj się z zasadami tego rodzaju programowania, podstawami (na przykład enkapsulacją dla OOP; co to znaczy i co to oznacza) i naucz się kilku zasad

te rzeczy ułatwią ci pracę. ułatwi to nawet osobom pracującym z tobą lub po tobie.

tak, musisz też całkiem dobrze znać składnię. ale to nie jest coś, co zajmuje twoją uwagę przez długi czas

i musisz całkiem dobrze zrozumieć, jakich technologii używasz. ale można nadać im priorytety zgodnie z poziomem złożoności wymaganym przez firmę.

dwa ostatnie nie są w centrum uwagi, ale w pewnym stopniu

Belun
źródło
tak, ostatnio wybrałem C # essential, który jest bardzo dobrą książką do przeczytania i odkryłem wiele rzeczy, których nigdy tak naprawdę nie wiem, jak w pełni z niego korzystać. Zalecana jest także inna książka C # dogłębnie, którą słyszałem. Jest tak wielu do nauczenia się ... dlatego zacząłem ten post na temat koncentracji niektórych języków.
Digital Dude,
ustalaj priorytety zgodnie z Twoim celem. chcesz ułatwić ci pracę? jesteś zadowolony z tego, gdzie jesteś i co robisz? idź po czysty kod. jeśli chcesz pracować w innej firmie, która korzysta z innej technologii, naucz się tego. jeśli chcesz zmienić technologię tylko dla różnorodności, idź do tego. wybierz swój cel i działaj odpowiednio
Belun,
6

Programista musi skoncentrować się na programowaniu, a nie na specjalnym języku / językach.

Ahmet Kakıcı
źródło
6

Tyle, ile potrzeba do wykonania pracy.

Ale C # i Java są tak podobne jak angielski w Wielkiej Brytanii i angielski w USA. Możesz nauczyć się czegoś nowego , wybierając fiński lub Navajo.


źródło
1
lub! Xóõ: en.wikipedia.org/wiki/Taa_language (afrykański język „kliknięcia”).
Jared Updike,
hehe, po wspomnieniu o fińskim lub Navajo. Myślę, że zamiast tego wybiorę język japoński na czwartą ... dość programowania ...
Digital Dude,
1
@Jared, myślę, że język WYMAGAJĄCY wycinania i wklejania, aby powiedzieć tylko swoją nazwę, może zachęcać do niepożądanych nawyków od samego początku ...
5

Nie sądzę, żebyś mógł opanować język bez wystarczającej znajomości innych języków, aby widzieć ten język „z zewnątrz”. Każdy inny język przedstawia coś innego, a wprowadzane przez nich pojęcia to rzeczy, które możesz przywrócić do głównych języków, z którymi pracujesz.

Czas spędzony na nauce używania innych języków nigdy się nie marnuje, nawet jeśli nie planujesz ich używać w celach komercyjnych.

Stare powiedzenie mówi, że każdego roku uczy się języka i z pewnością powiedziałbym, że przez pierwsze dziesięć lat trzeba to robić. Może poza tym możesz wybierać między bardziej dogłębnym poznaniem tych, które już znasz (być może aktualizowaniem wiedzy o tych, których nauczyłeś się kilka lat temu) lub pracą z konkretnymi bibliotekami, zamiast gromadzić nowe języki bez końca, ale pilnować zapoznanie się z praktyką programowania poprzez pracę z różnymi językami z pewnością pomoże ci w rozwoju jako programista.

glenatron
źródło
Po pewnym czasie możesz również poświęcić trochę czasu na korzystanie z pojęć wyuczonych w jednym języku w innym. Na przykład, po nauczeniu się programowania funkcjonalnego za pomocą Haskell, możesz spróbować sprawdzić, jakie koncepcje programowania funkcjonalnego można użyć w języku C #. Nie chciałbyś pisać całego programu funkcyjnego w języku C #, ale jego części mogą mieć sens.
KeithB
3

Popularne języki programowania, takie jak C # i Java, zapewnią ci zarobkowe zatrudnienie w większości miejsc, ale żadne z nich nie różni się wystarczająco od siebie, aby nauczyć się nowych sposobów rozwiązywania problemów. Sądzę, że istnieje kilka języków, w których jesz (tych, których używasz do wykonywania swojej pracy) i innych, z którymi się bawisz. Oba mają swoje cele.

Odkryłem, że ucząc się nowych języków programowania, nauczyłem się także nowych i bardziej eleganckich sposobów rozwiązywania problemów. Nie chodzi o liczbę języków ani o to, jak często je odbierasz. Każdy język programowania, którego warto się nauczyć, ma unikalny punkt widzenia, który zmusza cię do podejścia do swoich problemów z nowym nastawieniem. Wiele razy wartość pochodzi z uczenia się tego sposobu myślenia.

Grałem z Smalltalk i bardzo mi się podobało. Język był przyjemnością do rozwijania. Gdy już przyzwyczaisz się do idiomów, pomogły ci one bardziej wyrazić swój kod. W ogóle nie brakowało mi pisania statycznego w Javie / C ++ / C #. Ogólne, z którymi żyjemy w naszych językach o typie statycznym, są naprawdę konstrukcjami, które omijają ograniczenia, które narzuca statyczne typowanie.

Używam Ruby i Ruby na szynach regularnie, choć nie teraz do płacenia za pracę. Zasadą projektowania Ruby było „zwiększenie szczęścia programisty”. Musisz pokochać ten sentyment i w większości myślę, że to przynosi.

W końcu Java pójdzie drogą seplenienia i Smalltalk, a C # pójdzie w ich ślady. To, co będzie tam, aby zająć ich miejsce, dopiero się okaże. Na koniec dnia, jeśli umiesz rozwiązywać problemy i masz wiele sposobów, aby pokroić problem i pokroić go w kostkę, będziesz w stanie znaleźć pracę i wybrać język, którego potrzebujesz.

Berin Loritsch
źródło
2

Jeśli chodzi o aktualizowanie umiejętności i elastyczność, myślę, że powinieneś próbować nauczyć się co najmniej jednego całkowicie nowego języka programowania co około 6 miesięcy. Mam na myśli język, który jest bardzo, bardzo inny.

Tak więc podczas uczenia się więcej o frameworku .net podczas korzystania z języka C # lub frameworku Java pomaga utrzymać równowagę, nauka Haskell, Smalltalk, Scala, Clojure lub Ruby poszerzy Twoją technikę i pomoże Ci myśleć na różne sposoby, z których niektóre możesz wykorzystać wróć do swojego głównego języka, a niektóre z nich mogą pomóc ci przejść dalej, jeśli Java przestanie być królem wzgórza.

Jeśli nigdy nie nauczyłeś się C, to mimo że jego składnia została przeniesiona do Javy, sposób myślenia może być zupełnie inny. Warto go dogłębnie, a jeszcze lepiej zrozumieć, w jaki sposób kod OO można napisać w tym języku, który wydaje się jedynie proceduralny.

Polecam przeczytać książkę Bruce'a Tate'a „Beyond Java”, która zbyt dobrze podkreśla niebezpieczeństwa bycia tylko w jednym języku, zwracając uwagę na wzrost i upadek C ++. Chociaż C ++ jest jeszcze daleki od śmierci i pozostało dziesięciolecia, staje się coraz bardziej ograniczony do używania tylko w sytuacjach, w których nie można skorzystać ze wzrostu wydajności w innych językach. Dla kontrastu, platforma Rubat, Sinatra, pozwala zbudować prostą usługę internetową w około 6/7 liniach kodu, ekwiwalent C ++ może być o rząd wielkości większy niż ten.

Danny Staple
źródło
1

Jeśli nie jesteś rodzimym językiem angielskim, musisz przynajmniej skoncentrować się na doskonaleniu języka angielskiego . Mówię to na podstawie mojego doświadczenia. Zrozumienie tego języka bardzo mi pomogło.

Wszystkie dobre materiały (książki, artykuły, kod itp.) Do nauki języków programowania, technologii i nowych koncepcji są napisane w języku angielskim.

Matias
źródło
1

Języki to narzędzia do wykonywania pracy. Niektóre języki są odpowiednie dla niektórych rodzajów problemów, inne są na ogół dobre we wszelkiego rodzaju rozwiązywaniu problemów. Polecam naukę nowych języków, gdy tylko się pojawią. Nie miej obsesji na punkcie tego, co jest modne w tym miesiącu, ale dowiedz się, co potrafią, w czym są dobrzy. Moja rada to 1 nowy język rocznie. Pojawiają się szybciej, ale chcesz umieścić nowe narzędzia w swoim zestawie narzędzi, a nie być modnym nowym dzieckiem na bloku.

Jednym z esejów mówiących o różnicach językowych jest „Beating the Averages” Paula Grahama. Polecam ją przeczytać, ale jest tu jedna ważna część (używa „Blub” jako języka hipotetycznego, abyś nie kłócił się o to, co może zrobić Twój ulubiony język):

A może Perl 4? Pomiędzy Perl 4 a Perl 5 do języka dodano dodawanie leksykalne. Większość hakerów Perla zgodzi się, że Perl 5 jest potężniejszy niż Perl 4. Ale kiedy to przyznasz, przyznajesz, że jeden język wysokiego poziomu może być potężniejszy od drugiego. Wynika z tego nieubłaganie, że, z wyjątkiem szczególnych przypadków, powinieneś użyć możliwie największej mocy.

Jednak ten pomysł rzadko jest realizowany. Po pewnym wieku programiści rzadko zmieniają języki dobrowolnie. Bez względu na to, jakim językiem ludzie się przyzwyczaili, zwykle uważają je za wystarczająco dobre.

{fantastyczna okazja}

Tak długo, jak nasz hipotetyczny programista Blub patrzy w dół na kontinuum mocy, wie, że patrzy w dół. Języki słabsze niż Blub są oczywiście słabsze, ponieważ brakuje im niektórych funkcji, do których był przyzwyczajony. Ale kiedy nasz hipotetyczny programista Blub patrzy w drugą stronę, w górę kontinuum mocy, nie zdaje sobie sprawy, że patrzy w górę. To, co widzi, to tylko dziwne języki. Prawdopodobnie uważa ich za równoważnych mocy Blubowi, ale z tymi wszystkimi innymi włochatymi rzeczami. Blub jest dla niego wystarczająco dobry, ponieważ myśli w Blubie.

Kiedy jednak przejdziemy do punktu widzenia programisty używającego dowolnego z języków wyższych w kontinuum mocy, okazuje się, że on z kolei patrzy na Bluba. Jak możesz coś zrobić w Blub? To nawet nie ma.

Dzięki indukcji jedynymi programistami, którzy mogą zobaczyć wszystkie różnice w mocy między różnymi językami, są ci, którzy rozumieją ten najsilniejszy. (Prawdopodobnie to właśnie miał na myśli Eric Raymond o tym, że Lisp uczynił cię lepszym programistą.) Nie możesz ufać opiniom innych, z powodu paradoksu Blub: są zadowoleni z dowolnego języka, którego używają, ponieważ to dyktuje sposób, w jaki myślą o programach.

http://www.paulgraham.com/avg.html

Większość aplikacji, które wysyłamy, jest napisanych w języku C # lub VB. Kiedy potrzebowaliśmy dodać skrypt do aplikacji, wybraliśmy Python (Lua była drugim wyborem). Uczymy się języka F #, ponieważ może to zrobić kilka nowych, owłosionych rzeczy, które trudno wytłumaczyć i zrozumieć, jeśli wszystko, co wiemy, to C # / Java / VB.

Tangurena
źródło
0

Cóż, przede wszystkim istnieje wiele języków, których bardzo trudno jest uniknąć dla większości programistów: javascript, sql, c itp., więc równie dobrze możesz się z nimi zapoznać, nie znikną.

dobrym pomysłem jest także znajomość języka skryptowego typu kaczka ... np. perl, python, ruby, lua itp. są one niezwykle przydatne w przypadku wielu problemów, w tym automatyzacji wielu codziennych kryminałów

na lepsze lub gorsze, w pewnym momencie prawdopodobnie również natkniesz się na c # i / lub java, są one dość wszechobecne.

w każdym razie nie ograniczaj się sztucznie. ci znani koderzy, którzy wyraźnie unikają wybierania interesujących narzędzi, wydają się mieć skryte światopoglądy i mieć ograniczony wpływ.

Brad Clawsie
źródło
0

W pewnym sensie może to stać się kolejną debatą między specjalistami a generalistami. Niektórzy ludzie mogą spędzać dużo czasu, znając jeden język na głębokich głębokościach, co jest dla nich dobre. Inni ludzie mogą chcieć dowiedzieć się trochę o wielu różnych językach, które działają dobrze dla nich. Większość ludzi jest pomiędzy tymi dwoma skrajnościami.

Jeśli chcesz poznać propozycje języków, oto kilka pomysłów:

  1. Programowanie funkcjonalne - przykładem mogą tu być Haskell lub Lisp, a zmiana paradygmatu może być do pewnego stopnia oszałamiająca.

  2. Specyficzne dla bazy danych - PL / SQL lub T-SQL przychodzą na myśl jako coś, co może być przydatne, jeśli chcesz wykonać więcej zadań zaplecza z systemami, które wymagają bazy danych dla niektórych jej funkcji.

  3. Języki sieciowe interfejsu użytkownika - ActionScript lub Javascript byłyby tutaj przykładami języków używanych w bogatych aplikacjach internetowych, chociaż AIR może powodować, że niektóre aplikacje komputerowe używają wywołań internetowych w niektórych przypadkach, takich jak Twhirl, używając interfejsu API Twittera.

Są to tylko pomysły i w zależności od tego, gdzie chcesz się znaleźć, mogą być dla Ciebie przydatne lub bezużyteczne. Powodzenia w podejmowaniu jakichkolwiek wyborów.

JB King
źródło
0

Programista musi znać trzy języki: C, angielski i coś innego.

C jest bardzo podstawowym językiem, jest blisko komputera i ma reguły składniowe, które są wspólne dla kilku języków wysokiego poziomu. C zmusza Cię do myślenia o strukturach danych w zupełnie inny sposób niż Java. Ponadto vms w języku Python i Ruby są wbudowane w C, a C można wstawić do obu języków, gdy chcesz zwiększyć swoją szybkość.

Angielski jest wspólnym językiem programowania. Większość książek, raportów technicznych, technicznych stron internetowych i artykułów w czasopismach pojawia się najpierw w języku angielskim, a czasem wyłącznie w języku angielskim. Ponadto, jeśli angielski nie jest twoim pierwszym językiem, nauka angielskiego rozszerzy zestaw narzędzi do manipulowania pojęciami (dotyczy to również osób mówiących po angielsku, które uczą się również innego języka).

Coś innego powinno być językiem, który nie jest proceduralny, nie jest wpisany statycznie lub jest silnie zorientowany obiektowo, lub w jakiś sposób zasadniczo różni się od C. Haskell, Scala, Python, Ruby, jakiś dialekt Lisp, cokolwiek .

Następnie możesz dowiedzieć się, czego wymaga konkretna sytuacja, na przykład C # lub Java.

filozofodad
źródło
Byłbym wdzięczny za komentarz dotyczący tego, dlaczego ty, anonimowy krytyk, głosowałeś za odrzuceniem tej odpowiedzi.
Philododad
język angielski nie nauczy Cię pomysłu, to tylko sposób na wyrażenie pomysłu.
sagarmatha
@sagarmatha: Nawet jeśli to prawda, a tak nie jest , nie ma nic „tylko” w tym, że można wyrazić się w domyślnym języku komunikacji w tej dziedzinie. Jeśli poprawisz swój angielski, będziesz w stanie wyraźnie wyrazić się przed użytkownikami języka angielskiego, a co ważniejsze, czytać i rozumieć język angielski znacznie szybciej. Jak podkreśla Matias, książki programistyczne i artykuły techniczne zwykle pojawiają się najpierw w języku angielskim , a czasem tylko w języku angielskim .
philosodad
Nie rozumiem, dlaczego zostałeś potraktowany z lekceważeniem, ale zgodziłbym się z tobą, że znajomość języka angielskiego jest równie ważna, jak znajomość głównego języka programowania. @sagarmatha: Po prostu zaprzeczyłeś sobie. Jeśli pomysły są wyrażone w języku angielskim, to z pewnością znajomość języka angielskiego pozwoli ci nauczyć się tych nowych pomysłów. To, jak dobrze się nauczysz i zastosujesz, będzie zależeć od twojej umiejętności rozumienia języka angielskiego oraz umiejętności programowania.
chiurox