Как выбрать язык программирования для проекта?

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

Ответы

Ответ 1

Некоторые примечания:

  • Производительность языка (включая инструменты - IDE, отладчик и т.д.)
  • Доступный набор людей, обладающих определенными языковыми навыками.
  • "популярность" языка
  • Люди в вашей организации, обладающие языковыми навыками.
  • трудность в изучении языка.
  • переносимость поддержки языка/платформы.
  • применимость к проблемной области (драйвер устройства I.E. и python, скорее всего, не очень хорошая идея).

Есть и другие.

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

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

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

Ответ 2

Это зависит от ряда факторов.

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

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

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

Если вы любитель с любимым языком, вы будете использовать его.

Или любое количество других причин.

Ответ 3

Я не знаю никого, кто выбирает технологию в вакууме, основанную только на проекте. Как правило, ваш выбор ограничен технологиями, которые вы знаете, и вам нужно спросить себя, что проект можно реализовать с учетом этих технологий. Если у вас есть возможность выбора из более чем одного, вы выберете тот, который наилучшим образом соответствует проекту. Например, проект может быть более поддающимся решению скриптов, поэтому вы должны выбрать Perl или PowerShell.

Если вы не достижимы с вашим текущим набором технологий, вам нужно либо отказаться от него, либо изучить тот, который будет работать. Скажем, вам абсолютно нужна максимальная производительность, поэтому вы можете выбрать C или С++. Или у вас могут быть существующие решения, которые необходимо интегрировать или использовать внешний компонент, который проще использовать из языка/структуры, которые вы не знаете. В обоих случаях это может привести вас к тому, что вам больше всего нравится.

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

Ответ 4

  • Требуется ли скорость вашего проекта? Если это так, используйте язык более низкого уровня
  • Вы хотите простоту использования, язык со встроенной библиотекой, полный всего, что вам нужно?
  • Вам нужен проект с низким бюджетом? Если это так, используйте что-то, что все знакомы с
  • Вы работаете на платформе? Опять же, если да, используйте язык без платформы, возможно, Java?

Существует множество факторов, которые используют решение языка.

Ответ 5

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

Но обычно его язык наиболее удобен тем, что делает трюк.

Ответ 6

В зависимости от вашей среды существует несколько факторов:

  • Имеет ли организация мандат на использование какого языка (ов)?

  • Какие языки знает команда?

  • Каковы цели проекта? Технологии разведки? Доказательство концепции? Расширение технических навыков? Быстрое развитие производственной системы?

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

  • Каковы доступные ресурсы для изучения языка?

  • Каковы требования и варианты долгосрочного обслуживания проекта? Это отбрасывание? Нужно ли иметь поддержку производства на десять лет? Кто в организации имеет навыки поддержки в долгосрочной перспективе?

  • Какой выигрыш для выбора языка кандидата? Предоставляет ли оно определенное преимущество, которое компенсирует любую кривую обучения? Является ли это "наилучшим образом подходящим" для среды развертывания? Имеет ли он набор доступных библиотек, хорошо подходящих для этой задачи?

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

Ответ 7

В большинстве случаев язык фиксируется не только потому, что опыт разработчика, но и контекст приложения - большинство приложений должны взаимодействовать с другими приложениями, что обычно проще делать на одном языке. Эти два момента часто сливаются и становятся укоренившимися, поэтому компании оказываются "магазином Microsoft" или "магазином Java".

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

  • Насколько сложно/дорого, чтобы получить достаточное количество программистов, которые компетентны на языке и/или сколько времени требуется, чтобы стать компетентным в нем?
  • Какие библиотеки или фреймворки могут сэкономить ваше время?
  • Насколько "мощным" является язык?

Вероятно, в этом порядке.

Ответ 8

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

  • Вы можете реализовать проект на языке сценариев, затем профиль и создать быстрые реализации критически важных компонентов на более компилированном языке более низкого уровня.
  • Вы можете написать высокопроизводительный ядро ​​на языке низкого уровня, встроить движок script и записать остальную часть на встроенном языке script (многие видеоигры делают это).
  • Вы можете пойти в SOA, и в этом случае вы можете выбрать другой язык для каждой службы, если вы выберете
  • Возможно, вы являетесь клиент-сервером, и в этом случае клиент и сервер могут быть написаны на разных языках. Общий случай: веб-приложения с Javascript.

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

  • Python и некоторые реализации Схемы сильны при встраивании
  • Perl имеет инструменты для написания модулей в C
  • Java имеет JNI для вызова скомпилированного собственного кода
  • JRuby позволяет использовать синтаксис Ruby для управления программами Java.
  • ... и многое другое

Ответ 9

  • Язык, знакомый с

  • Язык, на котором доступны все (или большинство) необходимых библиотек

  • Если проект должен быть чем-то новым, еще не известным, рассмотрим некоторый язык, который позволяет быстро прототипировать (например, Python). Таким образом, вы можете сделать быстрый проект и посмотреть, что там происходит.
  • Язык с приятной и дружественной IDE (возможно, также дешевый:-)).

Ответ 10

Кроме того, это важная платформа, на которой вы разрабатываете, и платформу, для которой вы разрабатываете. Если это проект с открытым исходным кодом, личный проект, то используйте новейшие технологии, которые вы можете найти, чтобы вы могли повеселиться вместе с ним, изучая что-то новое, что, как вы знаете, вы не собираетесь использовать на своем рабочем месте на короткий срок. Я, например, сделал одно и то же клиентское приложение для KDE и GNOME, для первого я использовал Python, а для второго С#, даже когда моя дневная работа находится в магазине Java.

Ответ 11

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

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

Наконец, нужно учитывать компромиссы между использованием нового, более желательного элемента (языка, инструмента или библиотеки) в сравнении с затратами на это. Если команда выполняет эту задачу все время, то обновление, вероятно, будет ценным; напротив, если команда находится в состоянии хаоса, затраты могут быть особенно высокими.

Ответ 12

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