Справедливо ли обвинять Rails в «магии»? - PullRequest
6 голосов
/ 17 января 2009

Когда я впервые начал изучать Rails и Django, меня отвлекли от Rails разработчики Django, которые чувствовали, что Rails - это черный ящик, в котором используется избыток «магии» (неплотные абстракции). После дальнейшего изучения Rails мне интересно, не является ли это необоснованным предположением, основанным на незнании того, как выполнить настройку в Rails без использования скаффолдинга. Скаффолдинг сам по себе может показаться скрытым, но, как только вы поймете, как создать проект без него, Rails, кажется, будет настолько настраиваемым, как Django. Это недоразумение с моей стороны или со стороны "магических" критиков Rails?

Ответы [ 6 ]

10 голосов
/ 17 января 2009

Rails широко использует средства метапрограммирования Ruby, чтобы выполнить большую часть тяжелой работы за вас, но никакой магии нет - в конце концов, это всего лишь код и его можно понять, если уделить достаточно времени и усилий.

Строительные леса всегда предназначались лишь для быстрого запуска и выполнения операций CRUD на ваших моделях. Предполагалось, что строительные леса всегда будут заменены вашим реальным рабочим кодом.

5 голосов
/ 18 января 2009

Как вы думаете, Мерб? Это флаг разработчиков Rails, восстающих против слишком большого количества магии в Rails.

Rails 3 - это попытка сократить магию, затянуть множество частей Merb и очистить вещи.

Теперь действительно ли много магии? Может быть, но помни это. Rails - это, по сути, коллекция DSL (предметно-ориентированных языков), которые объединяются в качестве основы для веб-разработки. Вот почему это так чисто, это язык для маршрутов, для шаблонов или ORM и т. Д. Чтобы сделать чистые DSL, вы должны расширить Ruby, который требует хороших результатов, некоторого волшебства или метапрограммирования.

Django не делает этого, это не был бы путь Python. Это не лучше и не хуже, только заметно отличается.

Теперь вы спросили, не слишком ли много магии в Rails?

Помните Артур К. Кларк Третий закон предсказания : Любая достаточно продвинутая технология неотличима от магии.

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

Для меня я могу прочитать исходные тексты Rails и выяснить, что происходит. Конечно, это сложно в некоторых местах, но мне всегда удавалось пройтись по источнику, прочитать очень обширные модульные тесты и узнать, как это работает. Ядро также очень сложно, но мы не отказываемся использовать его на том основании, не так ли?

5 голосов
/ 17 января 2009

Я бы не принял рекомендацию Pythonista относительно Rails, равно как и мнение Rubyist о Django, если только они не продемонстрируют разумный уровень понимания обеих платформ, по крайней мере, и очень немногие могут это сделать *. 1001 *

Фреймворки имеют (по моему ограниченному пониманию на стороне Django) аналогичные архитектуры, но развиваются по-разному и используют преимущества разных языков.

Я бы согласился с тем, что в Rails довольно много «волшебства», а соглашение о сверхконфигурации является большой частью фреймворка. Я могу понять, как это может оттолкнуть эксперта по Python, и это, вероятно, справедливо - одна из сильных сторон Ruby - это возможности метапрограммирования, благодаря которым волшебство происходит. Возможно, из-за этого обычно кажется, что monkey-patching в Python представляется подозрительным, тогда как в Ruby это обычное дело. Не лучше-хуже, просто другое.

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

2 голосов
/ 18 января 2009

Может оказаться полезным потратить некоторое время на чтение прошлых ответов на варианты этого вопроса (например, я объяснил свой взгляд на него здесь ).

1 голос
/ 18 января 2009

Я думаю, что понятие «честный» здесь неверно. Это все дело вкуса. Я в ужасе от того, что rails monkey исправляет встроенные типы ruby ​​(приводя к таким вещам, как "5.days") Я считаю это волшебством. Некоторые рубины могут посчитать это надежной инженерией.

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

1 голос
/ 18 января 2009

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

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

Конечно, они действительно не должны ругаться, потому что я вполне уверен, что Джангос едят детей в Австралии.

...