Язык программирования Ruby

Разбираем технические возможности и особенности изучения «языка стартапов»
5 минут1744

Ruby — язык программирования, бум популярности которого пришелся на 2006 год и был связан с выпуском фреймворка Ruby on Rails. Он позволяет быстро и с минимальной стоимостью создавать крутые веб-приложения. На Ruby написаны такие известные проекты как GitHub, Airbnb, Twitter, а также сам GeekBrains.

Ранее мы уже рассказывали об этом языке и профессии Ruby-разработчика. А сегодня попросили преподавателя факультета разработки на Ruby и Ruby on Rails Игоря Симдянова подробнее рассказать о технических особенностях Ruby и дополнительных знаниях и навыках, которые помогут стать успешным Ruby-разработчиком.

В чём особенности освоения языка Ruby?

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

Ещё одна особенность заключается в том, что циклические задачи почти всегда решаются при помощи итераторов, а сами циклы почти не используются. Код, в котором присутствуют точки с запятой или куча while-циклов, выдаёт в вас начинающего Ruby-разработчика.

Таких правил десятки — некоторые даже сложно удержать в голове, поэтому был разработан и даже автоматизирован в виде гема RuboCop Ruby Style Guide. Правила этого гайда предназначены для того, чтобы сделать код легко читаемым и максимально компактным с точки зрения Ruby-сообщества.

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

С каких языков проще всего переучиться на Ruby-разработчика?

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

Самый близкий по духу язык — это Python, причем версии 3. Далее идут PHP и Perl и вообще все интерпретируемые динамические языки программирования, которые популярны в веб-разработке.

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

Какие hard и soft skills нужны для успешной работы с Ruby и Ruby On Rails?

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

Во-первых, потребуется владение системой контроля версии Git. На мой взгляд, технология не самая простая для начинающих, однако без неё начать работать не получится.

Во-вторых, язык Ruby — кросс-платформенный, и его можно изучать на любой операционной системе. Однако Ruby on Rails — точнее, экосистема компонентов  (гемов) для него, сильно зависит от операционной системы. Для нормальной скоростной работы на Ruby on Rails и доставки результатов работы на сервер потребуется знание основ операционной системы Linux. И в реальной работе Ruby-специалиста, скорее всего, будет ждать Linux или MacOS.

Кроме того, Ruby on Rails очень завязан на базах данных. Для старта не требуется знать особенности и области применения всех современных баз данных — но опыт работы с одной реляционной базой нужен. Лучше если это будет PostgreSQL, но на самом деле подойдёт абсолютно любая реляционная база данных.

Сейчас веб-разработчики делятся по специализациям. Кто-то хорошо разбирается в backend-части: Ruby on Rails, базах данных, языке Ruby. Кто-то специализируется на frontend-части: визуальном представлении сайта с использованием языка JavaScript, его фреймворков, каскадных таблиц стилей CSS, языка разметки HTML. Если ваша цель — создание сайта в одиночку, то в какой-то мере вам придётся освоить хотя бы азы профессии frontend-разработчика.

Повторю, что всё вышеперечисленное не требуется для изучения языка программирования Ruby — это скорее требования для работы в качестве специалиста на Ruby on Rails.

Что касается soft skills, обычно к разработчикам не предъявляют каких-то особенных требований. Конечно, большим плюсом будет уверенный английский — чем лучше вы его знаете, тем больше источников обучения и рабочих мест будет вам доступно. Также, в связи с тем, что сейчас очень много удалённой работы, ценится умение поддерживать себя в тонусе, иметь заряд энтузиазма и горящие глаза, любопытство к новым технологиям, стремление пробовать и разбираться со всем, что будет встречаться на вашем пути.

Frontend, тестирование, DevOps — зачем это Ruby-разработчику?

Для начала карьеры в качестве junior-разработчика достаточно изучить сами Ruby и Ruby on Rails. Блоки по тестированию, frontend-разработке и доставке Ruby on Rails на сервер — это уже более углублённое обучение.

В Ruby-сообществе существует культ тестирования — то есть код не считается завершенным, если он не покрыт тестами. На собеседовании часто задают вопросы по тестированию, а на работе нужно быть готовым к тому, что к наработкам по проекту попросят написать тесты. В связи с этим в рамках последней четверти курса мы детально изучаем автоматическое тестирование в экосистеме Ruby, дотошно разбирая фреймворк RSpec, тренируемся писать тесты для ранее разработанных приложений и даже пробуем тестировать чужие приложения, примеряя на себя роль QA-специалиста по автоматическому тестированию.

Также у нас есть отдельный блок по frontend-разработке. В целом факультет Ruby on Rails строится с уклоном в backend-специализацию, однако студенты, которые хотят стать fullstack-специалистами, на этом курсе могут получить достаточно информации о работе frontend-специалиста.

Наконец, в курсе, посвященном доставке приложения на Ruby on Rails на сервер, мы будем осваивать основы системного администрирования и DevOps с уклоном в обслуживание приложений. Большая часть курса будет посвящена доставке приложений на Ruby on Rails на сервер и автоматизации этого процесса. Также мы познакомимся с CI/CD, Docker, даже затронем Kubernetes. 

Ruby on Rails — это инструмент для быстрого запуска стартапа в составе компактных команд разработки, а в стартапе вы должны уметь всё: программировать, тестировать, администрировать. Грубо говоря, вы должны суметь запустить новый Twitter двумя сотрудниками. Как мне кажется, эти три курса и готовят студентов к этому.

Ruby: полезные ресурсы для изучения

Из-за того, что бум популярности Ruby пришелся только на 2006 год, по нему очень мало литературы — все книги (в том числе и книга самого создателя языка Юкихиро Мацумото) издавались маленькими тиражами или не переводились вообще. Почти все, кто приходят в Ruby, изучают его в основном по англоязычным источникам, поэтому наличие уверенного английского долгое время было дополнительным барьером.

    Из изданной в России литературы могу посоветовать следующие книги:

  • «Язык программирования Ruby» Юкихиро Мацумото — увы, не переиздавалась, а потому она описывает устаревшую версию языка.
  • «Путь Ruby» Фултона Хэла и Арко Андре — это скорее сборник рецептов, а не учебник или энциклопедия, поэтому она подойдет как дополнительный источник, но изучить язык только по ней очень сложно.
  • «Head First. Изучаем Ruby» Джея Макгаверена — книга довольно специфическая, но, если вас не будет раздражать необычная манера изложения, для изучения языка она очень хороша. Правда из-за максимальной детализации она охватывает где-то 40% всей необходимой информации.

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

Новый поток обучения на факультете Ruby on Rails стартует каждый месяц — подробнее о факультете можно узнать из анонса факультета в нашем блоге и на странице факультета.

программированиеразработкаrubyruby on rails
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!