PHP

В чем php хуже js, почему его так ругают?

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

Проблема PHP - крайне низкий порог входа. И огромное кол-во неучей-говнокодеров, наивно считающих себя программистами. Именно масса порождаемого ими плохого кода поддерживает миф о том, что плох сам PHP.

Обрати внимание, кто именно и как именно ругает PHP.

Категория 1: те, кто PHP не знают, и оценивают язык не по собственному опыту, а по тем примерам говнокода, которые предлагают курсы Хауди Хо, Евгения Попова и прочих неучей, корчащих из себя гуру программирования.

Категория 2: те, кто последний раз использовал PHP лет 15 назад и с тех пор перешёл на другие языки. И критикуют они не современный PHP, а свои воспоминания о том PHP, который был 15 лет назад.

Категория 3: адепты Node.JS или Python - проповедующие превосходство единственно правильного языка.

Категория 4: неучи, умеющие кодить на Node.JS или Python и которые веруют в то, что PHP - плохой язык. Ведь им это адепт их языка проповедует.

А вот тех, кто понимает современные принципы написания кода на современном PHP и умеет их применять, среди критиков PHP почему-то не наблюдается.
АВ
Александр Воробьёв
60 858
Лучший ответ
Кактус, ну ты же не новичок в данной категории... Наверняка прошарен для чего JS и для чего PHP и чем они отличаются друг от друга
РК
Радик Косян
76 976
Хуже только тем, что JS можно использовать и на фронте, и в бэке, и на десктопе (боже упаси, для "электронщиков" отдельный котёл в аду), а PHP - только в бэке. Это единственный недостаток, если можно назвать недостатком. Микроскоп тоже плох тем, что им тяжело забивать гвозди.
Как правило, хороший инструмент, заточенный под конкретную цель, гораздо качественнее универсального, который может делать многое, но хреново.
язык реально дырявый с косяками и странностями но во первых все они такие а во вторых он единственный заточенный на веб разработку (не считая Node.js, ASP. NET, Java Servlet и прочий изврат) и на нем написано 80% сайтов на текущий момент нормально бегают и работают сейчас , и скорее всего будут работать в ближайшем будущем потому как на их создание потрачены внушительные суммы
ML
Maxim Lomakin
59 846
У них разная область применения, чтоб сравнивать. На PHP пишут серверную часть, а на JS клиентскую.
Дима Черников
Дима Черников
21 650
Эти языки работают по разному из за различной истории их развития и их различного назначения.
PHP - это тридцать лет развивающийся шаблонизатор с интерпретатором основанный на концепции процедурного и модульного программирования т.е. берется простой текстовый шаблон в нем размечаются участки в которых выполняются описанные в них процедуры (все просто понятно и удобно). Сам интерпретатор легко изменяется включением и отключением необходимых модулей для работы с графикой, видео или необходимой базой данных и прочими нужностями и полезностями.

Слабость или сила PHP в том что он не является отдельно работающий программой а является обработчиком шаблонов. т.е. если запустить скрипт на nodeJS то он запускается как отдельная программа ожидающая запросов в случае PHP идет запуск и интерпретация указанного шаблона после чего PHP завершает свою работу.
В случае возникновения ошибки в JS все сломается и остановиться в случае PHP один запрос будет ошибочным а последующие будут работать если конечного же не повторяются ошибочные условия.

Символом PHP очень и очень не зря является слон.
В современном PHP пытаются использовать концепцию ООП но ее реализация вызывает большие вопросы из за очень своеобразной реализации типов и механизма разрешения имен переменных в общем если образно слона одели в костюм белочки и говорят всем что это белочка. ООП в php это просто синтаксический сахар для тех же самых процедур с более запутанным разрешением обращения к именованным субъектам языка. Но тем не менее это сильно помогает с тем что в глобальной области видимости (а другой в PHP нету) находится 20 000 - 50 000 именованных субъекта к которым можно обратиться(вызвать).
Александр Воробьёв Вот про это я и говорю. PHP превратился из шаблонизатора в полноценный язык программирования с выходом PHP 3.0, но противники PHP продолжают из года в год тиражировать эту сказочку. PHP-шаблонизатор остался только в видеоуроках говнокодеров и в динозавре Wordpress. А в современных фреймворках код полностью отделён от шаблонов.

PHP давно уже используется в режиме непрерывно работающей программы - от демонов, работающих 24/7, до https://github.com/spiral/framework .

"Вызывающая большие вопросы" концепция ООП в PHP практически идентична концепции ООП в Java или C# - с учётом динамической природы PHP. ООП в Python или JavaScript вызывает куда больше вопросов.

Глобальная область видимости - сказка. Каждая подпрограмма, каждый класс, каждое пространство имён - отдельная область видимости.
Бекболот Абидинов >> Глобальная область видимости - сказка. Каждая подпрограмма, каждый класс, каждое пространство имён - отдельная область видимости.

Это работает только на уровне грамматик языка при выполнении все свалено в одну кучу. это как с типами в TypeScript они как бы есть но в реальности их нету. т.е. это слой абстракции для удобства пользователя и поиска логических ошибок.
Бекболот Абидинов >> с учётом динамической природы PHP ...
У PHP нет динамической природы он просто мимикрирует под использование динамических типов данных.
Переменные/данные в PHP всегда являются всеми типами сразу т.е. представленные таблицой где хранятся значения для строкового числового и ссылочного типа данных и никакой динамической типизации не происходит.
Бекболот Абидинов >> Непрерывно работающие демоны на PHP - это не сказка, а современное использование современного PHP. Без "копирования

Это не верное утверждение. Исполнение PHP это всегда отдельный поток порожденный родительским процессом (веб сервером или демоном или встроенным потоковым сервером PHP).

C 7,8 версий пхп работает со специальным менеджером который занимается управлением ресурсов и кешированием шаблонов синхронными-асинхронными запросами в операционной системе.

"Непрерывно работающие демоны" - это и есть этот менеджер.
Бекболот Абидинов >> интерпретатор обеспечивает контроль области видимости во время выполнения кода.

Не интерпретатор а только парсер и синтаксический анализатор при исполнении кода контроль не осуществляется.