Ваши критерии в использовании новой технологии или языка программирования - PullRequest
4 голосов
/ 24 мая 2009

Каковы ваши критерии или вещи, которые вы учитываете, когда вы начинаете применять язык программирования или технологию?

Два самых распространенных объяснения, которые я слышал:

  1. Это должно быть "весело" (что я слышал от технических людей).
  2. Он должен быть способен решить нашу проблему (что я слышал от деловых людей).

Так что у тебя?

Ответы [ 11 ]

3 голосов
/ 24 мая 2009

Я делал это несколько раз за свою карьеру, охватывающую различные компании, переходя с C на Java на Ruby и Haskell для большинства моих разработок программного обеспечения.

Во всех случаях я искал больше выразительной силы и лучших абстракций. Это всегда обусловлено потребностями бизнеса: как я могу разработать лучшее программное обеспечение дешевле? Для меня проблема этой проблемы "забавная", так что веселье скорее автоматически приходит вместе с ней. Однако оправдать ценность бизнеса для менеджеров может быть сложно; они часто не обладают техническими навыками, чтобы понять, почему один язык программирования может быть лучше другого, и беспокоятся о переходе на технологии, которые они понимают даже меньше, чем текущий. (Я решил эту проблему, взяв на себя работу менеджера: я основал компанию.)

Трудно сказать, что именно искать на новом языке. У вас явно нет четкого понимания языка, или вы уже используете его или знаете, почему это не так. Большой опыт принесет инстинкт, который заставит некоторые языки «пахнуть» лучше, чем другие, но это может сделать особенно трудным убедить других взглянуть на новый язык - вы не будете точно знать, какие функции дают вам большие преимущества. Примером может служить сопоставление с шаблоном: эта функция встречается на сравнительно небольшом количестве языков, и хотя я знал об этом, я не знал, когда начал работать с Haskell, что это станет ключевым фактором повышения производительности.

Хотя это скорее негативный («избегай этого»), чем позитивный («делай это») совет, одно довольно простое правило - избегать тратить много времени на языки, очень похожие на те, которые ты уже хорошо знаешь. Если вы уже знаете Ruby, изучение Python вряд ли научит вас многим новым вещам; C # и Java были бы еще одним примером. (Хотя C # начинает получать несколько интересных функций, которых нет в Java.)

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

1 голос
/ 10 июня 2009

Кто-то когда-то сказал что-то такое:

«Если изучение языка программирования не меняет того, как вы думаете о программировании, его не стоит изучать».

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

  • C, потому что она помогает вам лучше понять архитектуру фон Неймана, чем любой другой язык (и это своего рода машина Тьюринга с произвольным доступом, например, sorta '...).
  • LaTeX (как язык программирования, а не только как система набора текста), потому что он позволяет вам узнать о системах переписывания строк как модели вычислений. Здесь sed похож; изучите оба, потому что они оба являются полезными инструментами: -)
  • Haskell, потому что он учит вас функциональному программированию, лямбда-исчислению (еще одна модель вычислений), ленивому вычислению, выводу типов, алгебраическим типам данных (сделано легко), разрешимости систем типов (то есть научиться бояться C ++)
  • Схема `(или (другое), Лисп) для его макросистемы, а также динамическая типизация и функциональное программирование сделаны несколько иначе.
  • SmallTalk, для изучения объектной ориентации (так я слышу)
  • Java, чтобы узнать, на что похоже зарабатывание денег: D
  • Далее, потому что wisdom bestowed forth learned implies.

... это не объясняет, почему я изучаю скрипты на python или shell. Я думаю, что вы должны принять просветление с небольшим количеством соли и лопатой прагматизма:)

1 голос
/ 24 мая 2009
  1. Открытый исходный код.
  2. Активное сообщество разработчиков
  3. Активное пользовательское сообщество, с дружественным списком рассылки или форумом.
  4. Некоторые примеры и документация, желательно учебник
  5. Желательные функции (решает проблемы).
1 голос
/ 24 мая 2009

Если это для моего личного удовольствия, мне нужно очень мало оправданий, поскольку я люблю изучать новые вещи, и лучший способ обучения - это делать. Если это для работодателя, клиента или клиента, планка НАМНОГО выше - я должен быть убежден, что «новые вещи», , даже после учета эффектов нарастания и затрат, которые приходят с кровотечением edge , значительно улучшит работу по доставке клиенту (клиенту или работодателю). Это вопрос профессионального отношения: моя работа заключается в том, чтобы приносить максимальную пользу клиенту - веселье при этом является вспомогательным и второстепенным. Таким образом, на практике «новые» технологии (включая языки), которые я внедряю в профессиональной обстановке, обычно будут теми, с которыми я ранее чувствовал себя комфортно и уверенно в свое свободное время.

1 голос
/ 24 мая 2009

Я хочу, чтобы это было легко, что трудно сделать с инструментами, к которым я привык. Поэтому я перешел на Python, а затем на Ruby, поверх Java, потому что я мог создавать программы постепенно, легко добавлять функции и выражать программы более кратко (особенно в Ruby, где я могу передавать блоки / Procs и иметь чистые замыкания, плюс определить хорошие DSL с использованием блоков и yield.)

Я взял Erlang, потому что он хорошо выражает параллелизм на основе акторов; это облегчает сетевые программы.

Я взялся за Haskell, потому что он соответствовал ряду инструментов формальных методов, с которыми я хотел поэкспериментировать.

1 голос
/ 24 мая 2009

Мои критерии просты:

  • вау-фактор
  • простой
  • добивается цели
  • быстрый
0 голосов
/ 24 мая 2009

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

  1. Хорошо ли это поддерживается на моей платформе? То, что работает только в Linux не интересно для винды программист.
  2. Узнаю ли я что-то новое? В Другими словами, это придумывает новый способ делать вещи?
  3. Это выглядит весело? Я не хочу изучать Аду, даже если у нее есть новые способы ведения дел.

Если я изучаю это для работы, критерии разные:

  1. Насколько он зрелый? Это было доказано, что работает в реальном мире?
  2. Насколько велико сообщество?
  3. Это облегчит мою работу? То есть является стоит вложений времени по сравнению с просто делаю задачу с языком Я уже знаю.
0 голосов
/ 24 мая 2009
  • Получает максимальную отдачу с наименьшим усилием
  • Чрезвычайно совместимы с различными протоколами, из коробки
  • Fast
  • Имеет множество встроенных библиотек для 99% веб-разработчиков (PDF, электронная почта, отчеты и т. Д.)
0 голосов
/ 24 мая 2009

Мои критерии, которые должен иметь язык:
1. Новые идеи - Если язык - это просто другой вариант Схемы, если вы знаете один, я не чувствую необходимости изучать этот новый. Я научусь этому, если думаю, что узнаю что-то новое.
2. Похож на другой язык, но лучше. Например, хотя Java и C ++ имеют много одинаковых идей, автоматическая сборка мусора в Java делает его лучшим выбором во многих случаях.

0 голосов
/ 24 мая 2009

Язык должен быть:

  1. Легко использовать, изучать и кодировать.
  2. Последовательная. Многие языки имеют 50 устаревших способов ведения дел, это увеличивает кривую обучения и становится довольно раздражающим. C # для меня это один из тех языков.
  3. Это должно обеспечить наиболее полезное решение с наименьшим количеством кода. С другой стороны, иногда вам нужно немного выразительности, чтобы убедиться, что вы не совершаете огромную ошибку.
  4. Правильный инструмент для правильной работы и, возможно, правильный инструмент для любой работы
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...