Я достаточно хорошо знаю Java, C / C ++, JavaScript / jQuery и неплохо разбираюсь в Objective-C. Я довольно продуктивно работаю с языками и соответствующими им средами и действительно с достаточной легкостью создаю системы уровня предприятия (а также мелкомасштабные системы), сохраняя код «чистым» и обслуживаемым (да, я могу читать свой собственный код после шести месяцы :)
Если это не предписано платформой (iPhone, iPad и т. Д.) Или клиентом / организацией-исполнителем, просто «почему» я должен изучать новый язык программирования? Просто для "веселья"? И что делать с этим развлечением, если я не собираюсь делать с ним что-нибудь стоящее?
Многие из моих коллег готовы погрузиться в изучение «следующей новой вещи / языка», и обычно это Python, Ruby или PHP (просто называя несколько популярных). Теперь просто знать язык само по себе бесполезно ИМХО. Вам также необходимо знать фреймворки, изучить их использование / API, а также «хорошие практики реализации» и т. Д.
Итак, с экономической точки зрения, есть ли польза в изучении нового языка программирования? Если язык выучен быстрым и грязным способом, он, вероятно, также будет использоваться для быстрого и грязного прототипирования / реализации - но я не считаю, что это оправданное вложение времени / усилий.
Итак, ПОЧЕМУ я (или кто-либо в этом отношении) должен изучать новый язык программирования, отличный от «это весело, так что давайте попробуем» - если затраты времени не окупятся в долгосрочной перспективе?
источник
Ответы:
От прагматичного программиста , Совет № 8 «Регулярно инвестируйте в свой портфель знаний»:
Речь не о следующей «новой вещи». Речь идет о мышлении по-разному за пределами ваших нормальных моделей мышления.
Есть поговорка: «Когда ты молоток, все выглядит как гвоздь». Может быть, есть лучший способ решить проблему, используя другие технологии. Если вы не исследуете, вы можете не знать, что это было доступно.
источник
Почему люди поднимаются на гору Эверест? Или пробежать 100 миль за 24 часа ? Почему мы предпринимаем какие-либо проблемы? Потому что это там. Я не вижу ничего плохого в "Ars gratia artis". Наступает момент, когда обучение ради обучения становится его собственной наградой. Но если вы хотите более веские причины для изучения нового языка, вот некоторые из них:
Новые способы решения проблем Изучение нового языка, действительно требующее времени для погружения, дает вам возможность снова программировать как новичок. Эта новая перспектива может научить вас техникам, которые могут перенести на старый язык. Подумайте о влиянии, которое Ruby on Rails оказал на ASP.NET MVC, или о том, как Java Hibernate был перенесен на C # (наряду с множеством других сред, влияющих на разработку .NET). Знакомство с разными языками может научить вас новым способам решения проблем.
Правильный инструмент для правильной работы Все языки, которые вы упомянули, являются OO / Процедурными гибридами (или чисто процедурными в случае C). Попробуйте свои силы на функциональном языке или двух. Попробуйте внедрить факториал в Erlang, используя рекурсию, и наблюдайте, как ваша челюсть падает на пол, когда 20000! возвращает через 5 секунд (без переполнения стека на сайте). Затем посмотрите на возможности масштабирования вашего приложения, чтобы анализировать числа и анализировать протоколы с меньшим количеством кода и за меньшее время, чем требуется для получения двух экземпляров JVM, взаимодействующих через RMI или SOAP. Изучение других языков / структур, нацеленных на решение конкретных проблем, даст вам больше инструментов.
Знакомьтесь с новыми людьми / расширяйте свою сеть. Дайвинг на новом языке открывает для вас новое сообщество. Знакомство с новыми людьми - это хорошо для вашей карьеры и лично.
Новые возможности Знание нового языка может только увеличить ваши шансы получить эту работу с этим горячим стартапом. «Чувак, эта работа была бы идеальной, если бы я знал Руби». Кроме того, вам может понравиться язык настолько, что вы решите сменить путь.
Сохраняйте свежесть Работа с тем же самым изо дня в день становится утомительной. Использование другого языка может дать вам отдохнуть от ежедневной рутины и позволить вам прийти на следующий день освеженным.
Потому что это там Изучайте новый язык, потому что вы хотите.
источник
Мы думаем словами. Язык, который мы используем, влияет на то, как мы это делаем. Есть интересный случай с языком пираха - люди, говорящие на этом языке, не могут воспринимать их как нечто «простое» или «интуитивно понятное» как числа, потому что в языке, на котором они воспитывались, нет слов для «определенных величин» (даже «один»). " и много").
С языками программирования тоже самое. Новый язык программирования может «открыть» ваш разум некоторым аспектам программирования.
Учитывая ваш текущий опыт программирования, я рекомендую вам изучить некоторый функциональный язык, например, Erlang или Scala. Наконец, Clojure тоже очень солидный язык.
Если вы хотите сначала почувствовать себя как дома, попробуйте мощный язык сценариев, такой как Python или Ruby.
источник
Мало того, что вы хотите изучать новые языки, вы хотите изучать языки, отличающиеся от тех, которые вы уже знаете. Если вы знаете, что изучение Java на C # не вызовет у вас особых затруднений, они довольно похожи. В идеале вы должны выбрать язык, который сильно отличается от того, что вы знаете. Если вы знаете Java, JavaScript и Objective-C, вы хотите что-то совсем другое
Такие как:
Ruby забавный слабо типизированный OO Language
Пролог Язык логического программирования очень отличается
Erlang Concurrency и Fault Tolerance сделаны очень хорошо
Схема иди читай SICP и достигни просветления
Haskell Одна из самых мощных систем типов в мире, если она скомпилируется, вероятно, будет работать, а также удержит вас от всевозможных странных ошибок и многого другого.
Или просто возьмите Семь Языков за Семь недель, которые будут делать то, о чем говорится в названии.
источник
Ваш вопрос настолько серьезен, что мне приходится задавать следующий вопрос:
Если вы программист по профессии, почему в мире вы не хотите узнать что-то новое, чтобы добавить к своему профессиональному опыту?
Ваш вопрос звучит для меня очень похоже на отношение ученика, которого я когда-то имел. За год или два до 2000 года я преподавал урок Кобол (по выбору) по просьбе директора службы карьерного роста в университете, где я преподавал в то время. У него было так много компаний, которые подходили к нему с возможностями трудоустройства для программистов на Cobol, что он думал, что мы окажем плохую услугу нашим студентам, не дав им возможность выучить навык и дополнить его набор навыков.
У меня был студент, который взял урок в качестве последнего факультативного урока . В то время он также работал программистом на Си. Он взял класс Кобола, потому что у него не было другого выбора, и он хотел получить степень. Поэтому он пришел в класс с чипом на плече.
Поэтому я поставил перед ним задачу написать программу для чтения данных из файла, который имел определенный формат для каждой записи ввода (т. Е. Сколько символов каждое поле заняло в строке, какое поле было первым, вторым, третьим и т. Д. .)
Он должен был написать свою программу на C, что он и сделал, и он показал свою программу мне. В то же время я показал ему свою версию программы на Cobol.
Затем я бросил ему кривой мяч:
Он взял день, чтобы сделать новую версию программы, которая работала с новым форматом данных. Это включало изменение как минимум 20 или 30 строк кода, а также изменение нескольких функций и модулей.
Затем я показал ему изменения, которые мне нужно было внести в мою программу Cobol. Я изменил условие изображения, чтобы отразить новый формат данных.
Я не уверен, что он полностью понял урок этого упражнения, но он по крайней мере прекратил жаловаться до конца семестра.
Итак - в ответ на ваш вопрос: вы должны изучать новые языки, потому что вы хотите учиться. И если ты не хочешь учиться - больше сил для тебя ... (Я просто не уверен, что нанял бы тебя с таким отношением)
источник
Существует несколько причин, по которым изучение нового языка может стоить затрат времени:
Изучение новых языков может дать немедленные преимущества, как вы уже отметили, в «быстрых и грязных» решениях. Однако эти непосредственные решения могут привести к тому, что программист начнет исследовать и углубиться в архитектуру, связанную с новым языком, чтобы «правильно» его изучить. Можно рассматривать эти упражнения по быстрому обучению как вклад в исследование того, стоит ли новый язык дополнительного времени обучения.
источник
Одним словом: товарность .
Вы открываете свои перспективы трудоустройства, когда можете показать, что у вас есть способность адаптироваться и изучать новые вещи. Конечно, вы могли бы продолжать писать приложения, используя тот язык, на котором вы действительно хорошо владеете языком, но что произойдет, когда вы узнаете, что ваш любимый язык становится неактуальным для отрасли, в которой вы работаете. Я действительно помню время, когда мы использовали чтобы писать наши собственные веб-сервисы с нуля на C или C ++, в настоящее время мы используем инструменты, которые делают все основные «веб-возможности» для нас (Think Rails и т. д.).
Дело в том, что вы в конечном итоге похожи на тех актеров, которые снимают сериалы, а потом не могут легко перейти к чему-либо еще, потому что они навсегда рассматриваются как их оригинальный персонаж. «Кто на земле хочет, чтобы капитан Кирк был Индианой Джонс? !!». То же самое с программистами, которые когда-либо использовали только один продукт. Конечно, вы будете знать это, как никто другой, но это не поможет вам, когда с вами обращаются так, как будто вас посадили в Фортран, который не может перейти к работе с C #.
Если вы хотите иметь возможность легко перемещать рабочие места и сохранять открытость своих возможностей, вам нужно расширить свой опыт. Работайте над множеством разных проектов на разных языках, предпочтительно на двух или более платформах, и держите себя на рынке не только тем, кем вы являетесь сегодня.
Конечно, есть много других причин для изучения нового языка, иногда даже просто из-за этого. Это открывает ваш разум для других возможностей, поэтому, когда ваш начальник подходит к вам и говорит: «Можем ли мы что-то сделать», вы можете сказать «Да» с помощью выбора доступных вам инструментов.
источник
На этом этапе вашей карьеры вы должны изучать новые языки, если считаете, что они сделают вас лучшим программистом.
Большинство из перечисленных вами языков (Java / C / C ++ / Javascript / Objective-C) являются традиционными OO / императивом. Изучение еще одного OO / императивного языка, вероятно, не научит вас больше этому типу программирования. Если у вас нет особого интереса, нет смысла изучать вкус месяца по спецификации.
Я также склонен скептически относиться к заявлениям о повышении производительности на порядок. Тем не менее, возможно, стоит проверить время от времени предполагаемый высокопроизводительный язык, чтобы узнать, нравится ли он вам.
Лучшая причина выучить новый язык - выучить навыки общего применения. Для этого я бы рекомендовал глубоко погрузиться в функциональный язык (Haskell или один из Lisps), с одной стороны, и ассемблерный код и системную архитектуру (x86 или ARM) - с другой.
Функциональное программирование сломает ваш мозг и улучшит ваш разум, в то время как архитектура машинного обучения улучшит ваши возможности отладки и оптимизации, даже если вы никогда не будете писать другую строку сборки.
источник
Каждый из нас решает, над чем мы хотим работать, так что ...
Если вы не хотите изучать PHP, вас никто не делает, и есть масса областей, где вы можете программировать, даже не зная, как пишется PHP.
Многие люди смотрят на рынке труда, чтобы увидеть, где области горячих областей и прыгать на этих технологиях. Многие люди изучают один язык и придерживаются его, и спустя 20 лет они становятся старыми инженерами по обслуживанию. И тогда у вас есть много людей, которые находятся где-то между этими двумя крайностями.
В конце концов, все зависит от того, где вы хотите быть.
источник
Лучший аргумент, который я знаю, заключается в том, что он расширяет ваши взгляды на то, сколько разных способов можно решить, или можно выразить некоторую логику. Знание Java и C ++ дает вам хорошее представление о нативной и виртуальной сферах, но есть гораздо больше «степеней свободы» для изучения.
У меня около 15 лет опыта в C ++, 5 в Java. Есть много языков, которые я выучил и оставил позади (PHP, Pascal, ассемблер для множества различных процессоров, среди прочих) и могу с уверенностью сказать, что даже те, которые я больше не использую, оставили значительный след в том, как я думаю о проблеме , Кроме того: даже если вы хотите придерживаться, скажем, Java, для данного проекта, вы должны будете знать альтернативу, чтобы представлять хорошие контраргументы его сторонникам.
Тем не менее, я изучил Python только в этом году, и был восхищен тем, как элегантно можно сделать некоторые вещи. Настолько, что я решил преобразовать несколько написанных мной сервлетов REST из Java в Python. Преимущества в поддержке кода были весьма значительными. Конечно, это оставило след и в моем способе ведения дел, не только потому, что теперь я выберу Python для некоторых задач, но также и потому, что я могу принять аналогичные принципы проектирования при кодировании на C ++ и Java.
Тем не менее, я не думаю, что вы должны учить много разных языков все время, просто ради этого. Это требует значительных временных затрат, и «приспособления», которые вы должны будете придумать, чтобы они сосуществовали с другими, которых вы уже знаете, также требуют времени и усилий. Я решаю изучать язык только тогда, когда он достаточно зрелый, имеет хорошую базу разработчиков и предлагает результаты, значительно отличающиеся от тех, которые я знаю или планирую изучать. Например, когда я решил изучать Python, я также рассмотрел Ruby и Perl, а потом отказался от них - по крайней мере, на ближайшее время.
источник
Люди учат новые языки, чтобы ...
Уверенность = потрясающий код!
Итак, как вы можете видеть, есть много причин для изучения нового языка. Мой вам совет (и моя единственная оригинальная цитата, которую я считаю хорошей):
источник
Я согласен с большинством ответов, опубликованных уже. Чтобы добавить их, ознакомьтесь со статистикой, полученной в ходе опроса пользователей 2011 года о переполнении стека. Была очень высокая корреляция между количеством известных языков и заработанными деньгами. Они не могут быть напрямую связаны друг с другом, но об этом стоит подумать.
Люди, которые склонны изучать больше языков, как правило, зарабатывают больше денег.
http://blog.stackoverflow.com/2012/02/survey-results/
источник
Альфред Норт Уайтхед написал большое эссе под названием « Важность хорошей нотации »
Язык программирования является формой обозначений. Я могу код OO в C; Фактически именно так Страуструп начал с C ++ - как серия макросов прекомпилятора Си. Однако гораздо проще и быстрее написать OO-код на Java, C ++ или C #, потому что у них есть языковые примитивы, которые легче поддерживают OO.
Все приведенные выше причины для изучения новых языков являются действительными, но я думаю, что лучшая причина для изучения нового языка состоит в том, что новая система обозначений может позволить вам мыслить по-новому, что может помочь вам решить новые проблемы.
источник
Большинство или все ответы выше относятся к профессии. Программирование. Я хочу напомнить, что прежде чем мы станем программистами - мы люди.
Одна из причин, почему не стоит изучать новый язык программирования, в вашем случае, это позволить себе отдохнуть или заняться другими делами помимо программирования.
Из моего опыта работы в сельском хозяйстве и работы с деревом я много думал о программировании - больше, чем о изучении нового языка. То есть, чтобы быть хорошим программистом, вы должны быть хорошим человеком. Если у вас нет большого опыта в жизни, кроме программирования, ваша идея о программировании может быть совершенно неверной, даже если вы эксперт.
Многие концепции в программировании исходят непосредственно из повседневной жизни: простота, ремонтопригодность, практичность, полезность, быстрая и иногда медленная модульность и т. Д .; все понятия, которые используются, например, плотником.
Хотите верьте, хотите нет: лично я многое узнал о концепциях программирования, взяв долгий отпуск на сбор апельсинов. Основная концепция, которую я извлек из этого, была - простота. Работая строителем, я усвоил другую концепцию: постройте основание как можно лучше - если вы хотите, чтобы стены стояли прямо.
Наконец, ответ на ваш вопрос может быть следующим: взять отпуск, присоединиться к классу тхэквондо или позаботиться о саде - тогда ваш вопрос может вас больше не беспокоить.
источник
Ценность изучения нового языка программирования примерно равна количеству языков программирования, которые вы уже знаете.
Это потому, что существует ограниченное количество парадигм, и изучение нового языка, как правило, знакомит вас хотя бы с одним или двумя, делая вас более опытным и способным программистом. Некоторые могут перевернуть ваш мир программирования с ног на голову. Но когда вы изучаете новый язык с парадигмами, которые вы уже знаете, вы уже знаете их и привыкли к ним.
источник
Поскольку большинство из них уже написано, у меня есть хорошие рабочие знания по C. Недавно я работал над некоторой проблемой, для которой мне нужно было перепроверить результаты; это было математически. Так что самый быстрый способ получить ответ дал мне толчок, чтобы проверить более быстрый язык программирования для изучения.
И я обнаружил, что bc , язык калькулятора произвольной точности, утилита, почти доступная на любой платформе Unix.
Я не думал о Python, Perl или о чем-то еще, но обнаружил, что это решило мои проблемы в одно мгновение. Я проверил это на факториале (20000), который предложил один из друзей, и он дал результаты мгновенно и без сбоев.
Важно только до определенного момента, что вам нужно знать новый язык, который облегчит вашу работу / проблему в настоящее время.
Определенно, если я напишу это в своем резюме, думаю, это никого не волнует, но, с моей точки зрения, это решает мою проблему, прежде чем я нападаю на него на своем любимом языке, 'C'.
А также, если есть необходимость выучить новый язык, вы получите возможность решать различные проблемы и n решений.
источник
Любой может создать новый язык; но никто, похоже, не понимает, что «лучше» редко означает «настолько лучше, что стоимость усыновления действительно оправдана». Конечным результатом являются сотни разных языков, где никто не может понять весь исходный код, и где программистам приходится тратить около четверти своего времени на непродуктивную работу из-за различий в языке / структуре / библиотеке.
В идеальном мире был бы один язык программирования низкого уровня (например, C), один «безопасный» язык программирования высокого уровня (например, Java) и один язык сценариев. Также будет большой кувалдой для разрушения «Вавилонской башни языков программирования», созданной людьми, которые не понимают достоинств стандартизации и стоимости «оттока» и постоянной переподготовки в ИТ-индустрии в целом.
В «макроэкономическом» смысле нет ничего плохого в том, чтобы изучать новый язык программирования в качестве хобби, но использование этого нового языка программирования для чего-либо делает вас частью проблемы.
источник