Дапамажыце dev.by 🤍
Падтрымаць

«В Ruby-сообществе люди больше думают про бизнес, а не про код»

17 каментарыяў
«В Ruby-сообществе люди больше думают про бизнес, а не про код»

Лидер минской .NET user group Роман Бугаев в новом проекте сменил C# на Ruby — и не остался разочарованным. В преддверии RubyConf 2017 Роман поделился с dev.by своим видением Ruby и рассказал, почему многим разработчикам стоит попробовать этот язык.

Читать дальше...

Фото: Андрей Давыдчик

Чем хорош Ruby: гибкость, инфраструктура, сообщество

— Я работаю с компанией Payfort, где мы занимаемся проектом по процессингу карточных транзакций — приёмом платежей от Visa и MasterCard. Это аналог Stripe, но для стран Среднего Востока: Саудовской Аравии, ОАЭ, Египта, Катара. Проект работает в режиме стартапа: он небольшой и в плане команды (нас четверо), и в плане нагрузок. Сейчас мы пытаемся найти нишу, много экспериментируем. Поэтому и выбрали Ruby — платформу, которая позволяет быстро и легко делать эксперименты, проверять их и делать на их основе выводы.

Главный плюс языка Ruby — его гибкость. Мы даже проводили эксперимент: стояла задача подобрать параметры для одного из банков, и над решением параллельно работали две команды, наша и ещё одна в Иордании. Коллеги использовали Java и PHP, и для подбора параметров им понадобилось порядка недели. Мы сделали то же на Ruby за день-два: просто заходили на продакшн, включали IRB-консоль и изменяли параметры в ней — без перекомпиляции, сборки, повторного деплоя. Банк делал вызов, мы проверяли, как работают параметры, и меняли их, если требовалось.

Роман Бугаев

Ещё один плюс — хорошая инфраструктура. Про Sinatra и Ruby on Rails и рассказывать не нужно — даже те, кто никогда не интересовался Ruby, знают, что эти фреймворки сделаны хорошо. Есть достаточно мощные ORM-системы — например, хорошо работает Active Record, хотя многие его недолюбливают. Ruby вполне подходит для построения «модных» систем на основе микросервисов, в которых смешивается код на разных языках: в нём есть поддержка gRPC (Google Remote Procedure Calls) и все необходимые сериализаторы, включая JSON и Protobuf. Подключать любые базы данных — и SQL, и NoSQL — тоже очень легко.

В Ruby on Rails очень хорошо реализован MVC: Мартин Фаулер, автор известных книг о паттернах и архитектуре ПО, когда-то говорил, что именно реализация в Ruby самая правильная и каноничная. Но опытных разработчиков это не удивит: её уже успели скопировать в разные языки, в том числе в C#.

Мы используем в проекте подход Infrastructure as Code: все серверы и балансировка сети прописаны в коде. В Ruby есть много хороших инструментов для такого подхода, конкретно мы используем Chef. Поскольку работаем с карточками, ещё один важный момент — безопасность. Тут у Ruby тоже всё хорошо: существует большое сообщество, которое выкладывает много кода в open source. Есть готовые инструменты, которые позволяют определить потенциальные уязвимости и найти для них патчи.

Одни и те же библиотеки можно использовать и близко к фронтенду, и в глубоком бэкенде — это очень удобно. Скачиваешь, например, во время развёртывания Terraform state с Amazon Web Services — и ничего нового подключать не нужно, для доступа к библиотекам используется RubyGems.

Ещё в Ruby отличные инструменты тестирования — и для юнит-тестов, и для интеграционных. Думаю, именно Ruby завёл моду на test-driven development, behavior-driven development и прочие -DD. Ещё один плюс — удобные DSL (domain specific languages). Их много, некоторые из них максимально приближены к естественным языкам — их вполне могут использовать непрограммисты, чтобы писать спецификации или даже изменять поведение продукта.

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

Прикладной инструмент с быстрым входом

Разговоры о том, что на Ruby не написано ни одного большого проекта — неправда. Тот же Stripe, стартап-миллиардер, с которым мы конкурируем, использует Ruby в качестве базового языка. Понятное дело, обрабатывать большие данные или держать огромные нагрузки на Ruby смысла нет, да и машинное обучение на нём не построишь — для всего этого лучше подойдут Go, Python или та же Java.

Ещё с предыдущей компанией мы всегда старались подбирать для каждой задачи правильный инструмент: если лучше подходит Java — берём Java, если .NET — .NET, то же самое с Go, Scala. Ruby при таком подходе очень хорош, поскольку у него несложная кривая обучения: через два-три месяца после знакомства с языком ты можешь довольно комфортно писать на нём любой код. Для входа в тот же C# понадобится намного больше времени.

Думаю, именно поэтому Ruby иногда называют «языком для хипстеров». Он очень хорош для быстрого старта: выглядит, как английский язык, работает при соблюдении минимальных правил. На Coursera есть куча курсов «Как начать стартап», и в качестве основы там часто берут Ruby. Если знаешь английский, то сможешь писать простые вещи почти без подготовки. Именно поэтому язык часто выбирают в качестве первого языка для входа в профессию.

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

Зато Ruby позволяет абстрагироваться от этих сложностей и сконцентрироваться на прикладных задачах. Сейчас мы в компании рассматриваем варианты написания отдельных сервисов на Go, но я думаю, что Ruby останется нашим базовым инструментом, поскольку с ним действительно очень просто. Там, где в большинстве языков потребуется 10-12 строк, в Ruby хватит трёх — и можно идти в продакшн. А весь хороший инструментарий, который я упоминал, позволяет легко организовать непрерывную доставку и непрерывную интеграцию.

Ruby — очень прикладной инструмент, кому-то он даже может показаться скучным. Но как шутят о PHPшниках, представителях одной из древнейших профессий веб-программирования: «Им настолько скучно думать про разработку, что они начинают думать про бизнес — и в итоге получаются фейсбуки и вконтакты». Думаю, с Ruby та же история.

Почему Ruby стоит попробовать (и как это сделать)

Разработка со временем становится всё более мультипарадигменной. Большинство популярных языков полнофункциональны, на них можно делать практически всё, и выбор конкретного языка становится делом вкуса. Разные базы данных, платформы, операционные системы — всё уживается в одном проекте. Моя предыдущая команда из 10 человек использовала в одном проекте 12 различных баз данных! А за счёт такой мультипарадигменности идеи одной платформы регулярно переходят в другие — и это интересно и полезно.

Я остаюсь лидером .NET user group, по-прежнему слежу за новинками в .NET. C# — очень мощный язык программирования, который значительно влияет на другие языки. В интернете даже шутят, что со временем все языки превратятся в C#. Но один из негативных моментов .NET — платформа очень сильно разрослась и требует от разработчика много знаний о себе. В Ruby-сообществе, как мне кажется, люди больше думают про бизнес, про то, как лучше сделать конкретную «фичу» — и не заморачиваются о том, как язык работает изнутри и как правильно писать код.

В целом, в Ruby я для себя не нашёл ничего нового. Здесь нет ни одного «вау», ничего по-настоящему необычного — в этом плане язык напоминает мне Go. Наверное, по нему даже ни одного PhD не написали, в отличие от какого-нибудь Scala с огромным количеством особенностей, которые удивляют, заставляют задуматься или даже переосмыслить подход к программированию. Но эта «обычность» — тоже преимущество: не надо тратить много времени, чтобы понять какие-то новые концепции, и ты не отвлекаешься от основных задач.

Моё первое знакомство с Ruby произошло через IronRuby: окружение, которое компилирует код на Ruby в .NET и позволяет запускать его на Windows. Едва ли кто-то хвалит этот интерпретатор, да и сами рубисты его не любят, но если кто-то из дотнетчиков хочет попробовать Ruby, начинать с него можно. А для джавистов, в свою очередь, есть JRuby. Можно написать маленькую библиотечку, подключить её к своему проекту и посмотреть, что получится. Плохо точно не будет: расширение кругозора — всегда хорошо.

Кстати, Microsoft поддерживает Ruby в Visual Studio и Visual Studio Code. Я пишу на Ruby именно в VS Code. Всё, что для этого потребовалось — установить плагины для поддержки синтаксиса. Попробовать Ruby просто – при случае обязательно сделайте это.

О трендах Ruby — в Минске

2 апреля на минской площадке Space состоится RubyConf 2017, где перед гостями выступят мировые звёзды разработки на Ruby и RoR. Подробнее — в нашем календаре.

Чытайце таксама
МЗС даў зразумець, што Беларусь можа і не адкрыць яшчэ два КПП, нават калі Польшча і Літва захочуць
МЗС даў зразумець, што Беларусь можа і не адкрыць яшчэ два КПП, нават калі Польшча і Літва захочуць
МЗС даў зразумець, што Беларусь можа і не адкрыць яшчэ два КПП, нават калі Польшча і Літва захочуць
13 каментарыяў
Python больш не самы папулярны на GitHub. Яго змяніў вельмі малады язык
Python больш не самы папулярны на GitHub. Яго змяніў вельмі малады язык
Python больш не самы папулярны на GitHub. Яго змяніў вельмі малады язык
7 каментарыяў
Беларусь стала самай папулярнай мішэнню для кібератак у СНД пасля Расіі
Беларусь стала самай папулярнай мішэнню для кібератак у СНД пасля Расіі
Беларусь стала самай папулярнай мішэнню для кібератак у СНД пасля Расіі
Кампаніі ПВТ працягваюць актыўна наймаць расіян у 2025
Кампаніі ПВТ працягваюць актыўна наймаць расіян у 2025
Кампаніі ПВТ працягваюць актыўна наймаць расіян у 2025
Рэзідэнты ПВТ працягваюць працаўладкоўваць замежных спецыялістаў, пераважна расіян. Таксама сёлета запатрабаваны спецыялісты з Украіны, Кітая і Казахстана. Пра гэта сведчаць дадзеныя Дэпартамента па грамадзянстве і міграцыі МУС.
3 каментарыя

Хочаце паведаміць важную навіну? Пішыце ў Telegram-бот

Галоўныя падзеі і карысныя спасылкі ў нашым Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.