Pull to refresh
0
Skillbox
Образовательная платформа Skillbox

Как я отказался от Ruby в пользу Python, работая над бэкендом

Reading time 4 min
Views 18K


Перевели для вас статью Бенуа Зен, разработчика ПО в компании Sqreen. Бенуа работает над backend веб-сервиса и недавно перешел с Ruby на Python.

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

Веб-сайт, который стал бы лицом сервиса, должен был быть быстрым, эффективным и простым в управлении. Примерно в то время появилось демо-видео Ruby on Rails «Как создать блог за 15 минут», после чего основатели твердо решили работать именно с ним.

Skillbox рекомендует: двухлетний практический курс «Я — веб-разработчик PRO».

Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».


Через несколько недель им понадобилась помощь, и они обратились ко мне.

Как многие разработчики моего поколения, я работал с PHP и Mysql, иногда даже добавлял свою лепту в open source CMS. В задаче мне было все очень хорошо знакомо, кроме, собственно, Ruby. Я о нем даже никогда не слышал (не забываем, речь идет о 2008 годе, примечание переводчика). В общем, я стал работать с Ruby и последующие десять лет провел именно с ним.

Почему Ruby?


Дело в том, что это очень экспрессивный язык. Главный его создатель ставил своей целью сделать программистов счастливыми при работе с Ruby. И он добился своего. Практически любой элемент здесь является объектом. Виртуальная машина Ruby переводит синтаксис в реальную инструкцию. Она постоянно улучшается, так что сгенерированный код становится лучше с каждой новой версией. Ruby легко анализировать, что-то изменять или даже создавать специализированные интерфейсы.

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

В своей компании Sqreen я работал с Ruby над backend. Но потом, довольно быстро, пришло решение использовать Python.

Любить Ruby, но перейти на Python, почему?


Во-первых, наш backend представляет собой связку из нескольких сервисов, часть которых открыта миру, часть — нет. Первое, что видит клиент, — корпоративный статический сайт, который генерируется при помощи Jekyll. Затем открывается панель инструментов — это динамичное React-приложение. Панель работает с выделенным API, мы его называем «backend для внешнего интерфейса». Он у нас основной.

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

К сожалению, Rails оказался слишком медленным. Конечно, он не единственный, существует масса микрофреймворков для Ruby, включая известный Sinatra.

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

Начало работы с Python


На этом этапе у меня почти не было опыта работы с Python — раньше я писал на нем лишь небольшие скрипты, которые помогали общей реализации проекта. Мне пришлось быстро все осваивать и ускоряться в разработке API, над которыми мы трудились. К счастью, базовые компоненты не зависят от того, какой язык вы используете: HTTP/HTML/JSON/REST — все они остаются прежними. Возможность приложений обмениваться данными с вебом на более низком уровне реализована на Ruby с использованием Rack. Как оказалось, у Rack многое взято из Python, так что работать не было очень уж тяжело.

Но что насчет языка? Ruby — объектно-ориентированный язык, Python тоже объектно-ориентированный. Но все же разница между этими двумя языками значительна. Так, Ruby описывает блоки с использованием ключевых слов, в Python для этого применяются пробелы. К этому нужно было привыкнуть, причем мне больше нравится путь Ruby с его begin/rescue/end. Тем не менее, Python позволяет писать более эффективный код, работающий быстро.

Что лично я сделал для того, чтобы побыстрее разобраться в синтаксисе Python? Основное — начал практиковаться с Python Koans, это проект с открытым исходным кодом, который позволяет изучать Python, предоставляя все более сложные модульные тесты.

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

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

Совет тем, кто хочет перейти на Python


Если вы — Ruby-разработчик, который размышляет о том, чтобы перейти на Python, просто сделайте это, вам может понравиться. Правда, необходимо помнить о том, что прежде, чем перед вами начнут открываться новые возможности, придется освоить немало особенностей языка. Хорошая точка старта — интерактивный туториал и документация. Кроме того, обучение должно подкрепляться практикой, стоит сразу начать реализовывать реальное приложение.
Skillbox рекомендует:

Tags:
Hubs:
+2
Comments 11
Comments Comments 11

Articles

Information

Website
skillbox.ru
Registered
Founded
Employees
501–1,000 employees
Location
Россия