Стоит ли изучать маленькие или нишевые языки? [закрыто]


22

Если вы просматриваете вопросы по коду для игры в гольф на StackExchange , вы заметите множество нестандартных, но реальных языков (например, не мозг-f * ck), таких как F # , Scala , R , J и Clojure . Посещая их сайты, некоторые языки выглядят интересно, решая проблемы на любом языке, который вы уже используете.

Однако в свободное время есть кодирование и кодирование за деньги. Самое близкое, что мы имеем к правде о том, кто использует язык, - это индекс TIOBE , в котором ни один из вышеперечисленных языков не указан в топ 10-15. Что заставляет меня задуматься, буду ли я когда-нибудь ими пользоваться.

Должен ли я вообще потрудиться изучать некоторые из небольших нишевых языков? Не похоже, что я буду зарабатывать деньги, а некоторые, возможно, все равно потерпят неудачу.


4
Если все, что вас волнует, это зарабатывать деньги, почему вы задаете этот вопрос?
ChaosPandion

4
F # является языком первого класса с VS2010. Я бы не сказал, что он нестандартный, и я думаю, что он скоро получит широкое распространение.
Брайан Р. Бонди

8
Если все, что вам нужно, это просто зарабатывать деньги, вам лучше держаться подальше от программирования. Как насчет того, чтобы стать популярной актрисой?
П Швед

2
@TheLQ: Вы хотите стать мейнстримом? Вы боитесь сделать какой-либо шаг, вы не знаете, сколько денег он принесет, прежде чем сделать это? Тогда, пожалуйста, будьте довольны основной платой. Это все, что вы когда-либо получите с вашим менталитетом, если вообще.
Инго

1
Некоторые нишевые языки могут сделать вас более продуктивными, что позволит вам зарабатывать больше денег, чем основные языки.
Джорджио

Ответы:


25

Гипотеза Сапир-Уорф . Более или менее говорится, что то, о чем вы можете думать, ограничено тем, что у вас есть язык для описания. Следствием этого является то, что люди, говорящие на разных языках, могут мыслить так, как не могут говорить носители одного языка.

Многие люди (включая меня) считают, что это относится и к программированию. Изучение Lisp, например, научит вас совершенно новому взгляду на проблемы, которые вы можете применить к C #, Java или Python. Чем больше языковых парадигм вы выучите, тем больше инструментов будет в вашем наборе мыслей, независимо от того, какой язык вы на самом деле используете.


1
В точку. Например, я нахожу, что в некоторых ситуациях чисто функционального языка просто недостаточно. Тем не менее, я постоянно нахожу себя в функциональных концепциях на языках, которые поддерживают функциональное программирование (например, javascript, c ++ 0x и т. Д.).
Cam

4
Меня удивляет, что люди продолжают использовать гипотезу Сапир-Уорф (в основном, хотя и не полностью дискредитированную в лингвистике) в качестве аналогии. Я определенно согласен с мнением относительно программирования, но я думаю, что лучше найти другую аналогию, если мы хотим, чтобы люди воспринимали нас всерьез.
Джонатан Стерлинг

1
Я не верю в гипотезу, иначе мы бы никогда не вышли за пределы ворчания. Точно так же для программирования не думайте, что люди ограничены языком.
Джон Смит

24

Я бы выучил любой язык, который знакомит меня с понятиями и парадигмами, которых я никогда раньше не видел. Вот почему я изучил haskell и схему - они познакомили меня с функциональным программированием и в основном функциональным программированием соответственно. Меня бы не волновало, широко ли использовались схема и haskell, кроме того, как это повлияло бы на доступную документацию и ресурсы.

В общем, если маленький нишевый язык знакомит вас с новыми концепциями и парадигмами (особенно теми, которые вы можете применять к другим языкам), то учитесь на расстоянии!

Другие причины, по которым вы можете изучать «маленький / нишевый» язык:

  • Язык позволяет вам решать определенную (тип) проблему «лучше» (быстрее, с лучшим решением, более мобильно и т. Д.), Чем любой другой язык

  • Язык позволяет вам решать проблемы так же, как и популярный язык, но у него есть некоторые интересные функции, которые вам нравятся (например, clojure)

  • Вы хотите помочь развить язык

7

Ну, я использую Clojure (один из «нишевых языков», о котором вы упомянули) и обнаружил, что это был очень полезный опыт.

  • Это сделало меня намного более продуктивным (по сравнению с Java и C #, которые я в основном использовал ранее). Поскольку я занимаюсь собственным бизнесом, производительность равняется деньгам :-), поэтому в этом смысле Clojure уже преуспел, по крайней мере, с моей точки зрения.
  • Я изучил новые методы, которые сделали меня лучшим разработчиком (особенно в отношении параллелизма, функционального программирования, абстракции, метапрограммирования и т. Д.). Даже если бы я вернулся к написанию Java, я все равно мог бы эффективно использовать эти знания
  • Было действительно приятно изучать новый язык, сильно отличающийся от всего, что я делал раньше. Если вам действительно нравится то, что вы делаете, это само по себе стоит.
  • Поскольку это язык JVM, не имеет значения, является ли набор библиотек относительно небольшим, потому что вы все еще получаете доступ ко всему набору библиотек в экосистеме Java / JVM. Это большое преимущество для языков, работающих на JVM (то же самое относится и к Scala)

Лично я бы уделил ограниченное внимание вещам, таким как TIOBE - они на самом деле не говорят вам ничего, кроме того, что было популярно в прошлом. Возможно, это полезно, если вы хотите работать со старыми системами, в меньшей степени, если вы хотите учиться и расширять свой кругозор.


4

Причиной изучения нишевого языка редко является ожидание, что вы будете использовать его напрямую (за деньги или иным образом). Обычно это изучение какого-то нового аспекта или стиля программирования. Это, вероятно, сделает вас лучшим (и, возможно, более ценным) программистом, даже если вы никогда не используете этот язык для создания «производственного» кода.


4

Выступая в качестве профессионального разработчика на нишевом языке , можно зарабатывать на жизнь. Хотя есть и плюсы и минусы.

Вещи, которые сложнее:

  • Поиск работы занимает больше времени
  • Работа, скорее всего, потребует от вас переезда
  • Вы получите мало уважения от основных программистов (и, следовательно, больше сопротивления).

Вещи, которые проще:

  • Небольшой пул программистов облегчает борьбу за рабочие места
  • Вы можете знать каждого важного программиста в своей области
  • Развивать репутацию легче, чем в мейнстриме

Вещи, которые просто являются :

  • Оплата, как правило, более изменчива, так как существует несколько стандартов
  • Много времени тратится на обучение других о сильных и слабых сторонах вашей ниши.

В целом, если карьера - ваша забота, вы никогда не должны быть пони, фокус или ниша с одним фокусом.


2

В настоящее время я изучаю Ruby, используя его для решения задач Project Euler , просто потому, что большую часть своего дня я провожу за программированием на C или PHP (а иногда и на C #) и хочу расширить свой кругозор. Пока это действительно открыло мне глаза на то, что можно сделать. Даже если я никогда не использую ее для какой-либо «настоящей» работы, я считаю, что время, потраченное на ее изучение, будет иметь смысл


+1 за проект эйлер. Я делал то же самое, пока

1

Согласитесь со всеми упомянутыми пунктами. Другой мотивацией для изучения нишевого языка является возможность того, что язык когда-нибудь станет очень популярным. В этой ситуации ваши ранние инвестиции в язык могут привести вас к работе над влиятельными структурами и элементами языка, которые могут быть востребованы в будущем.

Если язык действительно станет популярным, вы уже будете в нем владеть, и, следовательно, вы будете пользоваться высоким спросом.

Низкая вероятность, потенциально высокая награда.


2
Лично я всегда буду стараться изучать понятия, а не языки ... ограниченное пространство мозга, если вы понимаете, о чем я.
ChaosPandion

1

Как уже говорили другие, изучение нишевого языка только потому, что это нишевой язык, не имеет особого смысла. Тем не менее, часто нишевые языки исследуют концепцию дальше / более глубоко, чем обычные языки могут себе позволить или хотят.

И иногда нишевые языки встречаются намного дольше, чем любой из основных языков - Smalltalk, Prolog и Lisp. Они могут быть не популярны, но они не исчезают.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.