Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

Преимущества интернет-сайта, веб-приложения на Ruby on Rails

Клиенты, заказчики сайтов, менеджеры по продаже сайтов периодически задают подобный вопрос: "А почему Ruby, Ruby on Rails? Какие преимущества? Все же пишут на PHP вроде как...". Все, да не все... Я и сам долгое время писал сайты на PHP, но ранее до этого были Perl, C++, Pascal, C и другие языки. PHP ничем не плох, мне эта система разработки вполне даже нравилась - множество возможностей, богатый функционал, меня не коробило даже различия в названии и синтаксисе методов и функций (что многие разработчики считают за значительный минус). Но как бы то ни было, Ruby - язык программирования, который значительно лучше того же PHP, удобнее, логичнее, красивый язык (что будет понятно наверное только программистам), мощный и удобный, Ruby on Rails - очень удобная и мощная среда разработки веб-приложений, написания интернет-сайтов. Это не объяснить просто словами и восхищенными высказываниями, это нужно понять - начать программировать на Ruby, вот тогда в полной мере можно осознать всю прелесть и мощь этого, поистине превосходного, языка программирования.

  1. Скорость Ruby. Как показали тесты, проведенные мной - Ruby 2 превосходит по производительности PHP 5.4 в 2 (!) раза
  2. Профессионализм разработчиков. Не менее важно, что язык программирования Ruby - не для новичков. Порог вхождения высок, поэтому программисты в Ruby, как правило, приходят после нескольких лет работы с другими языками программирования, имея за плечами уже достаточный опыт программирования. Средний возраст программиста на Ruby - 25 - 28 лет. Обычный начинающий Ruby on Rails программист - это опытный веб-разработчик, профессиональный программист с большим запасом знаний, опытом разработки проектов на любых других языках (и чаще всего нескольких -  что говорит также о высоком уровне профессионализма), пониманием принципов программирования и прекрасным пониманием веб-разработки в целом.
  3. Скорость разработки. Основным преимуществом языка программирования Ruby и фреймворка Ruby on Rails считается скорость разработки. Практика показывает, что скорость разработки проектов на RoR увеличивается на 30 - 40 процентов по отношению к любому другому языку программирования или фреймворку. В первую очередь прирост скорости разработки определяется обширным набором готовых к работе штатных инструментов RoR, колоссальным набором готовых решений в сообществе Ruby. Язык Ruby обладает логичным и мощным синтаксисом, что обуславливает простоту программирования на нем для профессионалов.
  4. Множество готовых решений Ruby, Ruby on Rails. Одной из важнейших частей культуры RoR является социальность. Решил проблему - помоги решить другим. Реализовал свой модуль, функциональность, алгоритм - поделись с сообществом. Таким образом, на данный момент в открытом доступе хранятся тысячи готовых решений тех или иных задач. Системы аутентификации, авторизации, комментирования, системы платежей, почтовые рассылки и многое другое (все то, что обычно разрабатывается «с нуля») внедряются реализованные кем-то другим, протестированные и рекомендованные многочисленным сообществом.
  5. Культура и стандарты. Ruby on Rails - полноценный, многоуровневый фреймворк для построения веб-приложений, использующих базы данных, который основан на архитектуре Модель-Представление-Контроллер (Model-View-Controller, MVC). Зачастую фреймворк не позволяет вам самодеятельность. Конечно же, в Ruby on Rails можно «изобрести свой велосипед» и программировать в любых направлениях, не опираясь на стандарты; но чаще всего этого не требуется. Стандарты размещения файлов в проекте, стандарты написания кода в проекте, общие правила программирования в Ruby on Rails сильно структурируют любой проект. За счет этого проект становится читаемым и понятным другим разработчикам, которые, возможно, будут сопровождать и развивать проект. Вхождение в проект новичков происходит очень быстро. Опыт показывает, что любой новичок в проекте в первый же день работы делает свои первые полезные правки. За счет этого не считается большой проблемой, если разработку проекта изначально вела одна команда программистов, а поддержку проекта или доработку - совершенно другая. Проект на RoR априори понятен любому разработчику RoR.
  6. Локализация. Ruby on Rails в базовой комплектации имеет средства локализации проекта. Вы можете предусмотреть необходимость поддержки различных языков на сайте как изначально, так и в дальнейшем. RoR умеет раздавать разные шаблоны для разных языков, содержит в себе конфигурационные файлы с переводами терминов и многие другие штатные инструменты для реализации локализации проекта.
  7. Проверка корректности входных данных. В Ruby on Rails прекрасно реализованы инструменты, позволяющие валидировать (проверять корректность) входящие данные. Пользователи заполняют формы и нужно проверить правильность ввода адреса электронной почты, наличие пароля или необходимую минимальную длину логина - штатные средства Rails позволяют это сделать.
  8. Безопасность. Ruby on Rails по умолчанию все настроено под максимальную безопасность проекта. При использовании инструментов RoR исключены SQL инъекции и XSS атаки. Все входные параметры экранируется по умолчанию. Выводимые переменные в шаблонах также экранируются, только если вы не указали обратной опции. У разработчика нет шансов допустить ошибки безопасности (не без исключений, разумеется).

При все этом существуют некоторые мифы и предрассудки о программистах Ruby и Ruby on Rails и проектах на этих системах.

  1. Разработчиков на Ruby on Rails нет. Разработчики есть, и их становится все больше, но они менее многочисленны, нежели разработчики, например, на PHP. Это связано с разным порогом вхождения в освоение технологии (обычно в Ruby попадают люди после нескольких лет PHP, профессионалы), что говорит о качестве разработчиков. Хороших разработчиков одинаково мало во всех технологиях. Тут можно говорить немного иначе - в Ruby гораздо больше настоящих профессионалов, в PHP - множество дилетантов. Так что в процентном соотношении количества профессинальных программистов Ruby не проигрывает ни одному языку программирования.
  2. Разработчики на Ruby on Rails стоят очень дорого. Разработчики высокого уровня стоят действительно дорого. Причем они одинаково дорого стоят на любых языках программирования и платформах. В RoR мало дешевых разработчиков из-за отсутствия плохих разработчиков (не без исключений, разумеется). К тому же не редки такие случаи, что приходится несколько раз заказывать один и тот же проект разным разработчикам на PHP (помним о том, что велик шанс наткнуться на дилетантов), затрачивая каждый раз некоторую небольшую сумму на каждую очередную попытку - так не лучше ли один раз заплатить за качественную разработку?
  3. Нет или мало площадок (хостингов) для размещения сайтов Ruby on Rails. На любом VDS-сервере абсолютно реально разместить хостинг RoR, при чем на одном VDS-сервере может быть размещено множество Rails-сайтов. При чем, как правило, при этом ваш сайт практически не зависит от ограничений, которые вводят некоторые хостеры.

Цитаты

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

Ruby on Rails и PHP — это как Apple Macintosh и PC. Нас мало, но мы элита. Ruby on Rails и PHP — это культура против хаоса. PHP позволяет вам построить свой велосипед из частей других велосипедов, не ориентируясь при этом ни на какую „велосипедную библию“. RoR—разработчики более продвинуты, чем любой школьник, которому достаточно прочитать одну книжку и говорить, что он знает PHP. Наш плюс в том, что при всем бардаке PHP, мы более организованны.

Мой опыт показывает, что в программах, написанных на Ruby, меньше строк, чем в аналогичных программах на языках Java и C#. А чем меньше кода, тем проще его сопровождать, что немаловажно, так как затраты на долгосрочное сопровождение считаются самой крупной стоимостной составляющей успешных программных проектов. Отладка небольших программ занимает меньше времени даже без „навороченных“ инструментов отладки.

Почему опытные разработчики корпоративных приложений вроде меня влюбляются в Ruby и Rails? Для удовлетворения предъявленных требований сложность решений, создаваемых с применением технологий Java и Microsoft, просто неприемлема. Излишняя сложность не позволяет отдельному человеку понять проект в целом и сильно усложняет коммуникацию внутри команды. Из-за упора на следование паттернам проектирования и зацикленности на производительности на этих платформах пропадает удовольствие от работы над приложением.

Ruby on Rails, не прибегая к насилию, принуждает программистов писать более структурированный код. Код на „рельсах“ даже без документации можно прочитать и осознать. Проект при этом проще поддерживать различным командам разработчиков. Проект не привязывается к определенному разработчику или команде. У следующих разработчиков проекта не возникает такое знакомое всем желание как "Ничего не понятно! Давайте все перепишем и переделаем по-нашему!"

Ruby — красивый язык. Кодировать на Ruby приятно. Все мои знакомые, перешедшие на Ruby и Rails, говорят, что стали счастливее. Главным образом, по этой причине Ruby и Rails изменяют статус кво, особенно в области разработки корпоративных приложений. Прежде чем стать приверженцем Rails, я привык работать над проектом с нечеткими требованиями, не имеющими отношения к реальным потребностям. Я устал выбирать между конкурирующими платформами и интегрировать их между собой, устал писать уродливый код. А Ruby — динамический, высокоуровневый язык. Код на Ruby проще читать и писать, поскольку он более естественно отображается на конкретную предметную область и по стилю ближе к естественному человеческому языку. Удобство восприятия имеет массу преимуществ не только в краткосрочной, но и в долгосрочной перспективе, поскольку программа передается в промышленную эксплуатацию и должна быть понятна программистам сопровождения.

В сообществе Rails нет места принуждению. David Heinemeier Hansson выбрал язык, который доставлял ему радость. Платформа Rails родилась из кода, который представлялся ему красивым. Это и задало тон общения в сообществе Rails. Все в мире Rails субъективно. Человек либо приемлет что—то, либо нет. Но между теми, кто приемлет, и теми, кто не приемлет, нет злобы, а лишь кроткая попытка убедить.

В начале своей карьеры веб-разработчика, я долго программировал на PHP. Как и любой программист, я дошел до того, что стал писать собственную CMS. Меня постоянно не устраивали те средства, которые предоставляет мне PHP и я придумал свой собственный небольшой фреймворк. В собственном фреймворке я реализовал все так, как мне было удобно. Какого же было мое удивление, когда я увидел Rails. Я понял, что Ruby on Rails очень похож на мой фреймворк, следовательно, в нем реализовали и допилили все то, чего мне так не хватало в PHP. Прибавим к этому огромное сообщество, которое постоянно обновляет рельсы — получаем инструмент, в котором просто удобно и хорошо делать любые веб-проекты. Свой фреймворк я бросил и с радостью перешел на RoR. Считаю, что Ruby on Rails делает программиста счастливее.