Проигрывает ли PHP Node.js в качестве бэкенд-решения?
PHP и Node.js - две крупнейшие технологии, используемые в бэкенде веб-приложений. PHP - самая старая из них и является лидером рынка на протяжении последних нескольких десятилетий. Node.js, с другой стороны, является новичком, но быстро становится одной из самых любимых технологий разработчиков во всем мире.
В 90-х и начале 2000-х годов PHP и JavaScript представлялись как принципиально разные технологии. Первая будет заниматься "мозгами", а вторая - манипулировать DOM и создавать динамичные и эстетически привлекательные веб-страницы.
Но в какой-то момент разработчики стали рассматривать JavaScript как язык общего назначения. Его синтаксис и универсальность сделали его хорошей стартовой площадкой для начинающих разработчиков и отличным инструментом для быстрой разработки приложений и скриптов. Так родился Node.js, и неожиданно язык, предназначенный для фронтенда, стал универсальным решением для веб-разработки.
Что такое PHP?
PHP - это рекурсивная аббревиатура от PHP Hypertext Preprocessor. PHP - это серверный скриптовый язык с открытым исходным кодом, созданный специально для веб-разработки. Хотя изначально он задумывался исключительно как язык серверных сценариев, многие разработчики стали использовать его в качестве универсального языка сценариев.
Представим это следующим образом. Представьте себе, что веб-страница похожа на человека: когда мы взаимодействуем с кем-то и этот человек разговаривает с нами, миллионы инструкций передаются из мозга в рот. В этой аналогии мозг - это сервер, а PHP - набор инструкций, которые говорят мозгу, что он должен делать.
Facebook, Wikipedia, Slack, Tumblr - вот лишь некоторые из наиболее известных веб-страниц, использующих PHP в качестве основного бэкэнд-решения. Учитывая их стабильность и широкое распространение, легко понять, почему PHP выдержал испытание временем.
Нельзя сказать, что этот язык не имеет противников. Как гласит история, PHP начинался как инструмент, облегчающий кодирование на языке C, но он все рос и рос, пока не стал самостоятельным. Однако написание инструмента для личного использования сильно отличается от написания языка программирования, поэтому PHP страдает от несогласованности и неудачных дизайнерских решений.
Но как же он может быть таким популярным и в то же время иметь такую плохую репутацию? PHP делает то, что задумал: в конце концов, на момент своего появления PHP был чрезвычайно дружественным по сравнению с другими вариантами. Однако в нем по-прежнему много тонкостей, и извлечь из него максимум пользы довольно сложно, особенно по сравнению с более новыми языками.
В целом, PHP по-прежнему управляет 80% Интернета. Такие фреймворки, как Laravel, пользуются огромной популярностью, и с каждой новой редакцией PHP становится все более удобным в использовании. Более того, знание PHP является одним из основных навыков, необходимых для приема на работу в качестве штатного back-end-разработчика.

Почему Node.js?
Node.js - это среда выполнения JavaScript на стороне сервера с открытым исходным кодом, построенная на JavaScript Engine (V8) браузера Chrome. Обычно JavaScript выполняется только в браузере, но с помощью Node.js его можно выполнять независимо, что открывает возможности для создания приложений, основанных только на JavaScript.
Node.js был создан как альтернатива модели клиент/сервер, при которой сервер реагирует на запрос клиента только для того, чтобы затем закрыть соединение. Node.js создает двусторонний мост, который может устанавливать интерактивную связь между сервером и клиентом, достигая низкой задержки и высокой пропускной способности.
Node.js используется для создания быстрых и масштабируемых приложений и представляет собой событийно-ориентированную, неблокирующую модель ввода-вывода. Все это означает одно из самых сильных преимуществ Node.js по сравнению с PHP - его асинхронность. Что это означает?
Представьте себе ресторан, где официант, приняв заказ, не может больше ничего делать, пока не доставит его на стол. Это не так, верно? Обычно официант обслуживает несколько столов одновременно, он может убирать столы, подавать напитки и выполнять другие трудоемкие задачи, пока готовится заказ.
Синхронные решения, такие как PHP, - это такой ресторан, где официант не может ничего сделать, пока не будет подан заказ. По сути, каждая строка кода выполняется по порядку, независимо от того, сколько времени требуется для ее решения.
Node.js, с другой стороны, не обязательно ждать разрешения: он может продолжать выполнять сценарий, ожидая, пока функция что-то вернет. Так, например, если серверу необходимо получить доступ к базе данных, он может выполнять другие действия, не связанные с данными, пока ожидает их.
Что все это означает? Огромный прирост производительности, иногда доходящий до 50%.
Находится ли PHP на грани исчезновения?
Нет, Node.js не убивает PHP. Бесспорно, PHP устарел по современным меркам, поскольку некоторые его логические схемы основаны на том, как работал веб 25 лет назад, что не обязательно плохо.
Например, встроенная в PHP поддержка баз данных практически бесшовная, во многом благодаря тому, что технология баз данных SQL остается относительно стабильной с прошлого века. В отличие от этого, Node.js следует современной тенденции модульности и полагается на библиотеки для связи с базами данных.
Активно ведется работа над PHP, и миллионы веб-страниц по сей день опираются на этот скриптовый язык. Многие из них не собираются менять свой бэкенд в ближайшее время, поскольку затраты труда и усилий значительно превышают возможную выгоду, по крайней мере в краткосрочной перспективе. Мир по-прежнему нуждается в PHP и может извлечь из него много пользы.
С другой стороны, если и есть технология, достойная того, чтобы выступить против двухдесятилетнего института, то это Node.js. Это надежное бэкенд-решение, которое быстро развивается, что является одним из преимуществ такого огромного сообщества и базируется на одном из самых популярных языков программирования на планете.
Проще говоря, Node.js ближе к требованиям современной индустрии, поскольку он легче масштабируется, более легкий и дружелюбный в среде облачных вычислений. За исключением очень специфических случаев, трудно не рекомендовать Node.js для нового бизнеса или нового проекта.


