(Почему) я должен выучить новый язык программирования? [закрыто]

97

Я достаточно хорошо знаю Java, C / C ++, JavaScript / jQuery и неплохо разбираюсь в Objective-C. Я довольно продуктивно работаю с языками и соответствующими им средами и действительно с достаточной легкостью создаю системы уровня предприятия (а также мелкомасштабные системы), сохраняя код «чистым» и обслуживаемым (да, я могу читать свой собственный код после шести месяцы :)

Если это не предписано платформой (iPhone, iPad и т. Д.) Или клиентом / организацией-исполнителем, просто «почему» я должен изучать новый язык программирования? Просто для "веселья"? И что делать с этим развлечением, если я не собираюсь делать с ним что-нибудь стоящее?

Многие из моих коллег готовы погрузиться в изучение «следующей новой вещи / языка», и обычно это Python, Ruby или PHP (просто называя несколько популярных). Теперь просто знать язык само по себе бесполезно ИМХО. Вам также необходимо знать фреймворки, изучить их использование / API, а также «хорошие практики реализации» и т. Д.

Итак, с экономической точки зрения, есть ли польза в изучении нового языка программирования? Если язык выучен быстрым и грязным способом, он, вероятно, также будет использоваться для быстрого и грязного прототипирования / реализации - но я не считаю, что это оправданное вложение времени / усилий.

Итак, ПОЧЕМУ я (или кто-либо в этом отношении) должен изучать новый язык программирования, отличный от «это весело, так что давайте попробуем» - если затраты времени не окупятся в долгосрочной перспективе?

кандидат наук
источник
6
programmers.stackexchange.com/questions/118338/… Возможно, вас заинтересует ответ, который я дал здесь.
Deadalnix
3
Если вы видите новый язык с новыми концепциями и не хотите понимать их, многие места не будут вас нанимать (на самом деле, многие вопросы для интервью задаются специально для определения таких вещей)
Bill K
3
Я спрошу, почему я не должен изучать новый язык?
Пользователь
2
@ZacharyK, даже если работа была для разработчика Java, и кандидат был супермен на Java. Звучит так, будто ты можешь выстрелить себе в ногу.
НимЧимпский
2
Есть много ребят из Super Java. Меня интересует то, что вы узнаете через 6 месяцев, и то, что вы знаете сейчас. (Конечно, я, кажется, все свое время провожу на Erlang, CoffeeScript и PHP)
Захари К

Ответы:

178

От прагматичного программиста , Совет № 8 «Регулярно инвестируйте в свой портфель знаний»:

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

Речь не о следующей «новой вещи». Речь идет о мышлении по-разному за пределами ваших нормальных моделей мышления.

Есть поговорка: «Когда ты молоток, все выглядит как гвоздь». Может быть, есть лучший способ решить проблему, используя другие технологии. Если вы не исследуете, вы можете не знать, что это было доступно.

jmq
источник
Отличный момент. Именно из-за этого размышления я попробовал RavenDB в проекте, и я многому научился после многих лет застоя в колее SQL Server.
Боб Хорн
52
Я думал, что когда все, что у тебя есть, это молоток, все выглядит как твой большой палец
Захари К
2
Я полностью согласен. Я также добавил бы, что изучение другого языка поможет вам лучше понять аспекты языков, которые вы ранее думали, что знали. Это также помогает определить, что такое «реальные» фундаментальные концепции / шаблоны / ограничения программирования, а какие - просто артефакты вашего конкретного набора инструментов. Например, если все языки, которые вы знаете, слабо типизированы, вы никогда не узнаете, что существует строгая типизация, и никогда не задумаетесь, почему! Следовательно, ваши продукты могут пострадать в производительности или безопасности, даже если они могут превосходить время выхода на рынок ;-).
JJC
3
Прагматичный программист - одна из лучших книг по программированию, которые я когда-либо читал. Действительно хорошо!
Soner Gönül
Я действительно согласен с тем, что «речь идет о том, чтобы думать по-другому за пределами ваших обычных моделей мышления» Когда я выучил Python, я получил новый мир мышления.
Ю Мацуо
80

Почему люди поднимаются на гору Эверест? Или пробежать 100 миль за 24 часа ? Почему мы предпринимаем какие-либо проблемы? Потому что это там. Я не вижу ничего плохого в "Ars gratia artis". Наступает момент, когда обучение ради обучения становится его собственной наградой. Но если вы хотите более веские причины для изучения нового языка, вот некоторые из них:

Новые способы решения проблем Изучение нового языка, действительно требующее времени для погружения, дает вам возможность снова программировать как новичок. Эта новая перспектива может научить вас техникам, которые могут перенести на старый язык. Подумайте о влиянии, которое Ruby on Rails оказал на ASP.NET MVC, или о том, как Java Hibernate был перенесен на C # (наряду с множеством других сред, влияющих на разработку .NET). Знакомство с разными языками может научить вас новым способам решения проблем.

Правильный инструмент для правильной работы Все языки, которые вы упомянули, являются OO / Процедурными гибридами (или чисто процедурными в случае C). Попробуйте свои силы на функциональном языке или двух. Попробуйте внедрить факториал в Erlang, используя рекурсию, и наблюдайте, как ваша челюсть падает на пол, когда 20000! возвращает через 5 секунд (без переполнения стека на сайте). Затем посмотрите на возможности масштабирования вашего приложения, чтобы анализировать числа и анализировать протоколы с меньшим количеством кода и за меньшее время, чем требуется для получения двух экземпляров JVM, взаимодействующих через RMI или SOAP. Изучение других языков / структур, нацеленных на решение конкретных проблем, даст вам больше инструментов.

Знакомьтесь с новыми людьми / расширяйте свою сеть. Дайвинг на новом языке открывает для вас новое сообщество. Знакомство с новыми людьми - это хорошо для вашей карьеры и лично.

Новые возможности Знание нового языка может только увеличить ваши шансы получить эту работу с этим горячим стартапом. «Чувак, эта работа была бы идеальной, если бы я знал Руби». Кроме того, вам может понравиться язык настолько, что вы решите сменить путь.

Сохраняйте свежесть Работа с тем же самым изо дня в день становится утомительной. Использование другого языка может дать вам отдохнуть от ежедневной рутины и позволить вам прийти на следующий день освеженным.

Потому что это там Изучайте новый язык, потому что вы хотите.

Майкл Браун
источник
3
+1 Javascript может быть функциональным, но, безусловно, похоже, что в OP, возможно, не хватает нескольких парадигм из их набора инструментов. И больше опыта работы с функциональными языками даст более глубокое понимание их существующих языков, например, с шаблонами C ++
jk.
+1 За то, чтобы держать его свежим, это действительно хорошо работать над чем-то другим
Мона
Я хотел бы отметить, что оптимизация хвостового вызова не имеет никакого отношения к тому, является ли язык (чисто) функциональным или нет, императивные языки, скомпилированные для работы в 64-битной среде .NET, получают оптимизацию хвостового вызова, например, бесплатно ,
Blindy
1
LOL, да, это не то, что делает Erlang чисто функциональным языком, но это полное изменение в перспективе. В императивных языках нам рекомендуется избегать рекурсии для всех, кроме самых тривиальных случаев, а рекурсия функциональных языков - это образ жизни. Сопоставление с образцом в отличие от if / else или switch / case тоже довольно круто.
Майкл Браун
2
Попробуйте внедрить факториал в Erlang, используя рекурсию, и наблюдайте, как ваша челюсть падает на пол, когда 20000! возвращает через 5 секунд (без переполнения стека на сайте). Это один из самых сильных аргументов в пользу изучения функционального языка, который я когда-либо видел. Никогда не думал, что это может быть так эффективно.
Олег Еремеев
37

Мы думаем словами. Язык, который мы используем, влияет на то, как мы это делаем. Есть интересный случай с языком пираха - люди, говорящие на этом языке, не могут воспринимать их как нечто «простое» или «интуитивно понятное» как числа, потому что в языке, на котором они воспитывались, нет слов для «определенных величин» (даже «один»). " и много").

С языками программирования тоже самое. Новый язык программирования может «открыть» ваш разум некоторым аспектам программирования.

Учитывая ваш текущий опыт программирования, я рекомендую вам изучить некоторый функциональный язык, например, Erlang или Scala. Наконец, Clojure тоже очень солидный язык.

Если вы хотите сначала почувствовать себя как дома, попробуйте мощный язык сценариев, такой как Python или Ruby.

оборота эгарсия
источник
22
+1. «Язык, который не влияет на то, как вы думаете о программировании, не стоит знать». - Алан Перлис
Руах
2
Я отвергаю предпосылку «мы думаем словами», поскольку она отрицает возможность того, что кто-то (или что-либо) без слов может думать. Но слова являются чрезвычайно полезными для маркировки понятий (и так помогает различать их). Мы в основном делаем наше высшее мышление словами (с большой вовлеченностью), потому что это эффективно. Что является более двусмысленным утверждением, но я думаю, что ближе к истине. Как ни странно, я не могу отказаться от использования слов без использования слов ...
Донал Феллоуз
@DonalFellows: я думаю, что у нас есть некоторые «умственные процессы», которые не выражаются словами. Но я называю это не «мыслями», а «чувствами», «рефлексами», «интуицией» и т. Д. Я думаю, что правильная мысль должна быть выражена в терминах какого-то языка. Так что для меня то, что не имеет языка, может жить, обрабатывать, реагировать, чувствовать ... но не думать. Но это убеждение, основанное на интуиции, а не какие-либо реальные доказательства. А также немного не по теме, правда :)
egarcia
Абсолютно согласен, изучение языков только потому, что они являются новым классным языком программирования, не имеет смысла. Вы должны придерживаться очень разных, и стараться не покрывать слишком много из них. Быть хорошим в чем-то может занять значительное количество времени (вероятно, 10+ лет), не имеет значения, играет ли он на музыкальном инструменте, готовит или программирует.
Мистер Смит
2
@evilcandybag: На самом деле я могу продемонстрировать источник: sciencemag.org/content/306/5695/496 , sciencemag.org/content/suppl/2004/10/15/1094492.DC1/… (PDF).
Руах
26

Мало того, что вы хотите изучать новые языки, вы хотите изучать языки, отличающиеся от тех, которые вы уже знаете. Если вы знаете, что изучение Java на C # не вызовет у вас особых затруднений, они довольно похожи. В идеале вы должны выбрать язык, который сильно отличается от того, что вы знаете. Если вы знаете Java, JavaScript и Objective-C, вы хотите что-то совсем другое

Такие как:

Ruby забавный слабо типизированный OO Language

Пролог Язык логического программирования очень отличается

Erlang Concurrency и Fault Tolerance сделаны очень хорошо

Схема иди читай SICP и достигни просветления

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

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

Zachary K
источник
2
+1! Упражнение, которое я сейчас выполняю, состоит в том, чтобы реализовать один и тот же алгоритм (сортировку слиянием) на разных языках: это действительно дает мне ощущение того, сколько существует способов выразить одно и то же вычисление. У меня уже есть версии C, C ++, Pascal, Java, Scala и Haskell. Python, Ruby, Modula2, Scheme уже в пути. Я считаю, что вы можете многому научиться, глядя на разные языки программирования! И делая одну вещь на одном языке, я могу получить много идей о том, как ее лучше реализовать на другом языке.
Джорджио
3
Мне нравится это, за исключением того, как вы описываете Haskell. Вы все еще можете написать неправильный код, который компилируется. (Корректность типа не является единственным требованием для общей корректности.) Причиной изучения Хаскелла является то, что он очень близок к математике и имеет ленивую модель оценки; это должно поколебать представления большинства программистов о том, что такое программирование.
Donal Fellows
Я думаю, что следует дать Прологу попытку. Когда я впервые узнал об этом, я был поражен. Как вы можете делать вещи, только написав несколько символов.
Пользователь
3
@DonalFellows по моему опыту, если вы правильно понимаете типы в Haskell, остальная часть программы имеет тенденцию писать сама.
Tobyodavies
1
"Ruby - забавный слабо типизированный OO Language": действительно ли Ruby слабо типизирован или скорее динамически типизирован?
Джорджио
15

Ваш вопрос настолько серьезен, что мне приходится задавать следующий вопрос:

Если вы программист по профессии, почему в мире вы не хотите узнать что-то новое, чтобы добавить к своему профессиональному опыту?

Ваш вопрос звучит для меня очень похоже на отношение ученика, которого я когда-то имел. За год или два до 2000 года я преподавал урок Кобол (по выбору) по просьбе директора службы карьерного роста в университете, где я преподавал в то время. У него было так много компаний, которые подходили к нему с возможностями трудоустройства для программистов на Cobol, что он думал, что мы окажем плохую услугу нашим студентам, не дав им возможность выучить навык и дополнить его набор навыков.

У меня был студент, который взял урок в качестве последнего факультативного урока . В то время он также работал программистом на Си. Он взял класс Кобола, потому что у него не было другого выбора, и он хотел получить степень. Поэтому он пришел в класс с чипом на плече.

Я уже знаю C, и я использую его профессионально, поэтому я не знаю, почему в мире кто-то хотел бы или даже должен изучать Cobol.

Поэтому я поставил перед ним задачу написать программу для чтения данных из файла, который имел определенный формат для каждой записи ввода (т. Е. Сколько символов каждое поле заняло в строке, какое поле было первым, вторым, третьим и т. Д. .)

Он должен был написать свою программу на C, что он и сделал, и он показал свою программу мне. В то же время я показал ему свою версию программы на Cobol.

Затем я бросил ему кривой мяч:

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

Он взял день, чтобы сделать новую версию программы, которая работала с новым форматом данных. Это включало изменение как минимум 20 или 30 строк кода, а также изменение нескольких функций и модулей.

Затем я показал ему изменения, которые мне нужно было внести в мою программу Cobol. Я изменил условие изображения, чтобы отразить новый формат данных.

Я не уверен, что он полностью понял урок этого упражнения, но он по крайней мере прекратил жаловаться до конца семестра.

Итак - в ответ на ваш вопрос: вы должны изучать новые языки, потому что вы хотите учиться. И если ты не хочешь учиться - больше сил для тебя ... (Я просто не уверен, что нанял бы тебя с таким отношением)

Зик Ханселл
источник
6
Хотя ваши намерения были хорошими, если бы я был этим студентом, я бы просто подумал, что единственная причина, по которой ваше приложение было легко изменено, заключается в том, что вы знали о возможных изменениях требований. Если бы программа была написана на C с теми же знаниями, то и там нужно было бы внести минимальные изменения.
hspain
У меня был коллега с похожим отношением: «C и PHP зарабатывают мне деньги. Почему я должен тратить свое время на изучение другого языка?» Он там больше не работает.
Greyfade
3
все требования меняются рано или поздно! Это своего рода точка.
Захари К
@hspain - на самом деле из-за того, что весь смысл упражнения в том, что Cobol рассматривает спецификации ввода-вывода как часть программы первого порядка, а не что-то, что происходит в порядке, основанном на том, как вы написали и упорядочили свой Операторы ввода / вывода в C. И, повторяя комментарий Захария К, факт в том, что требования меняются. - Да, вы могли бы структурировать программу на C таким образом, чтобы она была менее хрупкой, когда меняются такие вещи, как требования к вводу / выводу, но для этого нужно думать о программе совершенно иначе, чем вы обычно делаете при написании C-программы.
Зик Ханселл
Я не знал, что на самом деле о коболе. Когда-нибудь мне, возможно, придется пойти посмотреть
Захари К
12

Существует несколько причин, по которым изучение нового языка может стоить затрат времени:

  1. Увеличьте размер своего инструментария - изучение нового языка может предоставить дополнительные пути решения технических проблем. Возможность новых инструментов может обеспечить лучший выбор языка / платформы для решения определенных проблем, чем инструменты / языки, которые были известны ранее. В качестве упрощенного примера можно привести программиста, который знает только C. Изучение языка сценариев открывает ему другие возможности - с точки зрения развертывания, настройки среды и т. Д.
  2. Получите доступ к новой платформе - отличным примером может быть Цель C - если кто-то хочет разрабатывать для iOS, изучение этого языка почти обязательно.
  3. Изучайте новые парадигмы - некоторые языки могут иметь лучший доступ к новым парадигмам. Используя C в качестве примера, может быть трудно разрабатывать веб-сервисы в стандарте ANSI C. Однако изучение разработки на .NET, Java, PHP или других новых языках может ускорить разработку веб-сервисов.

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

JW8
источник
11

Одним словом: товарность .

Вы открываете свои перспективы трудоустройства, когда можете показать, что у вас есть способность адаптироваться и изучать новые вещи. Конечно, вы могли бы продолжать писать приложения, используя тот язык, на котором вы действительно хорошо владеете языком, но что произойдет, когда вы узнаете, что ваш любимый язык становится неактуальным для отрасли, в которой вы работаете. Я действительно помню время, когда мы использовали чтобы писать наши собственные веб-сервисы с нуля на C или C ++, в настоящее время мы используем инструменты, которые делают все основные «веб-возможности» для нас (Think Rails и т. д.).

Дело в том, что вы в конечном итоге похожи на тех актеров, которые снимают сериалы, а потом не могут легко перейти к чему-либо еще, потому что они навсегда рассматриваются как их оригинальный персонаж. «Кто на земле хочет, чтобы капитан Кирк был Индианой Джонс? !!». То же самое с программистами, которые когда-либо использовали только один продукт. Конечно, вы будете знать это, как никто другой, но это не поможет вам, когда с вами обращаются так, как будто вас посадили в Фортран, который не может перейти к работе с C #.

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

Конечно, есть много других причин для изучения нового языка, иногда даже просто из-за этого. Это открывает ваш разум для других возможностей, поэтому, когда ваш начальник подходит к вам и говорит: «Можем ли мы что-то сделать», вы можете сказать «Да» с помощью выбора доступных вам инструментов.

S.Robins
источник
8

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

Большинство из перечисленных вами языков (Java / C / C ++ / Javascript / Objective-C) являются традиционными OO / императивом. Изучение еще одного OO / императивного языка, вероятно, не научит вас больше этому типу программирования. Если у вас нет особого интереса, нет смысла изучать вкус месяца по спецификации.

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

Лучшая причина выучить новый язык - выучить навыки общего применения. Для этого я бы рекомендовал глубоко погрузиться в функциональный язык (Haskell или один из Lisps), с одной стороны, и ассемблерный код и системную архитектуру (x86 или ARM) - с другой.

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

comingstorm
источник
6

Каждый из нас решает, над чем мы хотим работать, так что ...

  1. Вы изучаете это, потому что хотите
  2. вы изучаете это, потому что вам это нужно для работы, которую вы хотите

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

Многие люди смотрят на рынке труда, чтобы увидеть, где области горячих областей и прыгать на этих технологиях. Многие люди изучают один язык и придерживаются его, и спустя 20 лет они становятся старыми инженерами по обслуживанию. И тогда у вас есть много людей, которые находятся где-то между этими двумя крайностями.

В конце концов, все зависит от того, где вы хотите быть.

ДХМ
источник
В вашем описании это звучит слишком чёрно-белым. ИМХО - «технологические бункеры» и устаревшие инженеры по обслуживанию, и большинство из нас находится где-то посередине. Кроме того, некоторые «технологические воронки» слишком без ума от последних блестящих вещей, чтобы на самом деле научиться любой технологии должным образом (что займет больше времени, чем то, что они готовы инвестировать в какую-либо одну технологию), поэтому они могут никогда не производить надежные, долгосрочные решения. к проблемам.
Петер Тёрёк
1
@ PéterTörök: отредактировал мой ответ. Я указывал на шкалу, но был слишком ленив, чтобы все объяснить. Вы правы, это непрерывный спектр.
ДХМ
5

Лучший аргумент, который я знаю, заключается в том, что он расширяет ваши взгляды на то, сколько разных способов можно решить, или можно выразить некоторую логику. Знание Java и C ++ дает вам хорошее представление о нативной и виртуальной сферах, но есть гораздо больше «степеней свободы» для изучения.

У меня около 15 лет опыта в C ++, 5 в Java. Есть много языков, которые я выучил и оставил позади (PHP, Pascal, ассемблер для множества различных процессоров, среди прочих) и могу с уверенностью сказать, что даже те, которые я больше не использую, оставили значительный след в том, как я думаю о проблеме , Кроме того: даже если вы хотите придерживаться, скажем, Java, для данного проекта, вы должны будете знать альтернативу, чтобы представлять хорошие контраргументы его сторонникам.

Тем не менее, я изучил Python только в этом году, и был восхищен тем, как элегантно можно сделать некоторые вещи. Настолько, что я решил преобразовать несколько написанных мной сервлетов REST из Java в Python. Преимущества в поддержке кода были весьма значительными. Конечно, это оставило след и в моем способе ведения дел, не только потому, что теперь я выберу Python для некоторых задач, но также и потому, что я могу принять аналогичные принципы проектирования при кодировании на C ++ и Java.

Тем не менее, я не думаю, что вы должны учить много разных языков все время, просто ради этого. Это требует значительных временных затрат, и «приспособления», которые вы должны будете придумать, чтобы они сосуществовали с другими, которых вы уже знаете, также требуют времени и усилий. Я решаю изучать язык только тогда, когда он достаточно зрелый, имеет хорошую базу разработчиков и предлагает результаты, значительно отличающиеся от тех, которые я знаю или планирую изучать. Например, когда я решил изучать Python, я также рассмотрел Ruby и Perl, а потом отказался от них - по крайней мере, на ближайшее время.

Фабио Секонелло
источник
5

Люди учат новые языки, чтобы ...

  • расширить свои знания. Если вы знаете больше, вы чувствуете себя лучше и чувствуете себя увереннее.
    Уверенность = потрясающий код!
  • иметь больше инструментов. Допустим, вам нужно сделать приложение. Если вы знаете только Java, вы собираетесь сделать программу на Java. Но если вы знаете Java, Python, Scheme и Lisp, скорее всего, вы выберете лучший инструмент для этой работы.
  • получить работу. Смирись с этим. Если вы знаете больше языков, у вас больше возможностей для работы. Это довольно очевидно.
  • стать лучшим всесторонним программистом. Если вы знаете синтаксис Perl, вы знаете, что он может немного сойти с ума. При написании длинных программ на Perl, вы в основном вынуждены следовать лучшим практикам, или вы не будете счастливым туристом. Поскольку вы знакомы с лучшими практиками Perl, это может помочь вам лучше написать PHP-код (так или иначе).

Итак, как вы можете видеть, есть много причин для изучения нового языка. Мой вам совет (и моя единственная оригинальная цитата, которую я считаю хорошей):

Часто пишите код; Пишите код хорошо; Написать код на Scheme, PHP, Java, Python, Lisp, Perl, C, C ++, C #, Visual Basic, Ruby ...

динамический
источник
1
@Nupul: Или, по крайней мере, я думаю, что цитата идет так ...
Динамичный
5

Я согласен с большинством ответов, опубликованных уже. Чтобы добавить их, ознакомьтесь со статистикой, полученной в ходе опроса пользователей 2011 года о переполнении стека. Была очень высокая корреляция между количеством известных языков и заработанными деньгами. Они не могут быть напрямую связаны друг с другом, но об этом стоит подумать.

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

http://blog.stackoverflow.com/2012/02/survey-results/

hspain
источник
4

Альфред Норт Уайтхед написал большое эссе под названием « Важность хорошей нотации »

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

Язык программирования является формой обозначений. Я могу код OO в C; Фактически именно так Страуструп начал с C ++ - как серия макросов прекомпилятора Си. Однако гораздо проще и быстрее написать OO-код на Java, C ++ или C #, потому что у них есть языковые примитивы, которые легче поддерживают OO.

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

Онорио Катеначчи
источник
2

Большинство или все ответы выше относятся к профессии. Программирование. Я хочу напомнить, что прежде чем мы станем программистами - мы люди.

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

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

Многие концепции в программировании исходят непосредственно из повседневной жизни: простота, ремонтопригодность, практичность, полезность, быстрая и иногда медленная модульность и т. Д .; все понятия, которые используются, например, плотником.

Хотите верьте, хотите нет: лично я многое узнал о концепциях программирования, взяв долгий отпуск на сбор апельсинов. Основная концепция, которую я извлек из этого, была - простота. Работая строителем, я усвоил другую концепцию: постройте основание как можно лучше - если вы хотите, чтобы стены стояли прямо.

Наконец, ответ на ваш вопрос может быть следующим: взять отпуск, присоединиться к классу тхэквондо или позаботиться о саде - тогда ваш вопрос может вас больше не беспокоить.

Shian
источник
Хотя я мог бы согласиться с вами, я бы добавил, что после того, как у меня появятся все эти хорошие идеи о программировании во время выполнения других заданий, я хотел бы выучить язык программирования, на котором эти идеи реализуются. Таким образом, IMO эти два аспекта (отдых от программирования и изучение новых языков программирования) не исключают (не должны исключать) друг друга.
Джорджио
Это правда, что перерыв в программировании и изучение новых языков программирования не исключают (не должны исключать) друг друга. Тем не менее, в очень быстром мире, в котором мы живем, важно помнить, что отдых - может быть более продуктивным, чем движение. Это может быть перерыв на кофе или даже 1 год.
Шян
-2

Ценность изучения нового языка программирования примерно равна количеству языков программирования, которые вы уже знаете.

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

Дэвид Кендал
источник
-3

Поскольку большинство из них уже написано, у меня есть хорошие рабочие знания по C. Недавно я работал над некоторой проблемой, для которой мне нужно было перепроверить результаты; это было математически. Так что самый быстрый способ получить ответ дал мне толчок, чтобы проверить более быстрый язык программирования для изучения.

И я обнаружил, что bc , язык калькулятора произвольной точности, утилита, почти доступная на любой платформе Unix.

Я не думал о Python, Perl или о чем-то еще, но обнаружил, что это решило мои проблемы в одно мгновение. Я проверил это на факториале (20000), который предложил один из друзей, и он дал результаты мгновенно и без сбоев.

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

Определенно, если я напишу это в своем резюме, думаю, это никого не волнует, но, с моей точки зрения, это решает мою проблему, прежде чем я нападаю на него на своем любимом языке, 'C'.

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

царь х
источник
-8

Любой может создать новый язык; но никто, похоже, не понимает, что «лучше» редко означает «настолько лучше, что стоимость усыновления действительно оправдана». Конечным результатом являются сотни разных языков, где никто не может понять весь исходный код, и где программистам приходится тратить около четверти своего времени на непродуктивную работу из-за различий в языке / структуре / библиотеке.

В идеальном мире был бы один язык программирования низкого уровня (например, C), один «безопасный» язык программирования высокого уровня (например, Java) и один язык сценариев. Также будет большой кувалдой для разрушения «Вавилонской башни языков программирования», созданной людьми, которые не понимают достоинств стандартизации и стоимости «оттока» и постоянной переподготовки в ИТ-индустрии в целом.

В «макроэкономическом» смысле нет ничего плохого в том, чтобы изучать новый язык программирования в качестве хобби, но использование этого нового языка программирования для чего-либо делает вас частью проблемы.

Brendan
источник
4
Звучит как довольно непрактичный идеал. Кто выберет эти стандартные языки и как вы решите, на какой новый язык стоит перейти? Как насчет риска застрять в дерьмовом языке только потому, что никто не хочет пробовать что-то новое? Представьте, если бы мы сделали это 10 лет назад - каждый может использовать C ++ и Java (или, может быть, VB)!
Восстановить Монику
3
Ваше представление об «идеальном мире» звучит подозрительно, как у « Девятнадцати восьмидесяти четырех» . В вашем Newspeak о революционных идеях, таких как «функциональное программирование» и «вывод типа», «первоклассный полиморфизм» и «мультиметоды», даже думать не могли, потому что не было бы способа выразить их. По общему признанию, Оруэлл, кажется, не думал о вашей идее кувалды, но если бы он имел, я уверен, что она нашла бы свой путь.
ruakh
2
В дополнение к пунктам выше, очень мало вашего «ответа» имеет отношение к актуальному вопросу. Downvote.
user16764
3
В идеальном мире был бы только один ответ на вопрос Нупала. Наличие всех этих дополнительных ответов после первого от людей, которые не понимают достоинств стандартизации, просто вызывает путаницу. Нет ничего плохого в том, что вы не согласны с ответом в своем собственном уме, но публикация дополнительного ответа делает вас частью проблемы.
Бензадо
1
Ограничение этими языками не помешает ни одной из упомянутых вами проблем. Мне приходилось переписывать приложение гораздо чаще из-за смены фреймворков, чем из-за смены языков
Фабио Секонелло