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

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

1076
ПОДЕЛИТЬСЯ

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

 

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

Как уже было сказано, эти сравнения всегда незначительно спорные. Мы попросили 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 делает хорошо, он делает чрезвычайно хорошо. Выбор зависит от вас – сделайте его осознанно и выберите наилучший инструмент для работы.

www.webdesignmagazine.ru