Czy powinienem zawracać sobie głowę nauką języków małych lub niszowych? [Zamknięte]


22

Jeśli przeglądasz pytania dotyczące kodu golfowego na StackExchange , zauważysz mnóstwo niestandardowych, ale rzeczywistych języków (np. Nie dla f * ck) takich jak F # , Scala , R , J i Clojure . Odwiedzając ich witryny, niektóre języki wyglądają interesująco, rozwiązując problemy w dowolnym języku, którego już używasz.

Jednak kodowanie odbywa się w wolnym czasie, a kodowanie dla pieniędzy. Prawdą, która nam najbardziej odpowiada na temat tego, kto używa języka, jest Indeks TIOBE , który nie wymienia żadnego z powyższych języków w pierwszej dziesiątce. Co mnie zastanawia, czy kiedykolwiek ich użyję.

Czy powinienem nawet zadać sobie trud nauki niektórych małych języków niszowych? Nie wydaje mi się, że zarabiałbym pieniądze, a niektóre i tak prawdopodobnie poniosą porażkę.


4
Jeśli zależy Ci tylko na zarabianiu pieniędzy, dlaczego zadajesz to pytanie?
ChaosPandion

4
F # to język pierwszej klasy od VS2010. Nie powiedziałbym, że jest niestandardowy i myślę, że wkrótce zyska szerokie zastosowanie.
Brian R. Bondy

8
Jeśli wszystko, czego chcesz, to po prostu zarabiać pieniądze, lepiej unikaj programowania. A może zostać popularną aktorką?
P Shved

2
@TheLQ: Chcesz być głównym nurtem? Boisz się zrobić krok, którego nie wiesz, ile pieniędzy przyniesie, zanim to zrobisz? Proszę, bądźcie zadowoleni z głównego nurtu. To wszystko, co kiedykolwiek dostaniesz dzięki swojej mentalności, jeśli w ogóle.
Ingo

1
Niektóre języki niszowe mogą sprawić, że będziesz bardziej produktywny, co pozwoli Ci zarobić więcej pieniędzy niż języki głównego nurtu.
Giorgio

Odpowiedzi:


25

Hipoteza Sapira-Whorfa . Mówi mniej więcej, że to, o czym możesz myśleć, jest ograniczone tym, co znasz język. Konsekwencją tego jest to, że ludzie wielojęzyczni są w stanie myśleć w sposób, którego nie potrafią mówić osoby posługujące się jednym językiem.

Wiele osób (w tym ja) uważa, że ​​dotyczy to również programowania. Na przykład nauka Lisp uczy zupełnie nowego sposobu myślenia o problemach, które możesz zastosować do C #, Java lub Python. Im więcej paradygmatów językowych nauczyłeś się, tym więcej narzędzi będzie w twoim mentalnym zestawie narzędzi, niezależnie od tego, jakiego języka faktycznie używasz.


1
Dokładnie. Na przykład uważam, że w niektórych sytuacjach czysto funkcjonalny język po prostu nie wystarcza. Ciągle jednak wciągam się w funkcjonalne koncepcje w językach, które obsługują programowanie funkcjonalne (np. Javascript, c ++ 0x itp.).
Cam

4
Cieszę się, że ludzie nadal wykorzystują hipotezę Sapira-Whorfa (w dużej mierze, choć nie do końca dyskredytowaną w językoznawstwie) jako analogię. Zdecydowanie zgadzam się z sentymentem do programowania, ale myślę, że lepiej byłoby znaleźć inną analogię, jeśli chcemy, aby ludzie traktowali nas poważnie.
Jonathan Sterling

1
Nie wierzę w hipotezę, w przeciwnym razie nigdy nie wyszlibyśmy poza pomruk. Podobnie w przypadku programowania, nie myśl, że ludzie są ograniczeni przez język.
John Smith,

24

Nauczyłbym się każdego języka, który wprowadza mnie w koncepcje i paradygmaty, których nigdy wcześniej nie widziałem. Właśnie dlatego nauczyłem się haskell i schematu - wprowadzili mnie odpowiednio do programowania funkcji i programowania głównie funkcjonalnego. Nie przejmowałbym się mniej, czy schemat i haskell były szeroko stosowane, poza tym, jak wpłynęłoby to na dostępną dokumentację i zasoby.

Zasadniczo, jeśli mały niszowy język zapozna Cię z nowymi koncepcjami i paradygmatami (zwłaszcza tymi, które możesz zastosować w innych językach), to ucz się dalej!

Inne powody, dla których możesz chcieć nauczyć się „małego / niszowego” języka:

  • Język pozwala lepiej „rozwiązać” konkretny (rodzaj) problemu (szybciej, z lepszym rozwiązaniem, bardziej przenośnie itp.) Niż jakikolwiek inny język

  • Język pozwala rozwiązywać problemy tak samo jak popularny język, ale ma kilka fajnych funkcji, które lubisz (np. Clojure)

  • Chcesz pomóc w rozwoju języka

7

Używam Clojure (jednego z „języków niszowych”, o którym wspominasz) i odkryłem, że było to bardzo wartościowe doświadczenie.

  • To sprawiło, że jestem o wiele bardziej produktywny (w porównaniu z Javą i C #, których wcześniej głównie używałem). Gdy prowadzę własną firmę, wydajność równa się pieniądzowi :-), więc w tym sensie Clojure już się udało, przynajmniej z mojej perspektywy.
  • Nauczyłem się nowych technik, które uczyniły mnie lepszym programistą (szczególnie w zakresie współbieżności, programowania funkcjonalnego, abstrakcji, metaprogramowania itp.). Nawet gdybym wrócił do pisania Javy, nadal mógłbym dobrze wykorzystać tę wiedzę
  • Uczenie się nowego języka bardzo różniącego się od wszystkiego, co robiłem wcześniej, było naprawdę przyjemne. Jeśli naprawdę lubisz to, co robisz, to warto samo w sobie.
  • Ponieważ jest to język JVM, nie ma znaczenia, czy zestaw bibliotek jest stosunkowo mały, ponieważ nadal masz dostęp do całego zestawu bibliotek w ekosystemie Java / JVM. Jest to duża zaleta dla języków działających na JVM (to samo dotyczy Scali)

Osobiście zwracałbym ograniczoną uwagę na takie rzeczy, jak TIOBE - tak naprawdę nie mówią zbyt wiele poza tym, co było popularne w przeszłości. Przydatne może, jeśli chcesz utrzymać pracę przy starych systemach, a mniej, jeśli chcesz się uczyć i poszerzać swoje horyzonty.


4

Powodem do nauki niszowego języka jest rzadko oczekiwanie, że użyjesz go bezpośrednio (dla pieniędzy lub w inny sposób). Zwykle jest to nauka nowego aspektu lub stylu programowania. Takie postępowanie może uczynić cię lepszym (i tak, prawdopodobnie bardziej wartościowym) programistą, nawet jeśli nigdy nie używasz tego języka do tworzenia kodu „produkcyjnego”.


4

Mówiąc jako profesjonalny programista w niszowym języku , można zarabiać na życie. Są jednak wady i zalety.

Rzeczy trudniejsze:

  • Znalezienie pracy trwa dłużej
  • Zadania częściej wymagają przeprowadzki
  • Dostaniesz niewielki szacunek od głównych programistów (a tym samym większy opór).

Rzeczy, które są łatwiejsze:

  • Mała grupa programistów ułatwia konkurowanie o pracę
  • Możesz poznać każdego programistę o znaczeniu w swojej dziedzinie
  • Budowanie reputacji jest łatwiejsze niż w głównym nurcie

Rzeczy, które po prostu :

  • Płaca wydaje się być bardziej zmienna, ponieważ istnieje niewiele standardów
  • Wiele czasu poświęca się na edukowanie innych na temat mocnych i słabych stron twojej niszy

Ogólnie rzecz biorąc, jeśli twoją karierą jest twoja troska, nigdy nie powinieneś być kucykiem, głównym nurtem ani niszą.


2

Obecnie uczę się Ruby, używając go do rozwiązywania problemów z Project Euler , tylko dlatego, że większość dnia spędzam na programowaniu w C lub PHP (a czasem C #) i chcę poszerzyć swoje horyzonty. Jak dotąd naprawdę otworzyłem oczy na to, co można zrobić. Nawet jeśli nigdy nie wykorzystam go do jakiejkolwiek „prawdziwej” pracy, uważam, że czas poświęcony na naukę o tym się opłaci.


+1 dla euler projektu. Zrobiłem to samo, kiedy uczyłem się języka Python

1

Zgadzam się ze wszystkimi wymienionymi punktami. Kolejną motywacją do nauki języka niszowego jest możliwość, że pewnego dnia język ten stanie się bardzo popularny. W tej sytuacji Twoja wczesna inwestycja w język może dać ci wskazówki do pracy nad wpływowymi ramami i elementami języka, które mogą być bardzo poszukiwane w przyszłości.

Jeśli język stanie się popularny, będziesz już w nim biegły, a zatem będziesz bardzo poszukiwany.

Niskie prawdopodobieństwo, potencjalnie wysokie nagrody.


2
Osobiście zawsze będę próbował uczyć się pojęć, a nie języków ... ograniczoną przestrzeń mózgu, jeśli wiesz, co mam na myśli.
ChaosPandion,

1

Jak już powiedzieli inni, nauka języka niszowego tylko dlatego, że jest to język niszowy, nie ma większego sensu. Często jednak języki niszowe zgłębiają koncepcję głębiej / głębiej niż języki głównego nurtu mogą sobie pozwolić lub chcą.

A czasami języki niszowe istniały daleko, znacznie dłużej niż którykolwiek z głównych języków - na myśl przychodzą języki Smalltalk, Prolog i Lisp. Mogą nie być popularne, ale też nie znikają.

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.