Написать пост

Django или Ruby on Rails: какой фреймворк выбрать?

Аватар Дмитрий Юрченко

Обложка поста Django или Ruby on Rails: какой фреймворк выбрать?

Вопрос выбора фреймворка часто встаёт перед стартаперами или программистами. Первые хотят, чтобы проект был основан на наиболее подходящем, трендовом фреймворке. Вторые хотят развивать свои навыки и применять знания в реальных проектах. Обе цели могут быть достигнуты путём ознакомления с веб-фреймворком. Мы перевели для вас материал о правильном выборе из этих двух альтернатив.

Змея или драгоценный камень

Основные различия между фреймворками заключаются в подходе к языку, философии и языках программирования, которые они используют. Философия Python «Есть только один очевидный способ решения задачи» противоречит гибкости, свободе и силе выбора Ruby.

Большинство новичков начинают программировать на Python. Самый первый взгляд на код Python заманивает тех, кто не знаком с языком. Его синтаксис просто идеален: нет точек с запятой, странных специальных символов или ключевых слов. Если вы еще не программировали на Python — попробуйте, вы не разочаруетесь. Код на Python будет выглядеть следующим образом:

			>>> django_apps = ['Pinterest', 'Instagram', 'Mozilla Firefox', 'National Geographic', 'The Washington Post']
>>>
>>> for app in django_apps:
...     print(app)
		

Синтаксис Python делает его подходящим для большинства проектов. Читаемость кода также упрощает присоединение новичков в команду разработчиков.

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

Прим. перев. Если вы захотите начать изучение Python, советуем обратить внимание на наши обучающие материалы по этому языку.

Ruby особенный. Его можно назвать экзотическим и изящным. Не удивительно, что этот язык был изобретен японцами. В его строках есть что-то исключительное, что вызывает интерес. И хотя код не так читаем, как на Python, синтаксис по-прежнему очень прост для понимания и изучения. Код на этом уникальном языке будет выглядеть так:

			ror_apps = ['Twitter', 'GitHub', 'Airbnb', 'Groupon', 'Shopify', 'SoundCloud']

for app in ror_apps  
  if app == 'Twitter' || app == 'SoundCloud'             
    next
  end
  puts app
end
		

В Ruby всё является объектами. Каждый тип данных относится к определенному классу со встроенными методами. То же самое относится к Python. Другой популярной особенностью Ruby являются «блоки». Используя их, вы можете изменить любой метод (даже встроенный).

Особенности фреймворков

Ruby on Rails и Django — это веб-фреймворки для реализации схемы Model-View-Controller. Этот шаблон разделяет проблемы разработки на три блока. Вот как это работает:

Django или Ruby on Rails: какой фреймворк выбрать? 1

В двух словах, все три компонента шаблона MVC — это просто классы с методами. Представим ,что мы создали простой блог:

  • Model представляет базы данных: профили пользователей, комментарии, сообщения и т.д.
  • View переносит данные в шаблон HTML и отправляет их в Controller.
  • Controller соединяет Model и View, обрабатывает пользовательские запросы и отправляет ответы обратно в веб-браузер.

В Django имя шаблона немного отличается и может смутить сначала. Это тот же MVC, но View называется Template, а Controller называется View. Таким образом, мы получаем MTV.

Расположение файлов

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

Django или Ruby on Rails: какой фреймворк выбрать? 2

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

Django или Ruby on Rails: какой фреймворк выбрать? 3

Продуктивность

И Ruby on Rails, и Django имеют так называемые «волшебные», готовые решения. Однако магия RoR намного превосходит всё остальное.

Когда разработчик Rails создает контроллер, его методы могут автоматически обращаться к переменным и наследовать методы другого класса. Ни эти классы, ни переменные не определены явно. Ruby on Rails просто добавляет их автоматически. Он также автоматически устанавливает маршруты внутри MVC.

Разработчик Django, напротив, должен явно определять переменные и классы импорта. Они должны использовать регулярные выражения (что-то вроде ^[A-Z]+[a-z\g]$) для определения маршрутов и URL-адресов. Разработчики Django должны полностью понять, как все работает внутри, чтобы настроить код.

Приятно полагаться на волшебство, когда вы хотите как можно быстрее запустить веб-приложение. Для новичков-программистов это самый простой способ понять, как работают веб-фреймворки. С другой стороны, это покажет только картинку в целом. Развертывание веб-приложения на Django поможет понять, как все это работает в деталях.

Производительность

Оба фреймворка основаны на интерпретируемых скриптовых языках. Это приводит к почти одинаковой производительности. Ранние версии Ruby, такие как 1.8 или 1.9.x, были низко производительными. В те дни Twitter перешел с Ruby on Rails на Scala, заявив, что «Twitter Search теперь стал в 3 раза быстрее». Но имейте в виду, что большинство компаний вряд ли достигнут такого же объема трафика, как Twitter.

Обычно Python считается немного быстрее Ruby. Некоторые люди могут спорить и ссылаться на сравнительное сравнение времени выполнения. Тесты показывают идентичные результаты с точки зрения производительности. Однако даже эксперты Ruby признают, что язык медленный. Хорошей новостью является то, что каждая новая версия языков программирования повышает производительность.

Документация и сообщества

Документация является личным предпочтением. Оба фреймворка хорошо документированы и организованы. Команды разработчиков Django Software Foundation и Rails проделали большую работу, чтобы документации были структурированными и удобными. Они похожи на простые книги, которые приятно читать.

Благодаря сообществам на StackOverflow и GitHub мы можем открыть Google и просто найти нужный код. Идея, которая придет вам на ум завтра, уже сегодня имеет готовое решение. Существует много программ, разработанных сообществом. Плагины могут помочь справиться с большинством задач.

Однако сообщества разные. Первоначально Ruby — это язык программирования общего назначения. Хотя существуют другие Ruby-структуры, такие как Sinatra или Lotus, большая часть Ruby относится к Rails. И Rails — это среда веб-разработки.

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

Что выбрать?

Django и Python

  • Если вы знаете, что делать.
  • Если вы привыкли все делать в срок.
  • Если вы считаете, что документация — лучший друг программиста.

Ruby on Rails

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

Заключение

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

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

Следите за новыми постами
Следите за новыми постами по любимым темам
20К открытий20К показов