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

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

Общие подходы

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

  • Один язык для всех проектов
  • Свобода выбора языка для каждого проекта.

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

Один язык для всех проектов

плюсы

  • Повторно используемый код за счет использования основных библиотек.
  • Общие пайплайны CI/CD и стратегии тестирования.

минусы

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

Свобода выбора языка для каждого проекта

плюсы

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

минусы

  • Код сложнее поддерживать. Возможность гомогенизировать практики и код практически невозможна.
  • Конвейеры CI (непрерывная интеграция) и CD (непрерывное развертывание) становятся сложными и трудными для понимания.
  • Нет возможности повторно использовать код или совместно использовать основные библиотеки между проектами.

Выбор правильного (или отказ от неправильного) языка для каждого проекта

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

Технические требования

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

Технические требования

  • Производительность. Иногда повышение производительности продукта является ОБЯЗАТЕЛЬНЫМ, а не только ХОРОШИМ. По моему скромному мнению, лучшая стратегия — написать несколько PoC (доказательств концепции), чтобы выяснить, какой язык работает лучше всего.
  • Интеграция: нам нужно интегрировать внешнюю библиотеку. Например, давайте представим, что нам нужно использовать графический компонент, написанный на C. Или нам нужно реализовать новый модуль для существующего ядра базы данных.

Архитектурные проблемы

  • GraphQL API: я бы сделал ставку на NodeJS на стороне сервера. Я создал GraphQL API с помощью NodeJS, Java, Go и Python, и хотя для этого можно использовать широкий спектр языков, я считаю, что NodeJS — правильный кандидат.
  • Искусственный интеллект (ИИ) и проекты данных.Python — правильный кандидат, когда нам нужно работать с большими матрицами и выполнять с ними вычисления. Как следствие этого, большинство библиотек ИИ реализовано с помощью Python.
  • Веб-сборка: мы можем использовать несколько языков для создания компонентов веб-сборки, но Rust должен быть лучшим для такого рода проектов.

Нетехнические требования

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

  • Навыки людей в нашей команде и кривая обучения для введения нового языка. Мы могли бы рассмотреть Scala, Kotlin или даже Dart, если наша команда имеет опыт работы с Java, но будет сложнее, если люди в нашей команде привыкли кодировать на нетипизированных языках, таких как NodeJS или Python.
  • Бюджет на увеличение штата. Стоимость найма специалистов будет варьироваться в зависимости от языка программирования. Например, нанять специалистов по Java будет дешевле, чем нанять специалистов по Elixir или. Rust
  • Зрелость языка и активность сообщества вокруг языка в Интернете. Это не может быть препятствием для команд НИОКР (исследований и разработок), но наверняка будет для тех небольших команд с ограниченным бюджетом, работающих над проектами с согласованной датой запуска.

Что действительно важно

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

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

У вас есть проект, и вам нужно нанять кого-то для его реализации? Или вам нужен кто-то, чтобы возглавить проект? Не стесняйтесь обращаться ко мне. Вы можете связаться со мной по адресу [email protected]. Кроме того, вы можете найти больше информации о моих услугах на https://www.ivancorrales.com