Язык программирования Ruby: особенности, перспективы, рынок труда
Coding
В этой статье поговорим о языке программирования Ruby: его особенностях, сфере применения, перспективах и ситуации на рынке труда. Поинтересуемся у опытных разработчиков, стоит ли изучать Ruby, сколько времени занимает обучение и как они относятся к фреймворку Ruby on Rails.
О языке Ruby: история, особенности
Ruby — язык программирования, который был представлен в 1995 году разработчиком Юкихиро Мацумото, также известным под ником Matz. Вот характеристики Ruby:
- высокоуровневый — удобный для разработчиков, с сильной абстракцией и использованием конструкций натурального или человеческого языка;
- динамичный — типы данных определяются на этапе выполнения программы, это увеличивает скорость разработки;
- интерпретируемый — код на Ruby обрабатывается интерпретатором в момент выполнения без предварительной компиляции, это обеспечивает независимость от платформ и уменьшает размер исполняемых программ;
- язык программирования общего назначения — в отличие от предметно-ориентированных, языки программирования общего назначения не создаются для применения в специфичных областях.
Юкихиро Матцумото начал работать над Ruby в начале 90-х годов. Matz знал Perl и Python, но решил создать новый объектно-ориентированный язык программирования. Perl не нравился Матцумото, так как по его мнению он был игрушечным и даже эзотерическим языком. А Python, по словам Матцумото, был недостаточно объектно-ориентированным. Matz — фанат объектно-ориентированного подхода, поэтому он начал работу над по-настоящему объектно-ориентированным и простым языком.
Matz представил язык в 1995 году. Ruby стал популярен среди японских разработчиков, в том числе благодаря рассылке ruby-list на японском языке. Уже в первых версиях в Ruby присутствовали отличительные черты, которые сохранились в языке до сегодняшнего дня. Это объектно-ориентированный дизайн, использование классов и наследования, миксинов, итераторов, замыканий, сборщик мусора, обработка исключений.
В конце 90-х появилась документация Ruby на английском языке и англоязычный форум ruby-talk. Благодаря этому язык стал популярным за пределами Японии.
Matz говорит, что создал Ruby, чтобы сделать разработчиков счастливыми. Чтобы понять, о чём идёт речь, нужно познакомиться с особенностями этого языка.
Принцип наименьшего удивления и другие особенности Ruby
По словам Юкихиро Матцумото, он хотел сделать язык программирования, с которым ему самому было бы приятно работать. Также Matz хотел, чтобы язык помогал программистам быть продуктивными и позволял делать больше с меньшими усилиями. Наконец, язык должен был минимизировать неожиданности. Это трансформировалось в принцип наименьшего удивления, согласно которому программа должна вести себя так, как ожидает программист.
Как отмечалось выше, Ruby относится к объектно-ориентированным языкам программирования. Фразой «всё есть объект» можно передать то, как в этом языке рассматриваются сущности, включая примитивные. Все вычисления выполняются с помощью методов, которые вызываются на объектах. Например, чтобы вычислить значение 5 + 4, вызывается метод + на экземпляре 5 класса Integer с аргументом объекта 4.
Важная особенность Ruby — поддержка блоков (block). Эта конструкция принимает параметр и возвращает значение. Блоки можно передавать в качестве необязательных аргументов в методы. Блок вызывается с помощью выражения yield(e), которое передает в блок значение e.
Синтаксис Ruby похож на Perl. Блоки можно определять с помощью скобок или ключевых слов. Классы и методы определяются с помощью ключевых слов. Разницы между инструкциями и выражениями нет. Для обозначения конца инструкции используется точка с запятой или перенос строки. В отличие от Python, отступы в Ruby не учитываются.
Сфера применения: благодаря Ruby on Rails нишей языка стала веб-разработка
Как отмечалось выше, Ruby — язык программирования общего назначения. То есть он может использоваться и используется для решения разных задач в разных отраслях. Тем не менее у Ruby есть ниша, в которой он используется чаще всего. Это веб-разработка.
Ruby стал популярным языком для создания веб-приложений благодаря Ruby on Rails. Этот фреймворк был представлен в 2005 году. Он повлиял на веб-разработку в целом и другие фреймворки в частности, о чём ниже рассказывают эксперты.
В «рельсах» реализованы инновационные возможности, включая бесшовную интеграцию с базой данных, миграции, создание представлений для ускорения разработки. Эти возможности позднее были внедрены в других фреймворках, включая Django, Laravel и Phoenix.
В Ruby on Rails применяется архитектура MVC, а также известные инженерные паттерны, включая DRY, ActiveRecord, convention over configuration (соглашение по конфигурации). Принцип соглашение по конфигурации продолжает принцип наименьшего удивления, который использовал Юкихиро Матцумото при разработке языка Ruby. Convention over configuration значит, что конфигурация необходима только там, где какой-либо аспект выходит за рамки спецификации.
Ruby применяется не только в веб-разработке. На Ruby написаны утилита командной строки Homebrew, ПО для обеспечения информационной безопасности Metasploit, ПО для создания виртуальной среды разработки Vagrant и другие известные приложения.
Промежуточный итог: Ruby — язык программирования общего назначения, но чаще всего применяется в веб-разработке. Он создан, «чтобы сделать программистов счастливыми», поэтому у Ruby лаконичный синтаксис. Фреймворк Ruby on Rails повлиял на другие веб-фреймворки, он остаётся популярным и удобным инструментом для создания веб-приложений.
Популярность и рейтинг Ruby
По состоянию на май 2020 года Ruby занимает пятнадцатое место в индексе TIOBE. Этот индекс рассчитывается на основе поисковых запросов, связанных с программированием.

По данным сервиса GitHut, который отслеживает популярность языков программирования на основе активности пользователей GitHub, Ruby входит в топ-10 языков по количеству пулреквестов. Эти данные актуальны на первый квартал 2020 года.

По данным GitHut, Ruby занимает шестое место по количеству пулреквестов на GitHub
По данным сервиса Hotframeworks, Ruby on Rails входит в число самых популярных веб-фреймворков. В этом рейтинге участвуют как бэкенд-, так и фронтенд-фреймворки.
По информации Stackoverflow Developers Survey, в 2019 году 8 % пользователей Stackoverflow работали с «рельсами».

Практически каждый десятый посетитель Stackoverflow работает с Ruby on Rails
Промежуточный итог: по разным данным, Ruby входит в десятку или двадцатку самых популярных языков программирования. Ruby on Rails — один из самых популярных веб-фреймворков.
Ситуация на рынке труда: зарплаты и вакансии для Ruby-программистов
В мае 2020 года по запросу Ruby на hh.ru есть 580 вакансий. Из-за особенностей работы сайта в результаты поиска попадают вакансии, в которых упоминается язык Ruby. Например, если в вакансии для программиста на Rust написано «приветствуется опыт работы с Ruby», такая вакансия попадает в выдачу. То есть реальное количество вакансий для программистов Ruby чуть меньше, чем отображает сайт.

Вакансии для рубистов
Бросается в глаза следующее: в подавляющем большинстве объявлений работодатели ищут разработчиков на проекты с использованием Ruby on Rails. Это ещё раз подтверждает популярность и востребованность фреймворка.

В большинстве вакансий требуются Ruby on Rails разработчики
Вилка зарплат на сайте hh.ru — от 25 000 рублей до 2000 долларов США. По данным агентства NewHR, в 2019 году программистам на Ruby уровня middle в Москве платили от 150 000 до 180 000 рублей в месяц. По информации Хабр Карьера, медианная зарплата Ruby-программистов во втором полугодии 2019 года составляла 130 000 рублей.
Промежуточный итог: программисты на Ruby востребованы на рынке, но вакансий для рубистов меньше, чем для JavaScript-разработчиков. Медианная зарплата программистов на Ruby выше, чем у программистов на Java, JavaScript, Python, PHP.
Стоит ли изучать Ruby, жив ли этот язык и сколько придётся учиться с нуля до уровня джуниора: комментарии экспертов
Узнали о перспективах Ruby и состоянии этого языка из первых рук: попросили опытных разработчиков ответить на несколько вопросов:
- Фраза «Ruby мёртв» давно стала мемом. А как вы можете оценить состояние языка — как он себя чувствует и какие у него перспективы?
- Как вы думаете, стоит ли изучать Ruby в 2020 году? Вопрос связан с ситуацией на рынке труда: есть ли работа для рубистов, насколько они востребованы по сравнению со специалистами, которые используют другие языки?
- Подходит ли Ruby новичкам, или этот язык больше подойдет разработчикам с опытом?
- Что вы можете сказать о Ruby on Rails — чем «рельсы» хороши или плохи, какие перспективы у этого инструмента, как он выглядит на фоне аналогичных решений, написанных на других языках?
- Сколько времени потребуется, чтобы выучить Ruby с нуля до уровня джуниор-разработчика?
Ответы экспертов ниже.
Жив ли Ruby
Про то, как он себя чувствует — это очень сложный и абстрактный вопрос. Из моих наблюдений, чаще всего технологии умирают тогда, когда они перестают развиваться, и в них прекращают экспериментировать. При выборе технологии для меня это одно из ключевых качеств при принятии решения. Нет ничего более грустного, чем момент, когда ты нашел классную библиотеку, которая решает ровно твою проблему, ты заходишь в репозиторий — а последний раз ее обновляли 3 года назад, и там открыто 200 тикетов.
В этом плане Ruby жив и будет жить еще очень долго. Тут к месту вспомнить шутку создателя языка Матца на одной из последних конференций, где он сказал «Вы же понимаете, что мы не можем позволить Ruby умереть? Вы-то ладно, вы другие языке выучите. А я-то вообще без работы останусь». В действительности, конечно, без работы он не останется еще долго. Сейчас большое количество довольно крупных и успешных компаний, например, GitHub, Airbnb, Heroku, инвестируют много времени и средств в сам язык постоянно.
Касательно перспектив самого языка с точки зрения изменений, то в последнее время много разговоров ходит вокруг нескольких топиков. А именно это работа над GC (сборщиком мусора), опциональной типизацией для увеличения производительности и улучшения модели параллелизаций (условные async/await и прочее).
К слову сказать блог, на котором вы читаете данную статью, тоже написан на Ruby ;-)
О целесообразности изучения
Я призываю читателей отвечать себе на такие вопросы самостоятельно, используя критическое мышление. Для этого берёте сайты с вакансиями, вбиваете ключевые слова, и смотрите вакансии на разных рынках в их количестве, вилки зарплат и перспективы. Лично ваш покорный слуга последнюю неделю спит по 6 часов просто потому, что работы так много, что времени в сутках не хватает.
В данном вопросе стоит подчеркнуть наверное самый важный аспект в вопросе «стоит ли изучать Ruby». Не знаю, как так получается, но каким-то магическим образом работа на этом языке делает многих… счастливыми. Это часто трудно объяснить, но я все-таки связываю это в первую очередь с красотой, лаконичностью и возможностями самого языка.
Подходит ли Ruby новичкам
Разработчики с опытом точно освоят Ruby без проблем. Как и любой язык программирования. Но я обещаю, что они определенно кайфанут от многих концепций и структур, которые присутствуют в самом языке.
Для новичков в программировании все зависит от того, как вы собираетесь этой технологии обучаться, и кто вас будет менторить. К счастью, сообщество у нас очень дружелюбное к новичкам, есть огромное количество образовательных курсов и материалов.
О Ruby on Rails
С точки зрения бизнеса, «рельсы» — это прекрасная технология для старта вашего приложения, она идеально подходит малому и среднему бизнесу. Именно в этот момент степень неопределенности очень высокая, вам нужно очень быстро и динамично двигаться, постоянно экспериментируя. И именно в данной ситуации вам не хочется бороться с какими-то тонкостями языка и технологий. Или обнаружить, что вы неправильно организовали микросервисы, и через 3-6 месяцев вообще никто в команде не понимает, как это все работает. А новые разработчики смотрят на ваш код и увольняются через неделю.
С точки зрения технологий, за что я люблю «рельсы» (и в некотором роде недолюбливаю современный фронтенд) — это то, что даже в 2020 году ты можешь открыть проект на «рельсах», написанный 10 лет назад, и все еще полностью понять, что там происходит, и продолжить его развивать.
При этом из личных наблюдений и опыта общения в подкасте с программистами на других схожих технологиях (nodejs/python/php) — в нашем сообществе очень много времени и подходов уделяется именно качеству кода. И тут скорее идея не в том, что все сидят такие крутые и пишут классный и идеальный код. Потом распечатывают его, вешают на стенку и сидят вечерами с бокалом вина, любуясь часами всей семьей. Нет, я скорее о том, что сообщество уже достаточно опытное, оно знает, как надо писать проекты правильно, чтобы потом через 3-5 лет просто не было больно каждый день.
Сколько придётся учиться
Всё очень сильно зависит от начальных условий и от того, как сильно у вас горят глаза. Лично для меня в свое время от момента, когда я впервые услышал слово «Ruby», до момента, когда получил первую работу на этом языке, прошло около двух месяцев. Но стоит понимать, что это была ежедневная работа по 10 часов, практически без выходных, в окружении менторов и команды. Если «почитывать книжку» раз в две недели по субботам, процесс может занять и годы.
Об эксперте
Валентин Завадский, СЕО Rubyroid Labs, соведущий подкаста proconf и лидер Ruby-сообщества Minsk.rb
Павел Калашников: главная мысль — Ruby не должен быть первым языком программирования

Павел Калашников: главная мысль — Ruby не должен быть первым языком программирования
Жив ли Ruby
Тот, кто говорит, что Ruby мёртв, мало работает с американскими компаниями. В тех местах Ruby до сих пор очень популярен. На российском рынке — да, стал менее популярен. Но даже здесь в России в период популярности 8-10 лет назад на нём были написаны успешные продукты и системы, которые надо поддерживать и развивать. В основном это про Ruby on Rails, конечно. Переписывать их на что-то другое навряд ли будут, ибо переписывание проектов с Ruby on Rails на Laravel или Django — это бессмысленная история.
А заниматься переписыванием их на более хайповый Go — это очень сложная задача, потому что в Go нет фреймворка, который обладает таким же набором функциональности и инфраструктурой Rails. Гоферы на это, конечно, всегда отвечают и фыркают, что можно переписать, попутно называя 20+ библиотек, которые надо с помощью какой-то матери склеить вместе, и всё это, чтобы воссоздать в приложении функции и возможности, которые в «рельсах» лет 10 уже из коробки есть. Такая себе история :-) Так что Ruby в России благодаря рельсам останется языком, на котором нужно будет делать и развивать веб-приложения. И не надо забывать, что это всё ещё очень сильный скриптовый язык программирования. Честно, до сих пор жду, когда кто-нибудь в России проведёт конференцию RubyMertv :-)
О целесообразности изучения
Зависит от задач, которые перед собой ставит сам специалист. Если он собирается оставаться на российском рынке, то Ruby не очень востребован. Лучше учить Python, PHP, JavaScript или Go. Какой-то статистики у меня нет, но я наблюдаю за рынком аутсорса, и там видна тенденция не в пользу Ruby. Конкретно, во всяких аутсорс-чатах и группах на 10 заявок на Python, будет одна заявка на Ruby. Но если он собирается перебираться или работать удалённо с компаниями и людьми в тех местах и отраслях, где Ruby популярен, надо однозначно выбирать его. Отрасль, где популярен Ruby — это стартапы. Учитывая, что на Ruby можно очень быстро делать MVP (minimum viable product) и прототипы, в этой среде он очень полезен.
Подходит ли Ruby новичкам
Самая главная мысль — Ruby не должен быть первым языком программирования. Чтобы оценить все радости, которые предоставляет язык и его инфраструктура, нужно «пострадать» с чем-то другим, сильнее типизированным и менее динамичным. А вот если потом в процессе работы с такими языками вы почувствуете тягу к рефлексии и метапрограммированию, то Ruby — это прекрасный вариант заниматься этими делами в полный рост. Для джунов Ruby должен подойти либо студентам ИТ-специальностей старших курсов, которые уже несколько лет тусят с C++ или чем-то другим, а также подойдёт специалисту, который успел год поработать в ИТ-компании с другим языком программирования.
О Ruby on Rails
Один специалист из одной ульяновской компании после нескольких лет работы с Django сказал мне такую фразу. «Django, конечно, хорош! Но видно, что рельсы — это для людей». И действительно, «рельсы» позволяют сосредоточиться на бизнес-логике продукта и не заниматься техническим стаффом из начала 2000-х. Это делает его потрясающим инструментом для стартапов, как я сказал выше.
На Ruby можно быстро создавать проекты. Но за всё надо платить, и плата за скорость разработки — производительность. Чтобы сделать производительное приложение на «рельсах», нужно либо внутри «рельс» не использовать фичи «рельс», либо использовать дополнительные инструменты вроде «кэш-баз данных», Redis, например. Я знаю, что это не кэш-база данных, и вообще таких баз не существует, но давайте честно, рельсовики её часто используют именно так. Или других дополнительных «шин» для обработки данных.
Как рельсы выглядят на фоне других веб-фреймворков подобных? Ну вот 10 лет назад я бы сказал, что никто рядом по количеству фич и простоте использования не валялся, но сейчас большинство фреймворков (те же Laravel, Django и прочие) уже догнали рельсы. И, кстати, многое от них взяли в себя. В перспективе рельсы станут продуктом, на котором можно очень быстро запилить API для Single Page Application приложений, плюс можно быстро админку сделать для управления данными.
Сколько придётся учиться
Зависит от бэкграунда и от самого человека. Я сам был студентом старших курсов, когда с Ruby познакомился. Благодарности и лучи добра господину Мокевнину. Мне где-то 5-6 месяцев постоянного использования Ruby и Rails для своих пет-прожектов понадобилось, чтобы на первую работу устроиться. Но это не показательная история, у каждого свой путь.
Об эксперте
Павел Калашников, координатор скилл-шеринг сообщества IT Way, RoR-разработчик, директор компании Purple Magic