Почему у каждого языка своя ниша

Зачем:PHP, Python, Ruby, Java, C#, Go, JavaScript (Node), Elixir и Rust не конкуренты в одном ринге: у каждого свой опыт и своя сильная сторона. После урока вы выбираете язык под задачу, а не по моде, и учитываете российский рынок специалистов.

30 минут

Озвучено синтезом речи (Qwen3-TTS), голос не принадлежит человеку.

Серверный язык выбирают под задачу, а не по моде: у PHP, Python, Ruby, Java, C#, Go, Node.js, Elixir и Rust свои сильные стороны и свой рынок специалистов.

«На чём писать сервер?»

Самый частый вопрос новичка и заказчика, и самый частый неправильный ответ: «на самом лучшем». Лучшего языка для сервера нет, как нет лучшего инструмента вообще: молоток не лучше отвёртки. У каждого языка свой возраст, свои создатели, свои задачи, ради которых он делался, и своя экосистема. Выбор языка это выбор не между «хорошим» и «плохим», а между разными компромиссами.

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

Девять языков и то, зачем они нужны

PHP (1995) создавался именно для веба и поныне делает это лучше многих. На нём WordPress, 1С-Битрикс, Drupal, MediaWiki (движок Википедии), Laravel. Его козыри: дешёвый хостинг везде, модель «запрос — процесс», огромное число специалистов и готовых решений. Слабое место: долгие соединения (чат), а язык несёт груз ранних ошибок.

Python (1991) читается почти как английский и поэтому быстро учится и быстро пишется. Для веба у него Django (на нём построен Instagram), Flask и FastAPI. Главная сила: данные, аналитика и нейросети, которые почти все пишутся на Python, поэтому, когда сайту нужен ИИ, он рядом. Медленнее многих, но для большинства сайтов скорость языка не узкое место.

Ruby (1995) прославился фреймворком Rails (2004), который научил мир создавать веб-продукты за недели с помощью принципа «соглашения вместо настроек». На Rails сделаны GitHub, Shopify, Basecamp. Сегодня он менее модный и в России специалистов мало, но для быстрого запуска продукта по-прежнему хорош.

Java (1995) и C# (2000, Microsoft) стали языками больших корпораций: строгая типизация, зрелые платформы (Spring, .NET), высокая надёжность и множество специалистов. Банки, страховые, крупные порталы часто стоят на них. Цена: высокий порог входа и тяжёлый старт проекта; для сайта-визитки это пушка по воробьям.

Go (Google, 2009) создавался для серверной работы: простой язык, который быстро компилируется, быстро работает и без труда делает много дел одновременно. На нём написаны Docker и Kubernetes. Хорош для сервисов, которым важны скорость и простота эксплуатации.

JavaScript на сервере, то есть Node.js (2009), позволяет писать и страницу, и сервер на одном языке и пользоваться огромным реестром пакетов npm. Хорош для прототипов, для живых соединений (чатов, уведомлений) и когда команда уже пишет на JavaScript.

Elixir (2011, Хосе Валим) работает на виртуальной машине Erlang, которую придумали в 1980-е в компании Ericsson для телефонных станций. Там миллионы звонков идут одновременно, и сбой одного не должен оборвать другие. От предков Elixir унаследовал огромное число лёгких параллельных процессов и устойчивость к ошибкам. На нём пишут чаты, системы уведомлений и потоки событий (так устроен сервис сообщений Discord). Платой стали небольшое сообщество и мало специалистов, особенно в России.

Rust (Mozilla, 2010) выбирают, когда нужны предельная скорость и безопасная работа с памятью: на нём пишут отдельные высоконагруженные части систем (в Cloudflare и Discord). Порог входа самый высокий из девяти, и для обычного сайта это почти всегда избыточно.

Как это сравнить

Для сравнения удобно взять шесть критериев:

  1. Скорость старта проекта: как быстро можно получить работающий сайт.
  2. Скорость работы: сколько запросов обработает одна машина.
  3. Параллельность: удобно ли держать множество одновременных соединений.
  4. Экосистема: сколько готовых библиотек, движков и ответов на вопросы.
  5. Найм в России: легко ли найти людей и сколько они стоят.
  6. Порог входа: насколько трудно начать. Договоримся, что чем легче, тем выше оценка, чтобы пятёрка везде означала «хорошо для проекта».

Выберите два языка и посмотрите на их «радар». Оценки здесь суждения автора, а не замеры, но по форме многоугольника видно, чем языки отличаются:

Сравните два языка
Старт проектаСкорость работыПараллельностьЭкосистемаНайм в РоссииПорог входа

PHP (сумма 24): сайты на движках и недорогой хостинг. Известные примеры: WordPress, 1С-Битрикс, Википедия (MediaWiki), ВКонтакте в прошлом.

Go (сумма 22): простые быстрые сервисы и инфраструктурные инструменты. Известные примеры: Docker, Kubernetes.

Оценки от 1 до 5, где 5 лучше для проекта (для порога входа это «легко начать»). Это суждения автора урока, а не замеры: сумма не определяет выбор, и ваш проект может весить критерии по-разному.

Проверьте себя: почему у Rust самая высокая скорость работы, а для сайта-визитки его почти не берут?

Скорость языка не узкое место визитки. Узкие места там: сеть, база данных и время разработки. А высокий порог входа и мало готовых движков делают Rust дорогим выбором там, где его скорость не нужна.

Как выбирать

Три правила, которые отсекают большинство плохих решений.

  1. Начинайте с задачи, а не с языка. Сайт на движке, магазин, чат, сервис с вычислениями требуют разного. Для сайтов на WordPress или Битрикс вопрос решён заранее: это PHP. Для чата с тысячами соединений скорее Node.js, Go или Elixir.
  2. Считайте людей. Через год сайту понадобится кто-то, кто его поправит. Язык, на котором в вашем городе пишут сотни людей, дешевле языка с десятком специалистов, даже если второй технически лучше. На российском рынке это ощутимо: PHP, Python, Java и JavaScript легко найти, Elixir и Rust трудно.
  3. Выбирайте скучное, когда можете. Скорость языка редко решает судьбу сайта. Решает то, как быстро вы запустились, как легко поддерживать и можно ли найти помощь. А скучное, проверенное и широко распространённое хороший выбор.

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

Практика

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

Потом выберите один и объясните выбор. Не «мне нравится», а «у проекта вот такой раздел, вот такая форма, значит нужно вот что». Скажите, где искали бы специалистов, и назовите ситуацию, которая изменила бы решение. Это три предложения, и они стоят больше самой таблицы.

Что было не так раньше

В 2000-е выбирали языком, а не задачей. «Мы Java-компания» значило, что и визитку из пяти страниц делали на тяжёлой корпоративной платформе. «Мы на Ruby» означало восхищение скоростью разработки и недоумение, зачем тогда нужны другие. К 2010-м выросло поколение разработчиков, для которых язык стал вопросом принадлежности, и споры о нём напоминали споры о футбольных клубах.

Сегодня зрелый подход скромнее: язык это инструмент, выбранный под задачу, а новые языки (Go, Rust, Elixir) заняли свои ниши, не вытеснив старые. PHP, о смерти которого объявляют с 2000-х годов, до сих пор отдаёт значительную долю сайтов в мире (цифру по месяцам публикует W3Techs, свежую сводку ведёт статья Википедии о PHP в источниках).

Практика

Готовлю вашу страницу…

Тест

Вопрос 1 из 6

Вам нужен сайт-визитка, и вы выбираете WordPress. Какой язык «в комплекте»?

Один ответ

Карточки

Эти карточки попадут в повторение, когда вы завершите урок.

  • Где живёт PHP и почему?

    Ответ

    Сайты на движках: WordPress, Битрикс, Drupal, Laravel. Дешёвый хостинг, модель «запрос — процесс», огромная экосистема и множество специалистов. Слабее там, где нужны долгие соединения.

  • Чем известны Python и Ruby на сервере?

    Ответ

    Python (Django, Flask, FastAPI): быстрая разработка, данные и нейросети. Ruby (Rails, 2004): скорость создания продуктов, «соглашения вместо настроек». Оба медленнее Go или Java, но для большинства сайтов хватает.

  • Где используют Java и C#?

    Ответ

    Корпоративные системы, банки, большие порталы. Строгая типизация, зрелые фреймворки (Spring, .NET), много специалистов. Высокий порог входа и тяжёлый старт проекта.

  • Чем хороши Go и Node.js?

    Ответ

    Go (Google, 2009): простота, скорость, лёгкая параллельность, на нём написаны Docker и Kubernetes. Node.js (2009): один язык на сервере и в браузере, огромная экосистема npm, быстрые прототипы и живые соединения.

  • Для чего берут Elixir и Rust?

    Ответ

    Elixir (на Erlang VM): чаты, потоки событий, устойчивость, но мало специалистов. Rust: максимальная скорость и безопасность памяти для сервисов, где это важно, но высокий порог входа.

Источники

Дальше

Теперь вы знаете: ниши языков серверной разработки.