10 причин для перехода на Ruby
Я познакомился с Ruby сравнительно недавно, благодаря чудесному фреймворку Ruby on Rails. Я не считаю себя экспертом в Ruby, но я прочитал PickAxe, написал несколько утилит на Ruby для личного пользования, а также разрабатываю на Rails в свободное время.
Ruby на данный момент, мой основной язык. Начинал же я с TurboPascal в школе, изучал C и C++ в университете, дисертацию писал на Java, а еще я изучал PHP с нуля, так как хотел научиться делать веб-сайты быстро и легко. Думаю, что написание кода для меня это некая форма развлечения, а уж потом все остальное. В начале у меня были размышления, какой язык изучать, Python или Ruby. Я выбрал второй, так как не хотел, чтоб неправильные отступы были причиной неполадок в моем коде.
Есть целая куча введений, руководств, статьей и эссе, написанных гуру, о том, как получить максимум пользы от Ruby. Данная статья ничем таким не является.
Это более скромный, неполный перечень причин, которые могут (или не могут) побудить вас использовать Ruby, ну или в крайнем случае поиграть с ним. Предостережение: если вы используете другой язык программирования для работы или в других целях — не жалуйтесь мне, если больше не захотите им пользоваться. Именно это и произошло со мной, но для меня это не столь важно. Ruby чудесный и элегантный язык и как многие подобные вещи, он может захватить ваш разум и поломать душу.
Короче, вы — предупреждены.
Зачем изучать Ruby?
1.Вы получаете все удобства (удовольствия) без уловок.
- Исключения. Верите или нет, исключения являются одной из важнейших вещей при разработке программ любого рода. Программисты на PHP4, не знают ничего о них и будут говорить вам, что можно просто печатать(ошибки) на экран или использовать их собственный «супер-пупер» класс для обслуживания ошибок. К счастью для всех нас, Ruby поставляется с try/catch (или еще лучше begin/rescue) блоками и набором предопределенных, расширяемых Исключений, для правильной обработки ошибок.
- Пространства имен: модули Ruby делают использование пространства имен легким, это должно понравиться энтузиастам C++ и Java.
- Встроенные регулярные веражения: Для всех знатоков Perl, вы можете заключить нечто в // и оно становится регулярным выражение, готовым для сравнения (для этого используем оператор =~).
- Перегрузка операторов: Ruby позволяет определять операторы, такие как +, -, >, и т.д. для любого вашего класса.
- Пакеты: называемые «gems»(камешки), они действительно оправдывают свое название, кроме того — они работают. Пакеты поддерживают зависимости, а еще могут быть как кросс-платформенные, так и платформо-зависимыми.
- Интерактивная консоль: может использоваться для тестирования кода интерактивно, подобно консоли Python
2.Вы полюбите мелочи.
- Вы можите использовать оба оператора, if и unless в условных выражениях. Кончно же вы можите использовать if с противоположным значением выражения, но использования unless обычно приводит к меньшему числу ошибок. Кроме того, вы можите использовать оба оператора, как условные модификаторы, ставя их после выражения, а не до: order.new unless order.exists
- Можно использовать знаки вопроса и восклицания в конце имени метода. Данное соглашение не навязывается, но знак «?» используется, когда метод возвращает true или false, в то время, как знак «!» используется для методов, делающих нечто необратимое, на подобии удаления записи из базы данных, отщепления последнего символа из строки и т.п.
- Можно использовать псевдонимы (alias) для уже созданных методов. Таким образом можно получить методы exist и exists, без накладных расходов и без повторений.
- Вы можете использовать директивы attr_reader, attr_writer или attr_accessor для автоматического создания getter/setteer для членов класса.
- И еще некоторое соглашение об именах: константы, классы и модули пишут с заглавной буквы, методы и члены класса должны начинатся с маленькой буквы, глобальные переменные именуют начиная с «$», имена переменных объекта начинаются с «@», а имена переменных класса с «@@», ну и т.д.
- При вызове методов, можно не писать скобки. Можно писать write File.open(«/home/h3rald/test.txt») или просто File.open «/home/h3rald/test.txt» , что особенно удобно с методами, без аргументов.
3.Больше не нужно использовать точку с запятой.
Хотите написать следаующую инструкцию? Просто переходите на новую строку. Нажмите «Enter» и готово. В Ruby как и в Python, новая линия разделяет инструкции, так что вам не придется все время ставить точку с запятой. К сожалению это означает, что подобно фанатам C++, мы не сможем написать программу в одну строчку. Но это не так уж и плохо, правда?
4.Все является объектом, как это и должно быть.
Когда я изучал Java, мне говорили, что все является объектом.
— «Че, 14 и 374346.678 — объекты?»
— «Нет, глупыш, это числа!»
В Ruby числа, символы, булевы значения и все остальное является объектом. Серьезно. Это означает, что можно писать вещи подобно этим:
«YOU SHOULDN’T ALWAYS USE CAPITALS».lowcase # вернет «you shouldn’t always use capitals» , вместо нечто такого:
# PHP Code
strtolower(«YOU SHOULDN’T ALWAYS USE CAPITALS»)
Этим вы экономите время, экономите скобки и так более логично.
5.Все имеет значение.
Или «больше не надо использовать return для возврата значений». Если побыстрячку, то так: все инструкции в Ruby возвращают значение, даже присваивание переменных, так что вам действительно не нужно использовать ключевое слово «return» в конце методов. Значение последнего присваивания всегда будет возвращено.
6.Можете изменять окружение любым доступным способом.
- Вы изменяете исходный код класса, если вы имеете к нему доступ. Но обычно это — плохая идея, не делайте так.
- Вы наследуете свой класс от того и добавляете к нему новый метод. Обычно это — хорошая идея. Но из-за одного метода это может оказаться несколько монрообразным. Кроме того, придется немного подправить другой свой код соответственно.
- Можно просто создать метод вне класса. Это сработает, но будет не очень изящно, а еще — идет в разрез с ООП.
7.Вы не сможите получать единорогов из птиц и конец, но вы получите ослов, если захотите.
Я четко помню, как моя учительница по C++, использовала животных, для иллюстрации основных концепций объектно-ориентированного программирования — классов и наследования. Было нечто загадачно, когда объясняла нам множественное наследование, образовывая «пегаса» из «птиц» и «лошадей». Сумасшедшие вещи, Ruby не позволяет множественного наследования. Это выглядит как тренд и в конце-концов это дело вкуса. Я не в восторге от множественного наследования, так как это может привести к непредсказуемым вещам. Несмотря на это есть возможность создания нечто подобного, используя модули Ruby, так что переменные и методы одного модуля, будут добавлены в определенный класс, если модуль включен в него.
8. XML — реально ненужен.
XML — красивый, общеупотребительный, язык разметки, который может быть обработан всеми языками программирования и используется повсеместно. К сожалению, он слишком громоздкий для написания, трудный для обработки(парсинга) и, давайте будем честны — трудный для чтения в большинстве случаев. А вот взгляните на следующий фрагмент:
regexp: !ruby/regexp /a-zA-Z/
number: 4.
string: a string
Безусловно это легче и проще XML, правда? Добро похаловать в YAML, любимый (но не единственный) язык разметки Ruby, с помошью которого любой объект может быть представлен в простом, лаконичном, но полном виде.
Ruby способен работать с XML, но простота YAML подкупила многих разработчиков, которые теперь используют его вместо XML, например для файлов конфигурации (так поступили в Rails). Фрагмент, представленный выше, был получен исполнением следующего фрагмента кода:
«a string», «number» => 4.7, «regexp» => /a-zA-Z/>.to_yaml
Метод to_yaml, определен для класса Object, который является родителем для всех остальных объектов, а потому доступен для всех объектов Ruby. Это позволяет преобразовывать объекты в YAML и обратно, абсолютно прозрачно для разработчика. Круто, да?
9.Лямбда — нечто больше, чем просто греческая буковка.
Ruby позаимствовал некую магию из Lisp и Perl в объекты и блоки Proc. Proc — это «блок кода, связанный с набором локальных переменных. Однажды связанные, они могут вызываться в различных контекстах и все еще обращаться к тем переменным.». Поглядим на следующе:
def gen_times(factor)
return Proc.new <|n| n*factor >
end
times3 = gen_times(3)
times5 = gen_times(5)
times3.call(12) #=> 36
times5.call(5) #=> 25
times3.call(times5.call(4)) #=> 60
Можно было использовать ключевое слово lambda вместо Proc.new, на результат это не влияет. Это могло показаться знакомым людям, знающим Perl и Python (или Lisp). Такое можно сдалать даже на PHP, но не много людей пользуются этой возможностью.
Кроме того в Ruby широко используются блоки типа «несозданные Proc», например, для итерации по содержимому объекта и исполнения некоторого кода, подобно методу each, доступного для класса Array:
[1, 2, 4, 6, 8].each <|c| puts c*2>#=> возвратит каждый элемент, умноженный на 2
Если код не умещается на одной строчке, рекомендуется использовать конструкцию do… end, вместо использования скобок. Фаны Ruby не любят скобок.
10. Вы можете использовать Rails.
Последнее, но не по важности… Вы всегда можете использовать Rails для разработки веб-приложений. Разработка будет не настолько простой, как с PHP, но Rails были написаны на Ruby, поскольку он имет возможности, отсутствующие в других языках.
Заключение
Время вышло. Возможно вы уже задумываетесь о взгляде на Ruby, возможно вы уже пробовали его, а возможно вы просто проигнорировали его. Как бы там нибыло, в следующий раз, когда глядя на свой код, он будет казаться страшным, а размер его устрашающим — не обвиняйте меня.
Уважаемые Читатели — не забывайте, что хабраюзер, просто перевел (паршиво, да) текст. Идеологических претензий ему высказывать нет нужды.
Язык программирования Ruby: особенности, перспективы, рынок труда
В этой статье поговорим о языке программирования Ruby: его особенностях, сфере применения, перспективах и ситуации на рынке труда. Поинтересуемся у опытных разработчиков, стоит ли изучать Ruby, сколько времени занимает обучение и как они относятся к фреймворку Ruby on Rails.
- О языке Ruby: история, особенности
- Принцип наименьшего удивления и другие особенности Ruby
- Сфера применения: благодаря Ruby on Rails нишей языка стала веб-разработка
- Валентин Завадский: работа на Ruby делает многих счастливыми
- Павел Калашников: главная мысль — Ruby не должен быть первым языком программирования
- Артём Партос: Ruby — прекрасный язык с лаконичным и выразительным синтаксисом, развитой инфраструктурой и большим и отзывчивым сообществом
- Дмитрий Матвеев: фраза «Ruby мёртв» — это такой прикол, язык не умирает, а развивается
- Александр Вагин: программисты на Ruby получают больше специалистов по другим языкам
- Игорь Александров: самое прекрасное в Ruby – это конечно же community языка
О языке 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 . Этот индекс рассчитывается на основе поисковых запросов, связанных с программированием. Кроме того, Ruby в сентябре 2021 года используют в качестве серверного языка программирования около 5,2% сайтов, тогда как еще в 2010 году этот показатель составлял 0,5%, а в 2018 году — 1,6% сайтов.
По данным сервиса GitHut, который отслеживает популярность языков программирования на основе активности пользователей GitHub, Ruby входит в топ-10 языков по количеству пулреквестов. Эти данные актуальны на первый квартал 2020 года.
По данным сервиса Hotframeworks , Ruby on Rails входит в число самых популярных веб-фреймворков. В этом рейтинге участвуют как бэкенд-, так и фронтенд-фреймворки.
По информации Stackoverflow Developers Survey , в 2019 году 8 % пользователей Stackoverflow работали с «рельсами».
Промежуточный итог: по разным данным, Ruby входит в десятку или двадцатку самых популярных языков программирования. Ruby on Rails — один из самых популярных веб-фреймворков.
Ситуация на рынке труда: зарплаты и вакансии для Ruby-программистов
В мае 2020 года по запросу Ruby на hh.ru есть 580 вакансий. Из-за особенностей работы сайта в результаты поиска попадают вакансии, в которых упоминается язык Ruby. Например, если в вакансии для программиста на Rust написано «приветствуется опыт работы с Ruby», такая вакансия попадает в выдачу. То есть реальное количество вакансий для программистов Ruby чуть меньше, чем отображает сайт.
Бросается в глаза следующее: в подавляющем большинстве объявлений работодатели ищут разработчиков на проекты с использованием 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 с нуля до уровня джуниор-разработчика?
Ответы экспертов ниже.
Бесплатные курсы по программированию в Хекслете
- Освойте азы современных языков программирования
- Изучите работу с Git и командной строкой
- Выберите себе профессию или улучшите навыки

Валентин Завадский: работа на 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 до сих пор очень популярен. На российском рынке — да, стал менее популярен. Но даже здесь в России в период популярности 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
Артём Партос: Ruby — прекрасный язык с лаконичным и выразительным синтаксисом, развитой инфраструктурой и большим и отзывчивым сообществом

Жив ли Ruby
Можно довольно много говорить о развитии языка с технической точки зрения — о появлении JIT, о заявленном Ruby 3 speed x3, возможном появлении статической типизации. Но самое главное то, что Ruby уже довольно давно прекрасный язык — с лаконичным и выразительным синтаксисом, развитой инфраструктурой и большим и отзывчивым сообществом.
И самое главное, в какой-то мере, Ruby — это нишевый язык. Его сегмент — это быстрая разработка, рынок, на котором важно минимальное время от идеи до прототипа. И на своем рынке он является одним из лидеров. Да, в этом же сегменте и схожие скриптовые языки PHP/Python/Node.js, но в каждом из них есть свои плюсы и минусы.
О целесообразности изучения
Однозначно да. Например мы (Dualboot partners) уже третий год набираем рубистов десятками, в том числе благодаря Хекслету. Основные наши клиенты — мелкие и средние бизнесы за рубежом. Для них быстрое прототипирование — конкурентное преимущество на рынке. Более того, предлагаемые зарплаты — одни из самых высоких при сравнении с аналогичными языками.
Подходит ли Ruby новичкам
В целом тут ответ неоднозначен. Если цель — стать хорошим инженером, понимать основы, структуры данных — то, наверное, Ruby — не лучший язык для старта. Здесь очень много вещей построено на концепции Convention over configuration — для начинающих разработчиков это будет казаться какой-то магией. Если цель — писать на удобном современном языке, при этом получая хорошую зарплату, то Ruby — отличный язык. В целом есть довольно большая выборка людей, для кого Ruby был первым языком, и кто неплохо себя показывает с точки зрения роста квалификации и навыков, но тут все зависит от самого человека.
О Ruby on Rails
Тут придется остановиться достаточно подробно. В целом я сторонник рассматривать языки как инструменты. И можно выделить разные виды задач в коммерческом программировании.
Самый большой рынок здесь — задачи из области запрос-ответ, по сути — какие-либо сайты, crm/erp системы, API — это процентов 95 рынка.Здесь лидируют Ruby/PHP/Python/Node.js.
Далее идут задачи из мира высоконагруженного/конкурентного программирования, highload, здесь же консольные утилиты/клиенты, задачи из области хранимого состояния в памяти — меньшая доля рынка, очень большая разница подходов. Лидеры: Console utility: golang/С/C++; Enterprise: java-based/.net; Concurrent programming: golang/elixir/erlang/java; Shared state problem: erlang/elixir.
Есть еще много областей, например, мобильная разработка, разработка игр, фронтенд, AR/VR, но здесь мы их рассматривать не будем. В интересующем нас сегменте находятся Ruby/Python/PHP/Node.js.
Node.js мы отбросим из сравнения по нескольким причинам:
- backend на Nodejs сильно отличается из-за большой разницы между классической реализацией на потоках/процессах и event loop подходе с асинхронным неблокирующим IO;
- мне попадается достаточно малое количество проектов, хорошо написанных на Nodejs, поскольку в основном разработчики — это люди, пришедшие из мира frontend, не до конца понимающие концепции backend;
- псевдоудобство — как здорово, один язык программирования — а писать можно и front, и back. Довольно быстро разбивается из-за низкой квалификации и отсутствия фреймворка-лидера;
- JavaScript является самым распространенным языком программирования, вы можете видеть большое количество вакансий на Node.js, но тем не менее крайне не рекомендую писать на нем backend.
Сравним Ruby/Python/PHP — все задачи в описанном сегменте могут быть реализованы на данных языках примерно с равной долей успеха, НО:
- большинство питонистов поглотил мир data science/machine learning, у них появилась довольно большая сегментация фреймворков Django/набирающий обороты Flask/CherryPy/Grok и так далее;
- от PHP многие уходят по разным причинам — от неквалифицированной разработки (тут во многом виноваты разработчики развивающихся стран) до очень большой сегментации фреймфорков (один и тот же программист может быть неплохим в Laravel и совсем не понимать Symphony); лучшее на мой взгляд что есть в PHP — Laravel — позаимствовало большинство концепций из Ruby on Rails;
- учитывая вышесказанное, Ruby и почти единственный веб-фреймфорк Ruby on Rails, обладая отличным комьюнити и готовым набором инструментов, становится отличным выбором.
Сколько придётся учиться
Это скорее вопрос мотивации нежели вопрос на который можно достоверно ответить. То, чем мы занимаемся, не является каким-то rocket science. Среднее время обучения на нашей платформе Learn Dualboot , после которого мы предлагаем коммерческие проекты на позиции Junior, составляет 3-4 месяца. Самая высокая скорость, с которой человек, которого я знаю, изучил все основные концепции языка и фреймворка — три недели. Но тут скорее важны другие факторы: базовые знания, понимание, как в целом решаются разного рода задачи, soft skills, навыки коммуникации, умение разбираться и задавать вопросы. Пользуясь случаем, хочу поблагодарить команду Hexlet за то, что они делают, и пожелать успехов всем начинающим разработчикам.
Об эксперте
Артём Партос , Cofounder & technical lead at Dualboot partners .
Дмитрий Матвеев: фраза «Ruby мёртв» — это такой прикол, язык не умирает, а развивается

Жив ли Ruby
Да, фраза «Ruby мёртв» — это такой прикол. Matz говорил об этом на последней конференции RubyRussia. Язык живой. Он заматерел, перестал быть хайповым. На хайпе сейчас другие языки.
На Ruby уже написано много продуктов, которые надо поддерживать и развивать. Поэтому и сам язык не умирает, а развивается. Например, в него хотят опционально включить статическую типизацию. Ruby on Rails тоже развивается. Все живы, всё в порядке.
О целесообразности изучения
В последнее время на рынке много разнообразия: требуются программисты на Go, Java, .NET, Python, PHP тоже жив, как и другие языки. Но для Ruby всегда найдётся место. Программистов на Ruby ищут как российские компании, так и иностранные. Сейчас с Ruby работает меньше стартапов и больше зрелых бизнесов. Несколько лет назад была противоположная ситуация.
Подходит ли Ruby новичкам
Лично я был новичком, когда начинал изучать Ruby. Это язык хорош тем, что в нём используются правильные принципы, например, DRY, SOLID и так далее. Несмотря на то, что язык объектно-ориентированный, на нём можно писать в функциональном стиле.
Ruby — красивый, элегантный, лаконичный язык. На нём можно писать понятный для человека и читабельный код, который мало отличается от английского языка.
Ruby не был для меня первым языком программирования. После PHP этот язык показался приятным. В то же время могу и поспорить с теми, кто говорит, что Ruby не стоит изучать первым. Здесь надо смотреть на аргументы и обсуждать их.
О Ruby on Rails
«Рельсы» выглядят прекрасно на фоне других инструментов. Концепции, которые реализованы в Ruby on Rails, используются в фреймворках на других языках. Например, миграции, тестирование, MVC и так далее.
Для быстрого создания веб-приложений нет ничего лучше «рельс». Недавно в Facebook увидел новость — в Великобритании сделали какое-то приложение или сайт о коронавирусе. Выбрали Ruby on Rails, так как надо было запустить его быстро.
Сколько нужно учиться
Сначала надо изучать математику, логику, структуры баз данных, алгоритмы. Если есть база, любой язык программирования можно изучить достаточно быстро. Кроме того, если есть база, вы с первой недели обучения сможете что-то писать, делать какой-то сайт. Хорошо, если вы изучаете программирование на какой-то задаче, а не учите тот или иной язык на абстрактных примерах, не связанных с практикой.
Об эксперте
Дмитрий Матвеев , тимлид компании Evrone .
Читайте полезное интервью Дмитрия Матвеева В интервью для блога Хекслета Дмитрий рассказал о работе тимлида, его ожиданиях от начинающих программистов и об организации работы в команде.
Александр Вагин: программисты на Ruby получают больше специалистов по другим языкам

Жив ли Ruby
Язык Ruby и фреймворк Ruby on Rails сейчас уже не так быстро развиваются, как несколько лет назад. Хайп спал, бурного роста нет. Много правильных вещей уже сделано, и эти вещи перенимают разработчики других фреймворков на других языках. В целом язык жив и будет жить. Другим языкам далеко до Ruby и «рельс» по некоторым параметрам. Где-то Ruby лучше, где-то хуже.
О целесообразности изучения
Я никогда не искал работу, где требуется знание другого языка, поэтому сравнивать сложно. Мои знакомые рубисты все работают, пишут на Ruby. Вакансий для рубистов много и в России, и за границей. Есть работа с релокацией и удалённая работа.
На Ruby создано много продуктов, владельцы не собираются переписывать их на другом языке. Поэтому работу найти легко. Важный момент — программисты на Ruby получают больше специалистов по другим языкам. Найти рубиста трудно, поэтому бизнесы переманивают программистов со знанием других языков и переучивают их.
Поэтому да, Ruby стоит изучать.
Подходит ли Ruby новичкам
Ruby — такой же язык, как остальные. Важно изучать базу. Считаю, что можно изучать программирование на любом языке, если есть база.
Хотя в Ruby и в «рельсах» есть свои особенности, здесь используются свои подходы. Важную роль играет ментальное программирование, принятые концепции ставятся во главу угла.
О Ruby on Rails
Я сравнивал Ruby on Rails с другими фреймворками, например, Laravel или Phoenix. Эти фреймворки взяли многое из «рельс», но пока они не готовы заменить «рельсы». Да, они в чём-то сильнее. Например, преимущество Laravel в том, что разработчика на PHP найти проще, чем разработчика на Ruby.
Но в целом считаю Ruby on Rails идеальным фреймворком. Он развивается, внутри уже много сделано. И я бы не хотел поменять «рельсы» на какой-то другой фреймворк.
Сколько придётся учиться
Знание синтаксиса не делает человека джуниор-разработчиком. Нужны базовые знания, с ними можно изучить любой язык программирования быстро.
Лично я был разработчиком на PHP уровня «джуниор», когда познакомился с Ruby. Переучился за две недели и стал джуниор-разработчиком на Ruby.
Об эксперте
Александр Вагин , разработчик. Главный программист Хекслета.
Игорь Александров: самое прекрасное в Ruby – это конечно же community языка

Жив ли Ruby
Мне непонятно понятие «мертвого языка» в контексте Ruby. Я думаю, что на текущий момент Ruby просто вышел из состояния относительно новой технологии, которой все хотели воспользоваться, и перешел в состояние «осознанного использования».
О целесообразности изучения
Работа для рубистов конечно же есть, посмотрите на индекс TIOBE, Ruby стабильно находится в первой двадцатке языков. Конечно, вакансий, например по Python, раза в три больше, но у Ruby есть своя ниша (веб-разработка), в которой он очень силён. Скоро будет релиз Ruby 3.0 (декабрь 2020), на мой взгляд интерес к языку еще раз повысится.
Подходит ли Ruby новичкам
Ruby прекрасно подходит для разработчиков с нулевым опытом. Самое прекрасное в Ruby – это конечно же community языка. Для очень большого количества задач есть проверенные решения, а сам язык обладает прекрасной объектной моделью, которая легка в понимании. Даже динамическая типизация, за которую часто ругают язык, для новичка проще в освоении, чем строгие типы. Посмотрите на Crystal, язык обладает схожим с Ruby синтаксисом, но для начинающего программиста конечно же будет гораздо более сложным.
О Ruby on Rails
Rails одновременно дали огромный импульс для развития Ruby и сыграли с ним злую шутку. Очень многие, когда говорят «Ruby», подразумевают именно «Rails». На текущий момент фреймворк находится уже в шестой версии, стабилен и обладает огромным функционалом из коробки. Rails, как и раньше, прекрасно подходит для быстрого старта проекта, однако с ним по-прежнему возникают проблемы на больших проектах.
В первую очередь это проблемы поддержки кодовой базы и организации кода. По сравнению с ситуацией, которая была лет 5 назад, сообщество уже выработало ряд решений и подходов, которые решают большинство этих проблем. Активно развивается проект dry-rb , который предлагает набор библиотек для более чистого и поддерживаемого Ruby-кода. У Rails есть еще один значительный плюс — это его документация, настолько понятного и подробного описания я не видел ни в одном инструменте.
Сколько нужно учиться
По нашему опыту (у нас есть стажёрская программа) кому-то получается освоить основы Ruby за месяц или полтора, кому-то требуется на это больше времени, у кого-то не получается совсем. При желании «войти в профессию» действительно можно уложиться в месяц. Особенно важно, на мой взгляд, начинать именно с Ruby, а не с Rails.
Об эксперте
Игорь Александров , JetRockets CTO and co-founder
Что можно запомнить
- Ruby — язык с лаконичным синтаксисом, он создавался, «чтобы сделать программистов счастливыми».
- Ruby чаще всего используется в веб-разработке.
- Ruby on Rails — популярный фреймворк, который стал источником вдохновения для разработчиков других фреймворков.
- Программисты на Ruby востребованы на рынке труда, в среднем они зарабатывают больше программистов на JavaScript, Python, Java, PHP.
Язык программирования Ruby
Ruby — динамичный, объектно-ориентированный язык программирования общего назначения. На его фреймворке, Ruby on Rails, созданы веб-приложения таких крупных компаний, как AirBnB, Twitter и Netflix. Руби отличается простым синтаксисом и довольно высокой кроссплатформенностью, а также нестрогой типизацией переменных. За эти и другие особенности его полюбили многие программисты.
История создания
Ruby был представлен публике японским программистом Юкихиро Матцумото в 1995 году, и поначалу распространялся в основном среди японских разработчиков. В конце 90-х появилась первая официальная документация Ruby на английском языке, и так началась его всемирная популярность. Версия языка Ruby 1.8.0 вышла в 2005 году, а при релизе версии 1.9 Матцумото решил провести эксперимент и отошел от обратной совместимости с предыдущими итерациями. Такой шаг был необходим, чтобы исправить главный недостаток языка — низкую производительность. В итоге скорость обработки информации возросла в несколько раз, а с тем возрос и интерес к платформе. В 2018 году вышла еще более производительная версия Ruby 2.6, поддерживающая динамическую компиляцию данных. Сейчас язык и его основной фреймворк Ruby on Rails продолжают развиваться. Вокруг платформы уже сложилось широкое сообщество разработчиков, сформировавших свои принципы и “правила хорошего тона” для написания кода на Руби.
Сферы применения

Ruby, за счет своей мультипарадигмальности, используется в разных целях. На нем пишут биржевое ПО, программы для обеспечения безопасности и прочий коммерческий софт. Интерпретатор языка работает на любых платформах — от Windows и MacOS до Linux и Unix. Фреймворки сделали Руби особенно популярным в веб-среде. На этом языке программисты пишут серверную часть веб-приложений. При этом архитектура приложения в Ruby on Rails строится по принципу MVC. Вся система разбивается на три независимые, но взаимодействующие части — модель (общая логика и алгоритмы), представление (пользовательский интерфейс) и контроллер (средство для ввода данных). “Рельсы” (так часто называют фреймворк в русскоязычной среде) задали своего рода стандарт для других веб-сред. В Laravel или Django тоже есть бесшовная интеграция с базами данных, миграции и MVC. В RnR, кроме прочего, реализовано соглашение по конфигурации. Согласно ему, новые конфигурации применяются только в случаях, не предусмотренных официальной спецификацией.
Особенности языка
- Лаконичный синтаксис.
Ruby унаследовал свой синтаксис от языков Perl и Python. Команды в нем выглядят гораздо проще, чем в С++ и C#, и понятны даже начинающим разработчикам. В целом код на Руби не занимает много места и легко оптимизируется. Сокращается и время работы программиста, что немаловажно для заказчиков. - Мультипарадигмальность.
Ruby сочетает объектно-ориентированный, структурный и функциональный подходы программирования. Но основной упор автор языка все же делал на ООП. В языке используются классы, итераторы, замыкания и прочие атрибуты. - Динамическая типизация.
Программист не присваивает переменной конкретный тип вручную. На основе характерных используемых методов Руби сам определяет, числовая или строчная перед ним переменная. В среде программистов это называется принципом duck typing. Этот принцип предполагает, что если объект крякает и плавает как утка, с наибольшей вероятностью это и есть утка. - Интерпретируемость.
У Ruby нет компилятора, который целиком переводит написанную программу в машинный код для обработки. Вместо него используется интерпретатор, который считывает команды последовательно строка за строкой. Такой подход делает язык гибким и полностью кроссплатформенным. - Блочная система.
Блок — это отдельный кусок кода, который можно напрямую встроить в определенный метод или функцию. Передача контроля блоку осуществляется через специальную команду — yield. Блочный подход делает код более читаемым и предсказуемым. За счет блоков код на Ruby легче поддается доработкам. - Многопоточность.
Руби способен выполнять несколько задач параллельно. Это повышает производительность программы. При этом многопоточность не зависит от операционной системы, так как потоки выполняются интерпретатором.
Преимущества и недостатки

У Руби есть несколько общих плюсов в сравнении с другими языками. Все они исходят из особой философии автора проекта.
- Принцип наименьшего удивления.
Юкихиро Матцумото проектировал свой язык так, чтобы программы на нем максимально отвечали ожиданиями разработчиков и выдавали как можно меньше “сюрпризов”. В идеале код на Руби должен быть приближен к обычной инструкции на английском языке. - Широта применения.
Хоть сейчас Ruby чаще всего используется в веб-среде и настройке серверов, это далеко не все, на что он способен. На нем пишут полноценные десктопные приложения и даже мобильное ПО. Ограничения, конечно, есть, но они незначительны. - Поддержка сообщества.
Руби — платформа с открытым кодом. Сами пользователи делают ее лучше. Один из главных принципов “рубистов” — программа должна быть структурированной и понятной с первого прочтения. При этом опытные программисты охотно идут навстречу новичкам и помогают им освоить все тонкости языка.
Все перечисленные плюсы языка, к сожалению, влекут за собой и очевидные недостатки.
- Невысокая производительность.
Первые версии Ruby отличались низкой скоростью обработки данных. Компилированные языки справлялись с этой задачей гораздо быстрее. В последующих релизах производительность Руби была повышена. Но даже сейчас для разработки RTA приложений, где необходима мгновенная реакция на действия пользователя, язык не применяется. - Нет обратной совместимости версий.
На такой шаг создатели языка пошли осознанно, чтобы платформа могла развиваться независимо от своего прошлого. В итоге проект, созданный на более ранних релизах, сложно перевести на новую версию языка без существенных доработок. Проблему представляет также то, что разные библиотеки языка могут быть несовместимы между собой.
Некоторые фреймворки и библиотеки Ruby могут не работать на определенных платформах, хоть сам язык и считается кроссплатформенным. - Ресурсоемкость.
Интерпретатор Руби затрачивает значительное количество ресурсов системы на обработку данных программы. По этой причине разработка на Ruby для маломощных процессоров фактически не практикуется. - Относительная сложность освоения.
Хоть синтаксис языка довольно понятен, новичкам часто бывает непросто освоить саму логику построения программ. Специалисты рекомендуют поработать с другими ООП языками перед изучением Ruby. После этого писать на новой платформе будет на удивление легко и приятно. - Работа с памятью.
Если говорить упрощенно, Ruby разбивает память на участки. Часто случается так, что некоторые из выделенных участков пустуют, и программа занимает больше места, чем могла бы.
Перспективы Ruby
Мем “Ruby мертв” давно распространен среди программистов. Но это лишь шутка. В реальности Руби пользуется спросом как у стартапов, так и у крупных компаний с именем. Первые выбирают технологию из-за относительно быстрой и дешевой разработки. MVP (минимально жизнеспособный продукт) на Руби можно собрать буквально за несколько месяцев. Большие компании делают сайты и приложения на Ruby из-за его стабильности и легкой доработки программ.
Можно предположить, что авторы языка продолжат совершенствовать производительность платформы, чтобы расширить возможности ее применения.
Примеры кода
Стандартная “первая программа” на Ruby выглядит максимально просто и занимает всего одну строку.
puts "Hello,World!"
Просто и изящно в Ruby выглядит вывод факториалов чисел от 1 до 10.
n = 1 10.times do |i| n *= i + 1 puts n end
Метод *= означает умножение с присваиванием результата правому множителю. То есть x*=y означает то же самое, что x=x*y. В примере строка n *= i + 1 будет равна n =n*( i + 1).
Из примера также видно, что переменная i объявляется прямо в начале цикла, а не до него.
Рассмотрим ввод данных с клавиатуры в Ruby. Для этого напишем код, вычисляющий площадь треугольника с заданными сторонами.
puts "Введите длину:" l=gets.chomp.to_f puts "Введите ширину:" w=gets.chomp.to_f area=l*w puts "Площадь треугольника равна #"Метод gets принимает значение с клавиатуры. Метод chomp необязателен, он переводит каретку ввода на новую строку.
Попробуем также написать собственные методы на Ruby. В нашем простом примере метод будет выводить на экран два слова. При этом первый раз аргументы метода мы зададим сразу, а во второй — при его вызове.
def demo(a1 = "Привет", a2 = "Мир") puts " #" puts " #" end demo demo "Hello", "World"
Метод всегда начинается с команды def и заканчивается командой end. Пустой вызов в пятой строке примера выводит заранее заданные аргументы из первой строки. В шестой строке мы сами задаем аргументы.
Заключение
Ruby — это язык, который, согласно высказыванию его создателя, “создан, чтобы сделать программистов счастливее”. Многие разработчики согласны с этим высказыванием. Благодаря легко читаемому синтаксису, динамической типизации и встраиваемым блокам код на Руби получается компактным и эффективным.
Фреймворк Ruby on Rails сделал язык популярным средством для разработки серверной части сайтов и задал общий стандарт для подобного рода фреймворков.
В ближайшее время Руби будет продолжать свое развитие, сокращая влияние недостатков и усиливая достоинства.
Почему стоит учить Ruby

Язык программирования Ruby создал разработчик Юкихиро Мацумото в 1995 году. Он полагал, что новый язык с простым синтаксисом, интуитивным дизайном и командами «сделает программистов счастливыми». Сейчас это 9-й по популярности язык разработки в Украине и 13-й — в мире. Вместе с Максимом Герасевичем, Ruby backend-девелопером в SoftServe, рассказываем, с чего начать изучение языка.

Особенности языка
Ruby создан как язык программирования общего назначения. Он высокоуровневый (в нем много абстракций), динамичный (типы данных определяются во время выполнения программы, что увеличивает скорость) и интерпретируемый (его не нужно компилировать в машинный код).
Максим: «Для изучения Ruby полезным будет любой опыт разработки, но лучше всего знать Python — из-за динамической типизации языка и похожего синтаксиса».
Ключевые черты
- Синтаксис, который легко читатьМаксим:«Синтаксис Ruby, в отличие, например, от Java, сильно упрощен, и в нем минимум символов. Например, в коде нет скобок и точек с запятой для обозначения конца команды».
- Реализация ООП-парадигмы В Ruby «все есть объект» — числа, строки и типы данных. Не-объекты — только управляющие структуры (набор служебных слов для управления программой). Действия в программе выполняют с помощью методов, которые вызываются на объектах. Например, нужно решить уравнение 3+5. Числа 3 и 5 относятся к классу Numeric. Чтобы сложить их, нужно добавить к классу метод plus. Таким образом можно расширять функции любого элемента в программе и добавлять аргументы к классам. В Ruby не бывает несовместимых типов данных, а методы добавляются в оригинальный класс без правки исходного кода. В большинстве ООП-языков нужно наследовать новый класс и добавлять к нему метод.
- Поддержка блоков Блок в Ruby — это группа из нескольких команд, которые можно добавить к методам с помощью выражения yield. Это помогает разработчикам быстрее переносить повторяющийся код.
- Обработка исключений Это механизм, который предотвращает ошибки. Когда случается исключение, которого нет в скрипте, выполнение программы останавливается. В Ruby, чтобы обработать исключение, в блоке, который может вызвать ошибки, используют «спасательную» фразу rescue. Если во время выполнения этого блока кода возникает исключение, управление передается в блок между командой спасения (rescue) и завершения (end).
Максим: «Например, программе нужно найти пользователя с id 123. Если в базе данных есть такой пользователь, программа выдает результат. Если в базе нет пользователя, чтобы программа не остановилась, мы “перехватываем” выполнение команды в блоке rescue, где прописываем необходимое действие».
Также при обработке исключений после команды rescue иногда добавляют команду ensure. Она отвечает за код, который будет выполнен всегда в конце блока исключений. Если программа не встретила ошибок при выполнении, то переходит не к завершению (end), а к инструкции блока ensure. Если найдена ошибка — программа сначала выполняет инструкции блока rescue, а затем — ensure.
курсы по теме:
Прикладная математика и статистика для Data Science
Бобровский Сергей
Data Scientist в отделении AI Platforms в Airbus
Data Science with Python
Кардаш Александра
Data Scientist в Shelf
Что такое Ruby on Rails
Ruby — скриптовый язык сценариев: сфера его применения ограничивается лишь фантазией разработчика.
С помощью IDE RubyMotion создают мобильные приложения для Android и iOS. Его применял Basecamp (инструмент для управления проектами) и геймдев-компания Doublespeak Games для мобильной ролевой игры A Dark Room.
Чаще всего Ruby используют с фреймворками. Например, фреймворк Chef применяют для управления серверами, а Vagrant — для создания виртуальных машин. Самый популярный — фреймворк для создания веб-приложений Ruby on Rails (RoR), который называют «рельсами».
Он реализован с помощью архитектуры MVC (model-view-controller). MVC позволяет разделить код на блоки. Модель взаимодействует с контроллером и отвечает за структуру приложения. Контроллер кодирует действия пользователя и обеспечивает связь между моделью и представлением (view), которое отображает информацию и изменения модели.
Также Ruby on Rails придерживается парадигмы convention over configuration (соглашение по конфигурации). Это принцип, по которому разработчику в большинстве случаев не нужно настраивать конфигурацию программы. Например, если в программе есть класс Customers, то соответствующая таблица в базе данных тоже автоматически получит такое название. Дополнительно прописывать название нужно только в случае переименования таблицы.
У Ruby on Rails есть тысячи готовых решений в открытом доступе — системы платежей, рассылок, авторизации. Сам проект легко масштабировать в многоязычный: во фреймворке есть файлы для отображения на разных языках и перевода терминов.
Ruby часто применяют в стартапах, потому что Ruby on Rails создавался как фреймворк для прототипирования сайтов. На нем можно быстро создать черновик проекта и увидеть его преимущества и недостатки.
Но RoR не настолько быстрый на серверной части, как, например, Node.js или Django. Еще один минус Ruby — потребление большого количества оперативной памяти. Если нужно написать базу данных, которая будет потреблять минимум ресурсов, — выбирайте С или C++, где параметры БД можно настроить детальнее.
Максим: «Чтобы понимать, как работает Ruby on Rails, лучше изучить статьи его разработчиков. После освоения фреймворка нужно работать с библиотеками, которые предоставляют функционал сайта. К примеру, аутентификацию пользователя можно сделать с помощью библиотеки Devise. Я применяю библиотеку Pundit, если нужно работать с рестрикшенами и ограничениями для пользовательского интерфейса и интерфейса администратора.
Также важно уметь работать с ActiveRecord ORM. Это прослойка между базой данных и кодом, реализованная на шаблоне проектирования приложений ActiveRecord. Она отвечает за представление бизнес-логики и данных — конвертирует рекорды с базы данных в объекты в Ruby».
