Показаны сообщения с ярлыком холивар. Показать все сообщения
Показаны сообщения с ярлыком холивар. Показать все сообщения

вторник, 19 мая 2009 г.

Django или Ruby on Rails

Вступление:
Для тех кто в раздумиях, что изучать Django или Ruby on Rails.

Мой ответ:
Ruby on Rails

Про языки:
Сами языки Ruby и Python сравнивать не буду. После Java и то и другое хорошо и лаконично :)

Раздумия:
Я сам думал над этим вопросом месяца 3-4 назад. Решил изучить Django после прочтения информации, что рельсы - это тормоза, а также, что Python - мега-язык программирования:).
Изучил базовый Python. Прочитал все базовые мануалы по Django на сайте(которые кстати активно сейчас пишутся). Создал своё приложение с нуля... и понял, что ну не хватает мне той модели работы с БД, которую они предлагают. Слишком она уж примитивная. Слишком мало хороших плагинов => долгая разработка проекта обеспечена. Да и как-то медленно у них всё развивается...
Модель рельс мне показалась очень симпатичной, нацеленной именно на продуктивную работу. Конфигурация БД под разработку, тестирование и продакшн чего стоит! Файлы для тестирования, которые генерируются сами(только файл, без тестов :)). Потом хелперы для вьюшек. Процесс разработки идет быстрее и проще, благодаря такой вот модели.

По пунктам:
  1. Гигантское количество действительно крутых плагинов для RoR. Это громаднейший плюс. Многие проблемы решаются установкой этих плагинов.
  2. Разработка "от ссылки" в Django. Это хорошо... для газетных сайтов. Если же ссылка не важна, то лишняя работа обеспечена, потому что без этой настройки ничего не заработает.
  3. Миграции в RoR против ручного обновления таблиц в Django. Это просто неудобно.
  4. Слабый и не всегда понятный ORM у Django. Наверное, blank=True, null=True многих вводит в легкий ступор. Но вообще это нормально. После Hibernate хочется и коллекции также мапить одним махом, однако увы... :)
  5. Django за 3 года обновился с версии 0.9.x до 1.0.x. Слабовато... Рельсы же скоро выйдут третьей версии;
  6. Встроенная возможность тестирования для RoR. Отдельная конфигурация БД для тестирования.
  7. Коммьюнити у RoR больше;
  8. Для RoR есть Aptana, на основе моего любимого тормознутого Eclipse :). Для тех кто не понял - есть удобнейшая IDE для работы именно с RoR. Для Python на эту тему есть только PyDev плагин;
  9. Хостинг для RoR найти проще, хотя вообщем-то всё равно такие проекты нацелены на виртуальные или dedicated сервера;
  10. Админка в django по-моему весьма сомнительный плюс. Её тоже надо пилить, причем весьма и весьма. Хотя да, она красивая. Для тех же рельс наверняка можно найти пару хороших плагинов.

Яндекс выбрал Django!"
Теперь попытаюсь объяснить почему Яндекс выбрал именно Django для пары своих проектов. Мне кажется, что Django при хорошей квалификации программиста предпочтительнее RoR. Он не такой груженный. А то, что нужно - программист допилит... тем более программист Яндекса. Ну и нагрузка тоже решает.

Выводы:
Когда делаешь стартап, то хочется, чтобы он заработал побыстрее. Нет ни нужды ни времени ковырять и пилить фреймворк. Ставишь 5-6 хороших плагинов и серьезный функционал в кармане. Вывод тут очевиден.

(update 22.05.2009)
Disclaimer:
Всегда хорошо изучить всё самому и принять собственное решение. Самый лучший вариант скачать и то и другое, потратить 2-3 недели на освоение обоих фреймворков и принимать решение хотя бы из интуитивных предпочтений(нравится/не нравится).