Практический online-курс

Ответ на противостояние PHP и Node.js

phpnode

В предыдущей статье после десяти раундов мы определили абсолютного победителя.

Как уже было сказано, эти сравнения всегда немного спорные. Мы попросили Bruno Škvorc (PHP редактор на Sitepoint), и James Hibbard (один из JavaScript редакторов на Sitepoint) дать комментарии по каждому из раундов.

Вот их оценка…

Раунд 1: Начало

В 1ом раунде оценивали, как быстро вы можете создать страницу “Hello World” на каждом языке. Речь шла о времени, необходимом для настройки среды сервера.

По оценке Craig, PHP выиграл раунд, отчасти потому, что он “концептуально проще” и “более простой для новых разработчиков”.

Bruno:

PHP выигрывает в этом раунде только потому, что больше хостов упростили начало работы. Если большинство хостов не принимали во внимание необходимость использовать командную строку с Node и направлялись сразу в загрузки файлов и простую кнопку “перезагрузка приложения” в панели управления, они были бы равны. Синтаксис получения чего-нибудь для отображения на экране, гораздо проще в PHP – особенно для новичков в программировании.

James:

Я не вижу большой разницы между ними. Чтобы запустить скрипт PHP в вашем браузере, вам нужно иметь какой-то установленный сервер; запустить скрипт Node, у вас должен быть установлен Node, и, предпочтительно, веб-фреймворк, такой как express. Однако, как говорит Craig, PHP концептуально проще. Барьер входа в Node выше. Не спорю.

Раунд 2: Помощь и поддержка

Во 2ом раунде выясняли насколько легко получить помощь и поддержку по каждому языку. PHP выигрывает этот раунд, в основном из-за того, что он старше.

Bruno:

Он это не прокомментировал.

James:

Я согласен с этим. Node.js моложе, поэтому в настоящее время меньше доступной помощи. Однако это становится все менее и менее актуальным, так как Node взрослеет.

Раунд 3: Синтаксис языка

Раунд 3 сравнивал насколько легко понять и использовать синтаксис PHP и JavaScript. Craig присудил победу JavaScript в этом раунде.

Bruno:

Я категорически не согласен с этим выводом. Хотя у PHP есть свои “причуды”, в последнее время многие из них были исправлены, и многие странности будут удалены в новейшей версии. С другой стороны, есть это и это в мире JS.

Что касается 3го пункта (что вам не придется мысленно переключать режимы, потому что вы можете использовать JS на клиенте и сервере), я не согласен. Серверная среда полностью отличается от клиентской и нужно мысленно переключиться с одной на другую. Также есть новый синтаксис, который вы не можете использовать в браузере, и наоборот, так что это вроде как переключения языков.

Также я не согласен с 4ым пунктом (что с пониманием JS хочется использовать его больше). Имея опыт работы с JS и PHP в течение многих лет, я пришел к выводу, что чем больше я работаю с JS, тем меньше я его люблю – хотя это сугубо личные предпочтения.

James:

Я люблю JavaScript. Я знаю, что у него есть свои причуды и глюки, но ECMAScript 2015 исправит многое из этого, а также внесет интересные новые функции в язык. JavaScript мощный и гибкий, и может вместить много различных стилей программирования. В отличие от PHP, я люблю писать JavaScript. Node заслужил победу.

Раунд 4: Инструменты разработки

В 4ом раунде рассматривались доступные инструменты для каждой технологии. Node победил благодаря npm.

Bruno:

В то время как Composer был первоначально вдохновлен npm, то теперь он превзошел его. В отличие от npm, он не сломает систему, если вам придется установить две версии одной и той же библиотеки. Также в отличие от npm, Composer может установить рекурсивные зависимости, npm этого не может сделать – хоть это и то, что является абсолютно необходимым, и то, о чем нужно в первую очередь подумать тому, кто создает менеджер пакетов.

У npm также совершенно ужасные сообщения об ошибках, которые поймут только те, кто их написал. Наконец, npm не хорошо сработается с Vagrant и будет препятствовать вам начать работу должным образом – не говоря уже о том, что они не обращают внимания на желания своих пользователей. Вот ошибка, которая существует в течение многих лет, что делает его непригодным для использования в основном на Windows – пользовательская база, которую нельзя назвать незначительной. У PHP тоже есть ошибки, но не такие, что отвращают от себя ОС в течение многих лет.

Правда, Composer не в комплекте с PHP, но я не думаю, что так должно быть. Если кто-то, когда-нибудь создаст хороший менеджер пакетов для Node, надо будет пройти через бюрократический ад, чтобы перейти на него, не говоря уже о том, чтобы заставить людей сделать это. Кроме того, его установка – буквально одна строку в терминале, или загрузка программы установки.

Утверждение, что Composer не имеет особого влияния совершенно неправильно. Composer повлиял на всех новых PHP разработчиков с тех пор, как он был разработан, и на большинство старых, которым пришлось добавить его в свой рабочий процесс. Только потому, что было много пользователей PHP до существования Composer, не означает, что его влияние меньше. Он оказал огромное влияние. Заявления вроде “не имел большого влияния на сообщество” не должны быть сделаны без доводов.

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

James:

Я рад, что победа в этом раунде присуждена Node.

Я люблю npm. Его легко установить, легко использовать, и есть тысячи доступных пакетов для почти любой необходимости. Мне также нравится тот факт, что npm позволяет выбрать между глобальной и локальной установкой пакетов (в отличие от таких языков, как Ruby). Инструменты также превосходны. Я постоянно использую такие инструменты, как Bower и Grunt, и они увеличили мою производительность во много раз.

Стоит также отметить, что npm v3 доступен в бета-версии. Это решает многие вопросы, которые поднимает Bruno, такие как ошибка node_modules.

Цитата из всего противостояния: Разработчикам PHP, вероятно, захочется установить Node.js.

Раунд 5: Среды

Раунд 5 коснулся вопроса о месте использования и развертывании, и какие платформы и экосистемы поддерживаются. Craig не высказался полностью, но выглядит так, что он склоняется в сторону Node.

Bruno:

Craig сказал, что он сравнит силу PHP и Node (общую задачу веб-разработки), а затем говорит, что JS везде. Во-первых, мы сравниваем Node.js, а не сам JS. Во-вторых, мы сравниваем языки и среды, где они могут работать. Говорить, что обезьяна лучше, чем рыба, потому что рыбе не удалось подняться на дерево – просто глупо. Но и обезьяна, и рыба могут плавать, так что давайте сравнивать, насколько хорошо они делают это.

В среде веб-разработки, PHP выигрывает. Есть инструменты для десктоп разработки в PHP – и да, верно, вы, вероятно, не будет использовать их. Но вы, безусловно, будете использовать командной строку PHP.

James:

Опять же, я согласен с Craig. Несколько функций, которые делают Node.js таким популярным (скорость, масштабируемость, совместимость с JSON, низкое потребление ресурсов) также делают его подходящим для многих других применений, например, питание устройств IoT. Я имею в виду, кто не любит роботов?

Node также стал причиной таких проектов, как NW.js (среда выполнения приложения, основанное на Chromium и Node.js), который позволяет писать собственные приложения в HTML и JavaScript.

Раунд 6: Интеграция

Раунд 6 рассматривал интеграцию с базами данных и драйверами, и PHP выигрывает в основном из-за своего возраста.

Bruno:

Здесь ничья. PHP имеет возрастное преимущество, которое дает ему больше возможностей, но это также означает, что он страдает от некоторых устаревших интеграций, как расширение mysql – от которого мы только избавились в PHP7, но который был непригодным в течение многих лет.

James:

Не уверен, что я согласен с этим. Весь раунд смутно был сформулирован, и я надеялся увидеть примеры “старых, менее популярных технологий”. Это было бы также хорошей возможностью подчеркнуть один из больших плюсов Node – он работает с JSON. JSON является, вероятно, самым важным форматом обмена данными в интернете, а также lingua franca для взаимодействия со многими из последних NoSQL баз данных. JSON идеально подходит для потребления программами JavaScript, это означает, что, когда вы работаете с Node, данные могут поступать без необходимости переформатирования. У вас может быть один синтаксис из браузера к серверу с базой данных.

Раунд 7: Хостинг и развертывание

7ой раунд рассматривал насколько легко развертывать новые приложения на живом веб-сервере, и, по мнению Craig, PHP является явным победителем.

Bruno:

Ему нечего добавить.

James:

Это одна из областей, где Node должен многое наверстать. Каждая бюджетная веб-хостинг компания предлагает PHP пакет с MySQL. Чтобы увидеть какой-то результат, все, что вам надо сделать, это создать файл с расширением .php, вставить действующие операторы между <? и ?>, загрузить файл и указать ваш браузер на нем. То же самое не может быть сказано о Node. Есть, конечно, много вариантов для Node хостинг, но они неизменно требуют больше настройки и доступа к командной строке, что будет отталкивающим для начинающих. PHP выигрывает этот раунд, несомненно.

Раунд 8: Производительность

Раунд 8 сосредоточен на скорости; и, хотя это может часто сводиться к опыту команды разработки, Craig отметил преимущества Node на нескольких фронтах.

Bruno:

Достаточно много неправильных представлений. Во-первых, любое увеличение/уменьшение производительности зависит исключительно от опыта разработчиков и типа приложения. Но даже если это вас не убедило, вот некоторые мои аргументы:

PHP становится многопоточным встроенным сервером. Это позволит обойти внешний сервер полностью, но не рекомендуется. Есть также супер быстрые серверы, такие как Nginx, которые делают весь процесс запуска PHP и отправки запросов к нему незаметным.
Проекты как HHVM и Appserver добавляют мощные асинхронные и многопоточные аспекты к PHP, и PHP7 сам получает мощные обновления в этом разделе.
Продолжительность запроса приложения PHP усложняет вопрос, если вы ищете чистую скорость; но это тоже можно легко обойти, не только с Memcached и подобными решениями, как говорит Craig, но c такими как Ajax. Кстати – серверные JS приложения тоже имеют единственный запрос по умолчанию. Более того – эта продолжительность запроса также является преимуществом в том, что он восстанавливает приложение каждый раз, когда он используется, тем самым избегая проблем с памятью, очищая от мусора, и оставаясь чистым. Когда вы в последний раз использовали стабильное в работе приложение JavaScript как back end, так и front end?
Обсуждения производительности всегда приводили и будут приводить к следующему результату – ничья. (Если вы не имеете дело с Java – Java всегда проигрывает ;))

James:

Node расхваливается как хороший выбор для высокой производительности и приложений с низкой латентностью. Благодаря неблокирующему механизму ввода/вывода и движка Google Chrome V8, он стал синонимом слову “быстрый” и “масштабируемый”. В интернете есть многочисленные истории о том, как Node принес серьезный прирост производительности компаниям и привел к повышению продуктивности разработчика. Я рад, что победа в этом раунде за Node, но понимаю, что это спорный момент.

Раунд 9: Предпочтения программистов

В 9 раунде Craig говорил о предпочтениях разработчиков и присудил победу Node.

Bruno:

Вы, безусловно, искали информацию не там, Craig. PHP сообщество невероятно активное. В год проходит более 20 крупных конференций, и обсуждаются очень интересные темы. Застой закончился с появлением HHVM и PHP7.

Кроме того, я хотел бы сказать, что любопытно, что разработчики Node до сих пор не научились номеру версий (версия v0.12.5 на момент написания статьи), даже после 6 лет в разработке. Незрелость такого рода в сочетании с критическими, но игнорируемыми старыми ошибками, которые отчуждают – то, что отвернет любого серьезного разработчика от экосистемы языка программирования.

Мне не нравится Node. Моя неприязнь основывается на негативном опыте в основном из-за npm. Это может измениться в будущем, но сейчас, я полон страха и отчаяния каждый раз, когда я должен использовать Node в любом качестве. У всех нас есть свои предпочтения, но важно оставаться объективным и выбирать правильный инструмент для работы. Но также важно признать, что иногда выбор правильного инструмента влечет за собой неправильный выбор, потому что вы просто еще не знаете его. Так что не слушайте Craig. Не слушайте Jim. Не слушайте меня. Пробуйте – посмотрите, что работает, выясните, что легко использовать. В конечном счете, среда, которая заставляет вас быть продуктивным – лучшая, а не та, что дает вам миллисекунды меньше времени загрузки.

James:

Node хорош. Много инноваций сейчас создаются в Nodeland. Несмотря на то, что раунд предпочтений субъективен, я рад, что Node выиграл.

Раунд 10: Будущее

В 10ом раунде задумались о будущем языков, и Craig объявил ничью, так как похоже, что у них большое будущее.

Bruno:

Bruno пришлось уйти, чтобы редактировать статьи о PHP для SitePoint.

James:

James также вернулся к своей работе, но написал эти прощальные слова:

Ничья была справедливым результатом этого раунда. Node – восходящая звезда, но ему нужно очень постараться, чтобы свергнуть PHP.

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

Высоких конверсий!

14-03-2016

LPgenerator — профессиональная Landing Page платформа для увеличения продаж вашего бизнеса

  • Более 500 шаблонов в галерее
  • Инструменты оптимизации конверсии
  • Статистика и сквозная аналитика
  • CRM для работы с заявками и телефония
  • Визуальный редактор с расширенным функционалом
  • Быстрая техническая поддержка
  • Множество интеграций
  • Окупаемость инструмента — от 7 дней
blog comments powered by Disqus
copyright © 2011–2017 by LPgenerator LLC. Все права защищены
Запрещено любое копирование материалов ресурса без письменного согласия владельца — ООО "ЛПгенератор".