25 марта университет интернет-профессий «Нетология» совместно с сообществом ruby-разработчиков Moscow.rb провел митап на тему альтернативных решений в мире Ruby. Выясняем, есть ли нетривиальный Ruby и что-то кроме «рельсы», а также за что любить этот язык программирования.
Закрытый «камерный» митап с традиционным афтепати привлек чуть больше пятидесяти разработчиков. Три доклада и одна прямая речь основателя ruby-сообщества Антона Давыдова. Изначально и планировалась теплая ламповая атмосфера, в которой можно пообщаться и заодно узнать, насколько язык программирования Ruby популярен и важен для российского ИТ-сообщества.
Никита Шильников рассказывал о библиотеке ROM и фреймворке Hanami.
«Сейчас я предпочитаю собирать свой стек в проектах, это позволяет мне лучше понимать, как части приложения взаимодействуют друг с другом. Фреймворк должен оставаться открытым к модификации и не брать на себя «слишком много». А Hanami сразу разрабатывался с этим расчетом, и со временем становился все более открытым.
Когда меня спросили: «почему мы должны использовать ROM, а не взять Elixir и Phoenix», я понял, что лично для меня изучение нового языка программирования всегда сравнительно простой способ освоить новые подходы. Я могу использовать их в дальнейшем в работе на любом языке. Поэтому надо говорить «да» изучению новых языков. Моя цель в создании окружения на Ruby, которое не будет вынуждать менять стек только потому что он «уже не модный».
Как обычно, для изучения языка лучше всего написать какое-то небольшое приложение или библиотеку, это позволит посмотреть на инструмент под разными углами, лучше познакомиться с ним и начать работать над коммерческими проектами.
Если говорить о ROM, то это библиотека, которая призвана решить проблему работы со слоем хранения данных. ROM — это не ORM. Также же как библиотека Ecto для Elixir — это тоже не ORM. В общем, ROM и Ecto очень похожи. Задача, которую решает ROM — это отделение бизнес-логики приложения от метода хранения данных.
Говоря об основных принципах ROM, важно отметить следующее:
- В ROM нет глобального состояния. Это большой плюс для разработчика: есть возможность контролировать то, куда пробрасывается локальное состояние.
- В ROM почти все не мутабельно и нет публичного API, который приводит к изменению состояния. Вместо этого API просто возвращает новый объект. Это значительно снижает количество багов.
- В ROM на основании явного API строятся более высокоуровневые абстракции. Если нужно что-то очень кастомное, то наверняка можно найти точки расширения для решения конкретной задачи.
- И еще один принцип CQRS — это различные интерфейсы для чтения данных и для их записи. Вместо того, чтобы все прогонять в двух направлениях, есть один путь для чтения данных и другой для записи. Все просто».
Антон Давыдов, основатель ruby-сообщества и победитель Ruby Hero Russia Award 2016, еще более категоричен в выборе языка:
«Ruby для меня — это отличный инструмент, который позволяет получать максимум пользы от моего опыта разработчика и прокачивать скиллы. У этого языка одно из наиболее развитых сообществ, в котором поддержку и понимание найдёт как начинающий девелопер, так и опытный программист.
В Ruby много альтернативных решений, аналогов которым нет ни в одном другом языке. У всех на слуху фреймворк Ruby on Rails, но есть еще фреймворк Hanami, библиотеки ROM, Dry и Trailblazer.
Примерно 2 года назад я работал в небольшой компании, где не проводилось никаких тимбилдингов и прочих неофициальных мероприятий. В результате ты как будто живешь в информационном вакууме: тебе не с кем поделиться опытом и получить совет, всё профессиональное общение происходит в основном онлайн. Я решил, что с такой проблемой могут столкнуться многие разработчики, особенно те, кто работает удаленно. Создал сайт и твиттер Moscow.rb и начал проводить дринкапы в разных барах. Проект оказался удачным: встречи продолжаются уже 2 года, кому-то это даже помогло найти работу.
Многие думают, что программисты — это такие мрачные замкнутые ребята, которые сидят в своей башне из слоновой кости и не желают общаться с окружающими. На самом деле успех в разработке во многом зависит от коммуникации. Коммуникация создает среду, в которой развиваются технологии и рождаются идеи. Когда вокруг технологии существует здоровое комьюнити — новым разработчикам проще получить помощь, а опытным — прокачаться, получить фидбэк.
Многие слышали о ребятах из компании Evrone: они организуют Rails Club, проводят митапы в Рамблере. Я же стараюсь занять более нишевую позицию: делаю камерные мероприятия, где можно в комфортной обстановке пообщаться с известными в узких кругах разработчиками и обсудить насущные проблемы. На некоторых митапах у участников есть возможность проявить себя как спикера, понять, интересно ли расти в этом направлении и выступать на конференциях.
Если же говорить о целях — я понял, что мне просто приятно что-то создавать. Я хочу создать классное окружение единомышленников, здоровую атмосферу взаимопомощи, в которой будут рождаться новые идеи и каждый сможет профессионально развиваться.
Я core-разработчик Hanami, и для меня было делом чести запустить проект на базе этой технологии. Альтернативных решений в комьюнити по-прежнему остерегаются, поэтому я решил на собственном примере показать, как это работает».
Митап показал, что все устали от «рельсы» — известного фреймворка, который многие и ассоциируют с самим языком. Но что же на самом деле такое Ruby и за что его любить?
Ruby появился в далеком 1993 году, а первая официальная версия была выкачена спустя пару лет. Создатель языка Юкихиро Мацумото был энтузиастом программирования еще со времен студенчества, однако идея создания собственного инструмента появилась у него гораздо позже. Ruby создавался для написания простых и понятных приложений, потому что Юкихиро был фанатом ООП, поэтому не удивительно, что основной упор делался не на скорость работы программ, а на читабельность кода. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями.
Итак, за что любить Ruby?
- Код можно читать. Даже вслух, если вам очень хочется.
- В Ruby не надо много думать, разве что при обозначении переменных и выборе общего алгоритма. Тот самый случай, когда язык и прост, и сложен одновременно.
- Если вы тот программист, который любит ООП — Ruby точно ваш выбор.
- Искать ошибку? Нет, не слышал. Вы найдете ее в первых строчках кода, если он кривой.
- Интеграционные тесты вполне могут быть на русском языке. Если с иностранными языками у вас не сложилось — любите Ruby.
- Говорят, что ruby-сообщество одно из самых дружелюбных в мире. И форумы в том числе.
- Библиотеки для работы с текстом, данными и массивными очень мощные. А их краткость и ясность вызывают безграничную любовь. Библиотек, кстати, достаточно много и они актуальные — это хорошо.
- Скорость написания кода: начинаете проект, вписываете в Gemfile библиотеки, потом вас ждет настройка и всё — первая часть готова. Да-да, именно первая часть.
Достаточно ли этого, чтобы любить Ruby? Нам кажется, что да. Если вы считаете иначе или хотите поддержать нашу любовь к этому объектно-ориентированному языку, то добро пожаловать в комментарии.
Автор: Нетология