Закрытый «камерный» митап с традиционным афтепати привлек чуть больше пятидесяти разработчиков. Три доклада и одна прямая речь основателя 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 — это различные интерфейсы для чтения данных и для их записи. Вместо того, чтобы все прогонять в двух направлениях, есть один путь для чтения данных и другой для записи. Все просто».
Антон Давыдов один из основателей Moscow.rb рассказал о языке со своей точки зрения:
«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? Нам кажется, что да. Если вы считаете иначе или хотите поддержать нашу любовь к этому объектно-ориентированному языку, то добро пожаловать в комментарии.
Комментарии (12)
dadyjo
29.03.2017 18:18+1" В Ruby не надо много думать" — не скажется ли это негативно на когнитивных способностях разработчика, не будет ли перекоса в мышлении, ведь программирование это такая область где нужно бежать со всех ног вперед и постоянно развиваться.
Dreyk
29.03.2017 18:19просто в руби не приходится думать над собственно процессом программирования, а не думать вообще
lookid
30.03.2017 09:53-4Если программист много думает, то он плохой программист, который не знает предметную область и не умеет работать. Программист вообще не должен задумываться при написании кода.
netologyru
30.03.2017 11:39-1Вот видите как мнения расходятся. Одни считают, что код надо писать не задумываясь, другие, что если думать мало, что это скажется на когнитивных способностях.
lookid
31.03.2017 10:24И это две крайности. В каждой из которых существовать не выгодно. Программист должен надуматься и настрадаться так, что когда выходит на продакшен, то пишет код и не задумывается над простыми вещами. Они сразу получаются правильно.
handicraftsman
29.03.2017 19:00+2Ещё один плюс, который стоит приписать к предпоследему: стандартная библиотека настолько большая, что редко когда обращаешься к сторонним (если только не нужен доп. функционал — вроде БД)
robux
30.03.2017 15:19+1Я о базовых классах на ЛОРе постоянно талдычу местным аналитикам:
https://www.linux.org.ru/forum/development/11473001/page4#comment-11484576
https://www.linux.org.ru/forum/development/11473001/page5#comment-11490216
https://www.linux.org.ru/forum/development/12013986/page3#comment-12024558
https://www.linux.org.ru/forum/development/12013986/page3#comment-12024560
https://www.linux.org.ru/forum/development/12013986/page3#comment-12019592
https://www.linux.org.ru/forum/development/13193871#comment-13198777
Правда, в последнее время в сообществе Ruby (как и в любом OpenSourse сообществе в последние годы) наметилась куча тревожных тенденций. Я не пойму: то ли выросло/выращено поколение хипстеров-лоботрясов, не сталкивавшихся с реальным производством, то ли корпорасты умышленно через своих агентов в сообществах (в ЦРУ например, как недавно выяснилось, есть целый департамент OSE, https://wikileaks.org/ciav7p1/files/org-chart.png) раздербанивает конструктивный процесс, разваливает СПО, уводит его в нерабочие направления. По поводу "новых веяний" в Ruby я тоже высказывался:
https://www.linux.org.ru/news/opensource/13123595/page1#comment-13127562
https://www.linux.org.ru/news/opensource/13123595/page1#comment-13127673
https://www.linux.org.ru/news/opensource/13123595/page1#comment-13127710
https://www.linux.org.ru/news/opensource/13123595/page1#comment-13128066
taujavarob
03.04.2017 14:56Если вы тот программист, который любит ООП — Ruby точно ваш выбор.
21 век на дворе. Какое ООП? (С)
GeMir
Интересно, а что говорит законодательство РФ об использовании слова «университет» в названии общества с ограниченной ответственностью? Спрашиваю потому, что родной ВУЗ, к примеру, не имеет права называться «Universitat», так как не имеет факультета юриспруденции.
arbox
Вопрос оправданный. Но пока нет необходимости выдавать диплом об окончании университета, никто на это строго смотреть не будет.