Хабрахабр

Пацаны, так Ruby умер или нет?

С одной стороны, ничего удивительного. Последнее время, когда я говорю с разработчиками или компаниями, часто слышу одну и ту же историю разными словами — «мы писали на Ruby, но сейчас переезжаем». Разработка — дело изменчивое, всегда появляется что-то новое, каждый день надо тратить кучу мозгов, чтобы оставаться актуальным.

Скажи пхп-шнику, что пора переезжать на . Но при этом существуют же некие преданность технологии и даже культ инструмента. NET, услышишь «PHP отличный, полмира на нем пишет», или просто получишь в лоб.

Я поговорил с несколькими рубистами. Что же не так с Ruby, и куда делась его взрывная популярность? Например, Максимом Индыковым из Staply, чья команда переезжает с Ruby на Go, и с Алексеем Кузнецовым из GeekBrains, компании, которая начиналась с курсов по Ruby, а сейчас отказалась от них полностью.

Чем хорош Ruby?

Максим Индыков (maks_ohs): Продуманный синтаксис, на котором код выглядит максимально читаемым. Можно писать действительно понятно и лаконично. Огромное количество реализованных библиотек, подключение которых не вызывает проблем.

Четко реализованные паттерны, не то, что на node.js, крути как хочешь. Павел Сережин: Самый главный плюс ruby — это rails, лучший фреймворк. Само написание кода напоминает английскую речь.

Низкий порог входа, доброжелательное комьюнити. Алексей Кузнецов: У языка легковесный и очень лаконичный синтаксис, хорошо подходящий для описания DSL и бизнес логики. Хороший кандидат, чтобы учить как первый язык.

Чем плох Ruby?

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

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

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

Взрывной рост интереса к Ruby основывался в первую очередь на Ruby on Rails. Алексей Кузнецов: Язык практически не развивается на фоне его ближайших конкурентов (JavaScript и Python). Отсутствие даже опциональной статической типизации также не добавляет Ruby очков. Но сейчас, когда Rails-like фреймворки есть в каждом популярном ЯП, Ruby мало что может предложить.

Расскажи, почему ты выбирал его?

Алексей Кузнецов: Я перешел на Ruby c C++ около 5 лет назад и на тот момент это было разумным выбором. Хотелось делать продукты, которые ближе к конечным пользователям. У PHP была не самая лучшая репутация. В JS балом правил ES5+JQuery, а синтаксис Python не вдохновлял.

И приятно писать на языке ориентированном на разработчика. Павел Сережин: Прежде всего из-за rails, он идеально подходит под область web разработки, которой я и хотел заниматься.

Огромное количество качественно написанных туториалов и best practices. Максим Индыков: Очень повлияло коммьюнити. Богатство подходов и реализаций для написания тестов: RSpec, MiniTest и так далее. Rails фреймворк, делающий разработку максимально понятной от самого старта проекта, до деплоя.

На тот момент, казалось ли тебе, что за ним будущее?

Максим Индыков: Да, язык постоянно развивался (и сейчас продолжает это делать). Было огромное количество вакансий. На фоне php все казалось максимально логичным и правильным.

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

Почему сейчас Ruby все реже требуется?

Павел Сережин: Сейчас все чаще для создания новых проектов просто выбирают более популярные языки и фреймворки. И ruby, и rails немного отстают в производительности и не успевают за трендами. В rails завезли поддержку webpack, что не сильно помогает — легче разделить на два отдельных проекта.

Алексей Кузнецов: Node.js активно канибализирует нишу веб-приложений, а со стороны всевозможных утилит поджимает Go.

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

Ruby создавался как такой ЯП, который нравится разрабам, а не бизнесу. Как думаешь, его нынешняя непопулярность — показатель того, что такая стратегия не работает?

Алексей Кузнецов: Мне кажется, что ситуация противоположная. Остальные языки подтянулись до уровня, на котором с ними стало приятно работать разработчикам (destruction в ES6, стримы в Java8, нуллабилити в Kotlin и Swift, модель конкуренции в Go).

Когда появляется технология способная держать нагрузку на порядки выше, мало кто откажется сэкономить.
Когда эта технология имеет строгую типизацию, что является плюсом к надежности — это еще один камень в огород Ruby. Максим Индыков: Бизнес хочет экономить деньги — ресурсы серверов.

Потом пришла локальная популярность ruby, который преподносился как убийца php, но часто не хватало других аргументов для бизнеса, кроме «Ну на Ruby реально удобно писать». По ощущениям, в РФ такая ситуация: была и есть php разработка. С появлением elixir и go аргументы уже гораздо более понятны. Всех пугал недостаток специалистов.

С Ruby надо уходить?

Алексей Кузнецов: Не думаю, что надо бежать с Ruby, но стоит посмотреть на альтернативы.

Крупные компании во всю объявляют об использовании Go. Максим Индыков: Весь рынок мигрирует. Знаниями новых популярных технологий точно нужно обладать. Но речь идет о миграции в определенных областях задач.

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

Встанет ли он в число совершенно невостребованных языков?

Максим Индыков: Нет, для быстро написания прототипов и MVP, где требуется простота реализации, ему нет равных. Есть непаханое поле проектов, которые нужно реализовать быстро и качественно. Момент, когда потребуется оптимизация может и не наступить, а как известно, преждевременная оптимизация — это зло.

За Ruby так и останется некая репутация слегка непопулярного языка, ниша со своим комьюнити. Павел Сережин: Не думаю.

Есть много ситуаций, когда не так важно, на чем написан проект. Алексей Кузнецов: До этого еще далеко. И много разработчиков, готовых за выходные собрать MVP.
А имея прокачанную команду рубистов можно успешно развивать продукт годами (GitHub и GitLab — оба написаны на RoR).

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

Что бы могло помочь Ruby оставаться популярным?

Максим Индыков: Большая гибкость разработчиков языка. Реализация улучшений по работе с многопоточностью.

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

Просто появились другие кареты. Алексей Кузнецов: Ruby не превратился в тыкву. В комплекте с некоторыми идут реактивные двигатели, другие сильнее сияют.
Думаю, опциональная статическая типизация (и тулинг, который можно сделать поверх нее) могли бы помочь.

Какой из популярных сейчас ЯПов больше всего подходит рубисту?

Максим Индыков: Скорее зависит от задач, но чаще всего на этот вопрос ответ: elixir. Язык созданный людьми из ruby/rails сообщества.

Для software developer не должно быть проблемой освоить новый стек на достаточном уровне за 2-4 недели. Алексей Кузнецов: В целом мне не близко деление на разработчиков по языкам программирования.

Есть еще Elixir и Clojure, но они не мейнстримовые. А так я бы смотрел в сторону Go/JS/Swift в зависимости от задач, на которых разработчик планирует сфокусироваться.

Так что ответ очевиден. Павел Сережин: Почти каждый уважающий себя рубист уходит на Golang.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть