Чи варто мені турбуватися про вивчення малих або нішевих мов? [зачинено]


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 для еулера проекту. Я робив те саме, коли вивчав python

1

Погодьтесь із усіма згаданими моментами. Ще одна мотивація до вивчення нішевої мови - це можливість того, що мова одного разу стане дуже популярною. У цій ситуації ваше раннє інвестування мови могло б призвести до роботи над впливовими структурами та елементами мови, які можуть бути затребувані в майбутньому.

Якщо мова стане популярною, ви вже будете володіти нею, і тому ви будете користуватися великим попитом.

Низька ймовірність, потенційно висока нагорода.


2
Особисто я завжди намагатимусь вивчати поняття, а не мови ... обмежений простір у мозку, якщо ви знаєте, що я маю на увазі.
ChaosPandion

1

Як вже майже говорили інші, вивчення нішевої мови лише тому, що це нішова мова не має особливого сенсу. Однак часто ніші мови вивчають поняття далі / глибше, ніж мовні мови можуть дозволити собі або хочуть.

І іноді нішеві мови існують далеко, набагато довше, ніж будь-які основні мови - Smalltalk, Prolog та Lisp мови скачуть на думку. Вони можуть бути не популярними, але вони також не зникають.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.