Курсы

Языки веб-программирования — Ruby on Rails или PHP?


Вам, должно быть, известны такие языки веб-программирования, как PHP и Ruby on Rails. На их основе существуют соответствующие фреймворки и технологии. Но перед тем как перейти к их сравнению, вам в первую очередь стоит понять, почему вы хотите выбрать ту или иную технологию. Все они строятся на базе различных библиотек и инструментов, имеют различные сообщества и предназначены для различных целей.

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

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

Языки веб-программирования — Ruby on Rails или PHP?

Ruby on Rails против PHP – Что лучше 1

Конечно, сравнивать языки веб-программирования PHP и Ruby on Rails может на первый взгляд показаться не совсем корректным. Все-таки PHP более популярен, чем Ruby on Rails. Ведь первый – это язык программирования, а второй, строго говоря, – всего лишь один из веб-фреймворков для языка Ruby. Правильней было бы сравнить Ruby on Rails с PHP-фреймворками, а именно с Zend Framework, CodeIgniter, Laravel, Symfony, CakePHP и другими.

Чтобы лучше понять, почему Ruby on Rails настолько популярен, давайте узнаем, что чаще всего ищут люди в поиске. Поможет нам в этом инструмент Google Trends.

Ruby on Rails против PHP – Что лучше 2

На этом графике можно наглядно увидеть, как в течение нескольких лет изменялась популярность запросов в гугле для тех или иных технологий. Можно также отметить, что популярность Ruby on Rails в определенный период времени была выше всех PHP-фреймворков, хотя в последнее время они идут примерно наравне. Среди всех PHP-фреймворков серьезный рост наблюдается исключительно у Laravel.

Но в чем же заключается неизменная популярность Ruby on Rails?

По большей части процесс создания веб-приложения заключается в выборе библиотек, способе организации приложения и многих других факторах. На сегодняшний день не во всех PHP-проектах используются полноценные и проверенные временем PHP-фреймворки. Многие PHP-разработчики предпочитают создать новый фреймворк, нежели использовать один из популярных фреймворков типа Zend или Symfony 3. В основном, это связано с относительной сложностью их освоения. Создатели Ruby on Rails в то же время пытаются упростить процесс изучения пользователями своего фреймворка, применяя концепцию «conventions over configuration» («ограничения вместе конфигурации»). Это означает, что вам практически не предоставляется свобода выбора, когда речь идет о запуске, организации и хранении приложения на хостинге.

По большей части, это хорошо. Именно поэтому Ruby on Rails пользуется такой популярностью. Однако многие PHP-фреймворки переняли эту идею и уже идут по стопам Ruby on Rails. Во многом, именно по этой причине рост сообщества Ruby on Rails за последние годы немного затормозился. В то же время стоит помнить о том, что PHP – это веб-ориентированный язык (этим объясняется относительно более низкая популярность некоторых PHP-фреймворков). То есть все, что пишется на PHP, обязательно работает в вебе. В то же время работая с Ruby, вы почти не сможете выбирать, какой код вы сможете писать для разработки веб-приложения.

Языки веб-программирования — Ruby on Rails или PHP?

Масштабируемость и простота обслуживания

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

Также существуют онлайн-сервисы, способные решать проблемы масштабирования. Это, в частности, Amazon Elastic Beanstalk и Rackspace Cloud Sites. Но все кардинально меняется, когда нужно перейти от простого желания к необходимости масштабирования. Когда у разработчика нет опыта в масштабировании приложения, проще всего найти онлайн-статьи, уроки и другие полезные материалы, чтобы этому научиться. Если речь заходит о масштабировании сайта, для PHP-разработчиков существует множество подготовленных ресурсов и материалов, в то время как для Ruby on Rails-разработчиков этот объем информации гораздо более скуден.

Что касается простоты обслуживания, здесь все зависит от организации приложения. Пока разработчик использует веб-фреймворк, обслуживание в целом будет проще. PHP предлагает широкий выбор веб-фреймворков, каждый из которых создан для конкретных целей. В то же время для Ruby выбор фреймворков (не считая Ruby on Rails) более ограничен.

Производительность и скорость

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

Ниже представлена диаграмма для простейшего приложения «Hello, world!». На ней отчетливо видно, насколько быстро работает PHP с точки зрения обработки запросов в секунду (помните о том, что это язык, ориентированный на веб-приложения). Однако при применении популярных full-stack веб-фреймворков производительность кардинально падает, и количество обработанных запросов в секунду для PHP-фреймворков приближается к количеству запросов, обработанных на Ruby on Rails.

На самом деле, все эти сравнительные тесты немного бессмысленны, поскольку производительность и скорость работы приложения определяют не только язык программирования и фреймворк. На них также могут влиять используемая система базы данных, механизмы кэширования и сетевые задержки (они могут снизить оба параметра в 10-100 раз). То, каким образом приложение было спроектировано, имеет гораздо большее значение, чем язык или веб-фреймворк, на базе которого оно было разработано.

Ruby on Rails против PHP – Что лучше 3

В целом, языки веб-программирования Ruby on Rails и PHP – одни из самых медленных языков, хотя Ruby потребляет больше ресурсов, чем PHP. Учитывая указанные проблемы с производительностью, создатели обоих языков предприняли множество попыток, чтобы снизить медлительность ежедневно используемых приложений к минимуму. Каждый из этих языков имеет несколько сред выполнения. В том числе такие базовые среды выполнения, как MRI (для Ruby) и Zend Engine (для PHP). Работа этих сред выполнения выполняется медленнее, чем у других языков.

Было предпринято множество попыток решить эти проблемы. Даже велась работа над тем, чтобы выполнять приложения на обоих языках в JVM (среде выполнения Java). Причиной этому была не только высокая скорость, но и возможность использования всех функций Java. Однако сам факт выполнения приложения на JVM не гарантирует того, что оно будет работать быстрее. Определенные процессы в JVM выполняются даже медленнее. Поэтому если вы хотите, чтобы ваше приложение работало как можно быстрее, выберите Rubinius (если вы используете Ruby) или HHVM (если вы используете PHP). Они разработаны для того, чтобы ваши приложения работали быстрее.

Но при этом есть один минус – у вас будет ограниченная поддержка платформ. В частности, эти два решения не поддерживают работу в Windows. Они также поддерживают не все функции, предоставляемые базовыми средами выполнения. Поэтому, чтобы убедиться в том, что ваше приложение будет работать в этих высокопроизводительных средах выполнения, вам придется внести изменения в его определенные части.

Затраты

Дефицит – основополагающее понятие в экономике. Если учесть, что на 10 PHP-разработчиков приходится один Ruby-разработчик, а задача проекта зависит от выбранного языка, у нас будет явный победитель с точки зрения затрат. Благодаря высокой конкуренции разработка на PHP, как правило, обходится дешевле. Если для вас, как для бизнесмена, затраты играют решающее значение, тогда ваш выбор очевиден.

Существует такая поговорка: «Сколько платишь, столько и получишь», но это совсем не значит, что нужно платить одну и ту же сумму за имеющийся опыт. Скорость изучения PHP довольно высокая. К тому же, многие PHP-разработчики чаще всего являются новичками в программировании в целом и в веб-разработке в частности.

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

Но зачем разработчикам нужно переходить на Ruby on Rails? Этот ответ будет таким же, как и для любого другого языка программирования, отличного от PHP. Любой другой язык (не PHP) ограничивает вас в том, какой код вы можете писать, а также в том, что будет доступно вам для работы. Благодаря этому для каждого конкретного языка появляется распространенный метод построения веб-приложений. К примеру, для C# существует ASP.NET, для Python – Django, для Node.js – Express, для Lua – Orbit и так далее.

Чтобы вам было более понятно, давайте представим, что у вас есть выбор – либо ориентироваться на массовую аудиторию, либо быть среди незначительного количества опытных профессионалов, объединенных одними целями. Самые популярные приложения целесообразно создавать на базе языков, которые пользуются самой большой популярностью. Именно поэтому PHP зачастую является целевым языком разработки. Такие приложения, как WordPress, Drupal, Magento и Facebook – всего лишь капля в море сотен и тысяч приложений, созданных на базе PHP.

Когда речь заходит о хранении ваших приложений на Ruby on Rails на хостинге, затраты могут запросто и быстро возрасти. Найти хостинг, который бы поддерживал Ruby-on-Rails-приложение довольно проблематично, а услуги компаний с известным именем довольно недешевые (начиная от 40$, заканчивая 500$ и выше). Существуют компании, которые предоставляют бесплатный хостинг, но при необходимости расширения их услуги будут стоить очень дорого.

Практически все компании, предоставляющие хостинг для приложений Ruby on Rails, также предоставляют PHP-хостинг. Некоторые из компаний, предоставляющих дешевый хостинг, поддерживают устаревшие версии Ruby, поэтому вы будете вынуждены работать с такими же старыми версиями Ruby on Rails. Зачастую ваше приложение будет работать на базе стандарта CGI, а это один из самых медленных способов работы веб-приложения.

Поддержка и ресурсы

У PHP огромное количество разработчиков и онлайн-ресурсов. Для Ruby on Rails тоже есть множество ресурсов онлайн, но для PHP их гораздо больше. Однако многие ресурсы, посвященные и PHP, и Ruby on Rails, чаще всего либо неактуальные, либо ненадежные. В обоих сообществах предпринимались попытки создания четких и подробных руководств.

К примеру, для PHP существует ресурс PHP: The Right Way, который позволяет новичкам избегать типичных ошибок, связанных с безопасностью, установкой, многоязычностью, практиками написания кода, тестированием и другими аспектами. В то же время, для Ruby существует целая коллекция подкастов и профессионального видеоконтента.

Также существуют такие сайты, как Stack Overflow, на которых есть большое количество актуальной информации. Для примера и в качестве статистики, на каждый заданный на этом ресурсе вопрос, касающийся Ruby on Rails (всего 276 тысяч вопросов), приходится почти четыре вопроса, посвященных PHP (1 млн. 93 тысячи вопросов). У самого рейтингового вопроса, посвященного Ruby on Rails, 1134 голоса и 347 тысяч просмотров, в то время как у PHP эти цифры гораздо выше – 3143 голоса и больше 456 тысяч просмотров. В то же время немного странным выглядит тот факт, что вопросов о фреймворке Ruby on Rails гораздо больше, чем вопросов о языке Ruby (всего 183 тысячи). И многие «странности», касающиеся Ruby on Rails, связаны не столько с языком и кодом, сколько с сообществом.

На самом деле, эта странность дала настолько мощный толчок, что для Ruby on Rails даже создали специальное сообщество Rails Girls, которое помогает женщинам создавать онлайн-приложения. Их целью является привлечение девушек и женщин к изучению этой мощной технологии. У PHP тоже есть аналогичный портал php women, который существует уже несколько лет. Но что ему определенно не хватает, так это той вирусной реакции и поддержки, которая была у Rails Girls.

Очень важно понимать, что популярностью фреймворк Ruby on Rails во многом обязан своему сообществу. Его создали несколько идейных специалистов, которые смогли, в конце концов, развить его в то, что сегодня имеет невероятно высокую рыночную ценность. И не так уж важно, что его скорость не такая уж и высокая, да и есть куда более крутые решения. Все больше и больше людей стремятся стать частью сообщества Ruby on Rails – и это имеет большое значение.

Время на развертывание

Поскольку языки веб-программирования PHP и Ruby on Rails интерпретируемые, они обеспечивают быструю разработку. В свое время для Ruby on Rails было выпущено известное видео, которое называлось «Создайте блог за 15 минут». Оно привлекло внимание многих разработчиков, использующих в работе различные языки. Это видео установило планку того, что должен уметь делать веб-фреймворк для быстрой разработки приложений. После этого было создано множество аналогичных видео для других языков и фреймворков, на манер «Создайте блог за 20 минут с помощью PHP CodeIgniter».

Еще одна особенность, характерная для Ruby on Rails, заключается в скаффолдинге. Это процесс автоматической кодогенерации, основанный на определенных известных параметрах. Скаффолдинг представляет собой мощнейший инструмент, который помогает вывести приложение на рынок. На PHP схожий функционал предоставляет фреймворк FuelPHP.

Редакторы и инструменты

Это тот аспект, в котором PHP опережает Ruby on Rails. PHP предлагает целый ряд редакторов и инструментов. Когда речь заходит о сопоставительном анализе (бенчмаркинге), профилировании и отладке, даже по количеству доступных вариантов PHP значительно превосходит Ruby on Rails. Совершенно ошибочно представление о том, что есть такие задачи, с которыми Ruby on Rails может справиться, а PHP нет. Однако есть такие задачи, с которыми оба справляются на отлично, а есть такие, с которыми они справляются по-разному (с какими-то проще, а с какими-то сложнее).

Большинство ограничений, связанных с PHP, касаются затрат на хостинг. Например, чтобы выполнять определенные задачи на PHP, вам необходимо иметь расширение, которое называется pecl. Многие поставщики совместного (виртуального) хостинга предоставляют небольшое количество таких расширений. Но свое установить у вас не получится. Поэтому, если вам нужно установить свое расширение, вам придется использовать виртуальный выделенный сервер, облачный сервер или выделенный сервер.

Хостинг на таких серверах стоит так же дорого, как и хостинг на Ruby on Rails, поскольку последний выставляет такие же требования. Поэтому большинство программных средств на PHP, разрабатываемых PHP-сообществом, вынуждено работать на более старой версии языка и на базе устарелого и убогого функционала, поскольку они разработаны для работы в средах совместного (виртуального) хостинга.

Фоновые задачи

Фоновая задача это то, что должно выполняться во многих приложениях с целью улучшения восприятия пользователем путем обеспечения высокой скорости отклика. Их выполнение может занять довольно длительное время. К примеру, если пользователь попытается удалить большое количество данных, приложение, возможно, захочет выполнить эту задачу в фоновом режиме. В таком случае пользователю не придется ждать завершения этого действия. Существуют также и другие способы выполнения фоновой задачи. К примеру, есть потоки (хотя это не самый лучший вариант, поскольку из-за них может зависнуть все приложение). Также есть асинхронные задачи, которые запускаются, но с задержкой, или могут одновременно запускать несколько маленьких составляющих операции. К другим решениям относятся выполнение задачи в другом процессе, на сервере или группе серверов.

Для Ruby on Rails потоки доступны «из коробки». Также есть множество Gem’ов (библиотек), разработанных для работы с Ruby on Rails. Workling, Starling, Resque и многие другие помогут вам в проектировании приложения, чтобы вы смогли запускать длительные процессы, скажем отправку электронного письма, расчет и даже запланированную задачу.

Для PHP же картина совершенно противоположная. Существует расширение pthread, но оно не предназначено для задач по типу «сделал и забыл» (например, для отправки того же электронного письма). Вместо этого вам придется предпринять несколько действий, которые вы запросто могли выполнить и на Ruby on Rails.

Первое, что можно сделать, это корректно разработать свое приложение так, чтобы оно работало параллельно с системой управления задачами. Для этих целей, например, есть Gearman, который является языко-независимым фреймворком для обработки задач. Он подключается к любому языку программирования, и все, что нужно вашему приложению, это связаться с ним через рабочую нагрузку, например, через отправление электронного письма.

Хотя фоновые задачи выполняются на Ruby on Rails очень просто, чаще всего они приводят к снижению производительности и к невозможности масштабирования приложений. Возможным решением, которое выбирает большинство разработчиков, является что-то типа Gearman (его, кстати, можно использовать и на Ruby on Rails). Однако это лишь показывает то, как легко можно отложить сложную составляющую своего приложения на более позднюю стадию выполнения проекта, когда она начнет создавать проблемы.

На PHP еще одним вариантом будет продолжать посылать запрос на веб-сервер, который будет просматривать, какую задачу нужно выполнить. Обычно эту функцию выполняет временной планировщик заданий типа cron, chronos, launchd, cronie и так далее. При разработке приложений на PHP чаще всего используются именно временные планировщики заданий.

Движки шаблонов

Движок шаблонов (шаблонизатор или система веб-шаблонов) предоставляет способ создания и повторного использования пользовательских интерфейсов, основанный на динамических данных. На PHP существует больше 50 движков шаблонов. Да и сам PHP можно использовать как шаблонизатор. Для Ruby действительно полезных движков шаблонов существует гораздо меньше. А если говорить о Ruby on Rails, то движков, которые бы уверенно работали с этим фреймворков, есть всего два или три.

Языки веб-программирования — Ruby on Rails или PHP?

Подведем итоги.

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

Плюсы PHP:

— Большое количество разработчиков
— Доступные решения
— Обширная база знаний
— Широкий выбор доступных инструментов
— Простота изучения

Плюсы Ruby on Rails:

— Быстрый выход на рынок
— Проще найти опытных специалистов
— Идейное сообщество
— Постоянное развитие

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

Ruby on Rails против PHP – Что лучше 4

Если вы хотите освоить PHP, базу данных MySQL, фреймворк Laravel, а также смежные технологии JavaScript, jQuery и Ajax, выполняя при этом реальные проекты (например, создание плагина и виджета для WordPress или разработка приложения адресной книги), то вам пригодится наша подборка премиум курсов для PHP-разработчиков.

Посмотреть обзоры курсов

Ruby on Rails против PHP – Что лучше 5

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

Посмотреть обзоры курсов

Какие бы языки веб-программирования вы не использовали, каким бы технологиям не отдавали приоритет, главное – начать. И тогда у вас все обязательно получится! Удачи!

Курсы
Курсы Cisco CCNA – Как успешно пройти сертификацию Cisco и начать зарабатывать?
Курсы
PHP OOP — Курсы объектно-ориентированное программирование 2017
Курсы
Курсы Angular 4 разработка реального приложения
There are currently no comments.