вторник, 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 недели на освоение обоих фреймворков и принимать решение хотя бы из интуитивных предпочтений(нравится/не нравится).

15 комментариев:

  1. Хотел в начале указать на некоторые неточности и ошибки в тексте. Но после прочтения последней строчки, как-то расхотелось - стало понятно, что тут концептуальное глобальное заблуждение у автора.

    ОтветитьУдалить
  2. Александр, я думаю не только мне, но и остальным будет очень интересно услышать какие-то более конкретные доводы. Особенно с вашим-то опытом.


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

    ОтветитьУдалить
  3. В принципе, моей целью было показать читателям на чём(по-моему мнению) можно быстрее разработать небольшой стартап с достаточно небольшим опытом или временем. Fast start, короче говоря. Я сам хотел разрабатывать стартап на Django по каким-то своим соображениям, но в виду наличия готовых и подходящих нам наработок на RoR, был выбран именно он.

    ОтветитьУдалить
  4. Понимаете, количество плагинов для того или иного фреймворка совсем не определяет быстроту старта и получения готового продукта. Не бывает так, что взял всего по чуть-чуть и получил нормальную систему. Это миф. Если уже на то пошло, то надо сравнивать качество предоставляемых компонентов. А их количество по большому счету это не характеризует.

    Гораздо важнее для того чтобы быстро въехать - это наличие документации, адекватность сообщества и вообще доступность для понимания концепций как руби, так и питона.

    Т.е. вы не теми критериями определяете доступность того или иного инструмента.

    ОтветитьУдалить
  5. По тем критериям, что вы привели мне сложно оценивать RoR и Django.

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

    Языки Python и Ruby я не могу оценивать. По моему это личное дело каждого, что ему удобнее. В Python я въехал относительно быстрее, чем в Руби, но это связано с моим предыдущим опытом кодирования. Конечно, я не могу оценить какие-то вещи, типа, а как Ruby/Python работают под нагрузкой, как у них дела с потоками, как там работает GC и т.д. Но для небольшого проекта такая информация несущественна.

    Документация и там и там есть. И её достаточно, чтобы начать нормально разрабатывать.

    При изучении RoR столкнулся только с проблемой недоступности их главного сайта http://rubyonrails.org/ на несколько дней. Причина тому была то ли ошибка, то ли вовремя неоплаченный домен.

    ОтветитьУдалить
  6. > По тем критериям, что вы привели мне сложно оценивать RoR и Django.Ну это всё-равно что сказать - "я в машинах не разбираюсь, но буду по цвету их сравнивать. Красная лучше!":-)

    > Но для небольшого проекта такая информация несущественна.Но вы не ставили задачу изучения А или Б в небольших проектах, а рассматривали ситуацию в общем. По крайней мере вы это не указали. Да ещё и Яндекс тогда зачем в пример приводили?

    > Причина тому была то ли ошибка, то ли вовремя неоплаченный домен.Вот это и есть адекватность.

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

    Успехов вам!

    ОтветитьУдалить
  7. >Я считаю, что когда вы пишите что-то открыто, тем более на популярные темы, то должны нести ответственность за то что вы говорите. Иначе получается не честно по отношению к неопытным читателям, которые начинают верить в мифы, что очень опасно при освоении технологий.
    >Успехов вам!

    Спасибо! Учту замечания. И вам тоже успехов! :)

    ОтветитьУдалить
  8. Здравствуйте.

    1. Спасибо Михаил за статью- с интересом почитал, т.к также стоит проблема выбора, хотя пока и абстрактно.
    2. Также интересует возможности фрамеворков синтегрироваться с java, т.е сравнение RoR с JRuby и Django с Jython.
    3. Александр Кошелев -по вашим комментам можно предположить, что вы на голову выше этой статьи и кроме критики никаких своих доводов и мыслей для публики здесь приводить не собираетесь. Про красную машину- смешно:) но может вы снизойдете и до Ваших доводов на subj?

    ОтветитьУдалить
  9. Здравствуйте.
    1. Спасибо Михаил за статью- с интересом почитал, т.к также стоит проблема выбора, хотя пока и абстрактно.
    2. Также интересует возможности фрамеворков синтегрироваться с java, т.е сравнение JRuby и Jytthon.
    3. Александр Кошелев -по вашим комментам можно предположить, что вы на голову выше этой статьи и кроме критики никаких своих доводов и мыслей для публики здесь приводить не собираетесь. Про красную машину- смешно:) но хочется услышать и Ваши мысли на subj.

    ОтветитьУдалить
  10. Моё мнение о RoR остается крайне положительным. Во всяком случае сейчас почти готов наш стартап(где-то на 70%). Потом я напишу подробнее.

    ОтветитьУдалить
  11. Попытался описать мой путь исследований Java vs Grails vs RoR vs Django: http://dgango.blogspot.com/
    В нем одна из ссылок на хорошее, правда давно писанное сравнение Django и RoR: http://www.vaporbase.com/rails-django

    ОтветитьУдалить
  12. Наверное, вы заметили, что Java тут даже близко не конкурент :)
    Grails - это мертвяк, по-моему. Также, как и Groovy.

    ОтветитьУдалить
  13. >Хотел в начале указать на некоторые неточности и ошибки в тексте. Но после прочтения последней строчки, как-то расхотелось - стало понятно, что тут концептуальное глобальное заблуждение у автора.
    -----
    Полностью поддерживаю. Отпало всякое желание что-либо "объяснять". Не тот уровень автора. Но психологически, состояние понятное. Многие через это прошли. Это проходит по мере роста опыта.

    ОтветитьУдалить
  14. @Анонимный
    Мои доводы были конкретны. Вы же не приводите никаких доводов, кроме того, что у меня "не тот уровень". Извольте тогда хотя бы подписываться кто вы сами и каков ваш "уровень".

    ОтветитьУдалить