25 марта университет интернет-профессий «Нетология» совместно с сообществом ruby-разработчиков Moscow.rb провел митап на тему альтернативных решений в мире Ruby. Выясняем, есть ли нетривиальный Ruby и что-то кроме «рельсы», а также за что любить этот язык программирования.

image

Закрытый «камерный» митап с традиционным афтепати привлек чуть больше пятидесяти разработчиков. Три доклада и одна прямая речь основателя ruby-сообщества Антона Давыдова. Изначально и планировалась теплая ламповая атмосфера, в которой можно пообщаться и заодно узнать, насколько язык программирования Ruby популярен и важен для российского ИТ-сообщества.

Никита Шильников рассказывал о библиотеке ROM и фреймворке Hanami.

image

«Сейчас я предпочитаю собирать свой стек в проектах, это позволяет мне лучше понимать, как части приложения взаимодействуют друг с другом. Фреймворк должен оставаться открытым к модификации и не брать на себя «слишком много». А Hanami сразу разрабатывался с этим расчетом, и со временем становился все более открытым.

Когда меня спросили: «почему мы должны использовать ROM, а не взять Elixir и Phoenix», я понял, что лично для меня изучение нового языка программирования всегда сравнительно простой способ освоить новые подходы. Я могу использовать их в дальнейшем в работе на любом языке. Поэтому надо говорить «да» изучению новых языков. Моя цель в создании окружения на Ruby, которое не будет вынуждать менять стек только потому что он «уже не модный».

Как обычно, для изучения языка лучше всего написать какое-то небольшое приложение или библиотеку, это позволит посмотреть на инструмент под разными углами, лучше познакомиться с ним и начать работать над коммерческими проектами.

Если говорить о ROM, то это библиотека, которая призвана решить проблему работы со слоем хранения данных. ROM — это не ORM. Также же как библиотека Ecto для Elixir — это тоже не ORM. В общем, ROM и Ecto очень похожи. Задача, которую решает ROM — это отделение бизнес-логики приложения от метода хранения данных.

Говоря об основных принципах ROM, важно отметить следующее:

  • В ROM нет глобального состояния. Это большой плюс для разработчика: есть возможность контролировать то, куда пробрасывается локальное состояние.
  • В ROM почти все не мутабельно и нет публичного API, который приводит к изменению состояния. Вместо этого API просто возвращает новый объект. Это значительно снижает количество багов.
  • В ROM на основании явного API строятся более высокоуровневые абстракции. Если нужно что-то очень кастомное, то наверняка можно найти точки расширения для решения конкретной задачи.
  • И еще один принцип CQRS — это различные интерфейсы для чтения данных и для их записи. Вместо того, чтобы все прогонять в двух направлениях, есть один путь для чтения данных и другой для записи. Все просто».

image

Антон Давыдов один из основателей Moscow.rb рассказал о языке со своей точки зрения:

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

В Ruby много альтернативных решений, аналогов которым нет ни в одном другом языке. У всех на слуху фреймворк Ruby on Rails, но есть еще фреймворк Hanami, библиотеки ROM, Dry и Trailblazer.

Примерно 2 года назад я работал в небольшой компании, где не проводилось никаких тимбилдингов и прочих неофициальных мероприятий. В результате ты как будто живешь в информационном вакууме: тебе не с кем поделиться опытом и получить совет, всё профессиональное общение происходит в основном онлайн. Я решил, что с такой проблемой могут столкнуться многие разработчики, особенно те, кто работает удаленно. Создал сайт и твиттер Moscow.rb и начал проводить дринкапы в разных барах. Проект оказался удачным: встречи продолжаются уже 2 года, кому-то это даже помогло найти работу.

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

Многие слышали о ребятах из компании Evrone: они организуют Rails Club, проводят митапы в Рамблере. Я же стараюсь занять более нишевую позицию: делаю камерные мероприятия, где можно в комфортной обстановке пообщаться с известными в узких кругах разработчиками и обсудить насущные проблемы. На некоторых митапах у участников есть возможность проявить себя как спикера, понять, интересно ли расти в этом направлении и выступать на конференциях.

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

Я core-разработчик Hanami, и для меня было делом чести запустить проект на базе этой технологии. Альтернативных решений в комьюнити по-прежнему остерегаются, поэтому я решил на собственном примере показать, как это работает».

image

Митап показал, что все устали от «рельсы» — известного фреймворка, который многие и ассоциируют с самим языком. Но что же на самом деле такое Ruby и за что его любить?

Ruby появился в далеком 1993 году, а первая официальная версия была выкачена спустя пару лет. Создатель языка Юкихиро Мацумото был энтузиастом программирования еще со времен студенчества, однако идея создания собственного инструмента появилась у него гораздо позже. Ruby создавался для написания простых и понятных приложений, потому что Юкихиро был фанатом ООП, поэтому не удивительно, что основной упор делался не на скорость работы программ, а на читабельность кода. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями.

Итак, за что любить Ruby?

  • Код можно читать. Даже вслух, если вам очень хочется.
  • Ruby — тот самый случай, когда язык и прост, и сложен одновременно.
  • Если вы тот программист, который любит ООП — Ruby точно ваш выбор.
  • Искать ошибку? Нет, не слышал. Вы найдете ее в первых строчках кода, если он кривой.
  • Интеграционные тесты вполне могут быть на русском языке. Если с иностранными языками у вас не сложилось — любите Ruby.
  • Говорят, что ruby-сообщество одно из самых дружелюбных в мире. И форумы в том числе.
  • Библиотеки для работы с текстом, данными и массивными очень мощные. А их краткость и ясность вызывают безграничную любовь. Библиотек, кстати, достаточно много и они актуальные — это хорошо.
  • Скорость написания кода: начинаете проект, вписываете в Gemfile библиотеки, потом вас ждет настройка и всё — первая часть готова. Да-да, именно первая часть.

Достаточно ли этого, чтобы любить Ruby? Нам кажется, что да. Если вы считаете иначе или хотите поддержать нашу любовь к этому объектно-ориентированному языку, то добро пожаловать в комментарии.
Поделиться с друзьями
-->

Комментарии (12)


  1. GeMir
    29.03.2017 18:15
    +2

    Интересно, а что говорит законодательство РФ об использовании слова «университет» в названии общества с ограниченной ответственностью? Спрашиваю потому, что родной ВУЗ, к примеру, не имеет права называться «Universitat», так как не имеет факультета юриспруденции.


    1. arbox
      05.04.2017 16:52

      Вопрос оправданный. Но пока нет необходимости выдавать диплом об окончании университета, никто на это строго смотреть не будет.


  1. dadyjo
    29.03.2017 18:18
    +1

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


    1. Dreyk
      29.03.2017 18:19

      просто в руби не приходится думать над собственно процессом программирования, а не думать вообще


    1. lookid
      30.03.2017 09:53
      -4

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


    1. netologyru
      30.03.2017 11:39
      -1

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


      1. lookid
        31.03.2017 10:24

        И это две крайности. В каждой из которых существовать не выгодно. Программист должен надуматься и настрадаться так, что когда выходит на продакшен, то пишет код и не задумывается над простыми вещами. Они сразу получаются правильно.


  1. handicraftsman
    29.03.2017 19:00
    +2

    Ещё один плюс, который стоит приписать к предпоследему: стандартная библиотека настолько большая, что редко когда обращаешься к сторонним (если только не нужен доп. функционал — вроде БД)


    1. 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


  1. herr_kaizer
    29.03.2017 20:00
    +3

    Пост ни о чём.


    1. netologyru
      30.03.2017 11:41
      -2

      Спасибо и за такое мнение.


  1. taujavarob
    03.04.2017 14:56

    Если вы тот программист, который любит ООП — Ruby точно ваш выбор.

    21 век на дворе. Какое ООП? (С)