В чем выражается удобство разработки на ROR?

Добрый день.
Постоянно слышу, что разработка на рельсах - одно удовольствие. Мол быстро, красиво, удобно. Ради интереса на выходных почитал доки по руби и рельсам. Сел и написал простое приложение - стандартный бложек (статьи + разделы + комментарии).

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

Судя по всему, я просто не умею его готовить. Либо пытаюсь использовать его не по назначению, либо не тот подход.
Пожалуйста, подскажите, что я делаю не так? Где можно найти толковое объяснение философии работы с этим языком/фреймворком? Хочется иметь список того, с чем нужно разобраться, что бы понять красоту этого инструмента.
  • Вопрос задан
  • 615 просмотров
Решения вопроса 2
Jeiwan
@Jeiwan
Во-первых, Рельсы — это просто Руби. Все достоинства Рельс вытекают из достоинств Рубей. У Руби довольно хороший АПИ, в котором присутствуют решения для большинства программистских рутинных задач — это очень удобно.
Во-вторых, Рельсы — это набор хорошо спроектированных гемов. Не нравится что-то? Можешь выкинуть или заменить. Никто не заставляет использовать все компоненты Рельс.
В-третьих, Рельсы — это хороший пример возможностей ООП Рубей.
В-четвертых, convention over configuration. Новички называют это магией, но для более-менее опытного руби-программиста в этом нет никакой магии. И благодаря этому подходу, опять же, удалось избавить программиста от постоянного рутинного выполнения одних и тех же, "операционных", задач. Другой пример, демонстрирующий этот принцип, — Backbone и Angular: в Бэкбоне нужно много рутинных задач решать (даже не решать, так как это примитивные задачи, а просто каждый раз прописывать их) самому, а в Англуяре эти задачи уже решены.
В-пятых, Рельсы — вполне зрелый инструмент решения задач веб-разработки. Он уже давно вышел из хипстерской стадии, и вместе с этим ушло большое количество людей, которых привлекают только модные, находящиеся у всех на слуху, технологии. Рельсы (как и Руби) до сих пор развиваются и не собираются умирать.
В-шестых, эстетика и лаконичность Руби. Лично я не вижу никакого смысла в излишних кавычка, скобках, точках с запятой. Не за чем визуально засорять код второстепенными элементами. Языки программирования постепенно становятся более социальными, более доступным людям — и это правильно.

Но это всё дело вкуса, в большей степени. У вас уже сложилось свое видение языков программирования, вам теперь кажется, что отсутствие типов — это недостаток. Лично я считаю, что это неправильно. Это такая же ситуация, как когда ты начинаешь чем-то заниматься (играть на гитаре, например) и изначально делаешь что-то неправильно (постановка пальцев), то у тебя эта вредная привычка закрепляется и потом мешает дальше развиваться. Тебе трудно становится переучиться на другое, так как ты уже сильно привык к этому, неправильному, способу. Я не говорю о том, что строгая типизация это неправильно, нет, дело в другом. Есть разные парадигмы программирования, есть разные подходы к программированию, и хороший программист должен владеть ими (ну или стремиться к этому) и не ставить какой-то из них во главу угла. Главное, не какой язык, а что на нем можно делать, какие задачи решать.
Ответ написан
Комментировать
@CAMOKPYT
Это просто немного замедленное восприятие, так всегда бывает, когда рельса была действительно на порядок круче это был 2008-2010 год, за это время ASP.NET 5 вышел без привязки к венде и Laravel для пыхи и еще много чего мелкого, что уже не делает рельсу такой ультро мега крутой. По мне так сравнение впечатлений от рельсы в первый раз точно такие же как от техники эпл, все кругом говорят что она мега крутая, ты покупаешь мак бук и..... это обычный ноут, со своими плюсами и минусами. По мне так крутость рельсы это целостность и COC, переходя с каких-нибудь Symfony и ASP.NET кажется что все слишком упрощено и негибко, а оказывается что все сделано именно так чтобы работало сразу без траты лишнего время на доп абстракции и решало 90% задач, а магия это проблема на первое время, к сожалению, её надо выучить, большинство вещей проверяется в рантайме, это и конвенции рельсы отчасти от отчасти проблема всех скриптовых языков. Просто регулярные вопросы о крутости рельсы это что называется перерекламировали, ожидать чего-то невероятного не стоит.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
kumaxim
@kumaxim
Web-программист
Первое и самое главное - код Ruby значительно легче читать, в сравнении с тем же PHР
Второе - в Ruby все, вообще все, являются объектами, отсюда продвинутый полиформизм.
Третье - часть паттернов GoF уже реализованы на уровне языка, например те же процедуры(proc) и лямбды(паттерн Template Method, если именно для них)

А далее есть очень много мелочей, которые позволяют просто быстрее читать код. Из примеров "if(a !== b) { ... }" против "unless a == b { ... } " Первый фрагмент на php, второй - ruby. Делают они одно и тоже - выполняют операцию, если "а" не равно "b", но второй случай читается легче, на мой взгляд. И таких мелочей в языке очень много...

Курс по Ruby есть на CodeAcademy, как я считаю весьма неплохой. Для ознакомления языком подойдет. Мне хватило его, чтобы полюбить Ruby. В сравнении с PHP я считаю что Ruby более удобен и отдаю ему предпочтение.
Ответ написан
viktorvsk
@viktorvsk
Удобство выражается в наличии стандартного решения практически на все случаи жизни с хорошей документацией. За счет, как вы уже подметили: конвенции, гемов и стандартного воркфлоу (генераторы, ассеты, деплой, миграции, консоль...)

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

А все эти вещи про символы, строки и синтаксис - это все несущественная фигня.

Хотите увидеть удобство рельс ? Найдите стартап с инвестициями и гибкими требованиями на начальной стадии, где нужна существенная работа на бэкэнде и фронтэнде одновременно.
Ответ написан
@caution
Не особо ясно чем смущают вас символы в связях? Нужно понимать, что связи в первую очередь реализуются на уровне БД, а символы в моделях это - элементы ORM, и зачем собственно валидации типов в языке с динамической типизацией ?
1) следует разобраться с чем, что такое ORM.
2) понять как устроен Ruby.
3) понять как работают MVC фреймворки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы