Хватит говорить, что PHP мертв

Это не так. PHP не умер. Он жив, и до “конца жизни” ему еще очень далеко. На этом все. Как бы некоторые ни хотели, чтобы он исчез, этого не произойдет. По крайней мере, в обозримом будущем уж точно.
Эта статья пролежала в моей папке для неопубликованных достаточно долго. Время от времени я вносил правки то тут, то там, но все никак не мог определиться со временем публикации. Но вот релиз PHP 8 наконец показался мне подходящим моментом.
Каждый месяц мне попадаются статьи, комментарии, или твиты, в которых говорится, что PHP умирает, и нам пора прекращать его использовать. Если кто-то задает вопрос на каком-либо форуме или на Stack Overflow касательно изучения PHP, с вероятностью почти в 100%, кто-то ответит что-то вроде: “Зачем вам изучать PHP? Потратьте время на что-нибудь стоящее, например <здесь-должен-быть-ваш-замечательный-язык-который-не-php>”.
На протяжении последних 20 лет, помимо других языков, я писал код на PHP (на самом деле, может быть и дольше. Я точно не помню, когда я начал это делать), и большую часть времени я просто игнорировал эти высказывания. И все эти годы PHP “умирал”, и я должен был бросить его использовать уже очень давно. Я отнюдь не претендую на звание эксперта ни в одном языке, которые я использую, и в PHP есть еще много вещей, в которых мне не мешало бы разобраться, но снова и снова я возвращаюсь к нему.
Я потратил много часов на изучение других языков, на что меня подтолкнули случайные, убедительно написанные статьи критикующие PHP. И я признаю, что эти приключения естественно были в высшей степени полезны для меня как для разработчика. Хотя я, вероятно, никогда не буду использовать многие из этих языков профессионально, я чувствую, что расту как программист, изучая другой язык.
Главная мысль, которую я хотел бы донести в этой статье: “выучить другой язык” — идея очень хорошая, но не потому, что “php умирает” — это просто неправда. Вы должны учить другие языки, потому что они будут полезны для вас как для программиста. Если бы PHP действительно умирал, то, конечно, у вас была бы еще одна (достаточно веская) причина двигаться дальше, но прямо сейчас, в данный момент, он не умирает.
Один из первых аргументов многих PHP-программистов, которым они будут парировать, отстаивая свой выбор, — это статистика, демонстрирующая, насколько PHP популярен в сети. Хотя эти цифры очень интересны, я склонен полагать, что они немного вводят в заблуждение. Было бы неправильно игнорировать тот факт, что львиной доле этой популярности PHP обязан WordPress. Любить его или ненавидеть, решать вам, но WordPress — причина, по которой мы все здесь. Но WordPress… такой… WordPress. У него много (действительно много) недостатков, но я знаю (и дружу с) множеством людей, которые создают много удивительных вещей — и зарабатывают большие деньги — с помощью WordPress.
PHP — это не WordPress. И, хотя WordPress увековечен в истории PHP, PHP лучше, чем WordPress — НАМНОГО лучше. В WordPress много чего не так, как и в PHP, но это не значит, что он не подходит для всех проектов. Я, вероятно, не стал бы писать свои веб-приложения на C++ (или, по крайней мере, он не стал бы ПЕРВЫМ среди языков, рассматриваемых для работы над этими проектами), но это не делает C++ плохим языком. Он просто не подходит для этой работы, точно так же, как я бы не стал использовать PHP для написания аппаратных драйверов или чего-то еще, связанного с ИИ. И дело просто в том, что это выходит далеко за пределы его специализации.
Выбор языка также во многом зависит от того, в чем вы разбираетесь. Как гласит старинная пословица: время — деньги, и в большинстве случаев использование нового языка для проекта — это серьезная затея, которое еще больше урезает временные рамки, которые обычно и без того очень сжаты. Я достаточно хорошо знаю PHP, поэтому в основном использую именно его. Я немного знаю Python, но лучше разбираюсь в PHP. Я, вероятно, мог бы сделать то же самое на Python, но это займет у меня вдвое больше времени (по крайней мере, в начале). Это не означает, что я вообще не буду использовать Python или что я имею что-то против Python, это просто означает, что PHP — это то, в чем я лучше.
Изучение языка на самом деле не так сложно, и опытный программист может понять суть языка, посвятив ему всего одни выходные. Но это не значит, что этого достаточно, чтобы в полной мере знать язык. Знание языка программирования — это не только знание того, какая встроенная функция что делает, но и наличие достаточного опыта, чтобы знать, КОГДА и какие фичи использовать или как экосистема сочетается друг с другом.
Я знаю PHP, и также знаю, как настроить Nginx на сервере и как конфигурировать FPM или opcache; У меня достаточно знаний, чтобы сделать разумный выбор в отношении зависимостей; Я знаю, как безопасно развертывать PHP-приложения в рабочей среде, и мне известно о проблемах безопасности, которые могут возникнуть, если я не буду внимательно следить за тем, как я использую определенные языковые фичи. Это больше, чем просто “знание” языка. Как программисты, мы тратим много времени на изучение подобных вещей, которые часто даже не связаны с языками, которые мы выбирали.
Вот почему меня очень разочаровывает, когда другой программист говорит мне, что мой выбор языка — “отстой”. Я потратил 20 с лишним лет, совершенствуя свои навыки, но теперь какой-то человек заявляет, что мой выбор был неправильным?
Что ж, они ошибаются. С помощью PHP я сделал свою карьеру, которой я очень доволен. Я живу в хорошем доме, езжу на отличной машине, потому что потратил 20 лет на то, чтобы стать по настоящему успешным в этом деле.
Но я немного отвлекся. Эта статья должна была быть о том, что PHP не отстой.
Многие из кружка “мы ненавидим PHP и думаем, что он скоро умрет” говорят о ряде вещей, которые, по их мнению, делают PHP плохим выбором во всех отношениях. Некоторые из них мы слышим годами и они имеют отношение к старым версиям PHP (я не понимаю, почему все до сих пор так зациклены на PHP 4, я серьезно). Остальные претензии просто безосновательны и не соответствуют действительности. Это не разглагольствования на тему “мой язык лучше твоего”, и я искренне верю, что у каждого языка программирования есть определенная цель. Люди, которые приносят эти инструменты в мир (которые намного умнее меня), обычно делают это не без оснований. Языки программирования обычно не появляются случайно.
Итак, почему PHP?
Ответ очень прост: потому что тогда он был доступен. Я самоучка, и как-то обошел стороной формальное образование. За исключением, может быть, случайных онлайн-курсов, которые я проходил, у меня нет листка бумаги со штампом престижного университета, на котором написано, что я могу говорить компьютерам, что делать.
Я пришел в PHP из дизайна, и несмотря на то, что я возился с компьютерами и кодом лет с семи, я не последовал за этим увлечением и не поступил в университет на программиста. Я точно не смогу вам ответить, почему. Мне нравились компьютеры, и мне нравился интернет, но вместо этого я выбрал графический дизайн. Я не собираюсь особо углубляться в это, потому что моя ученая степень особо не играет большой роли в том, чем я занимаюсь сегодня.
Я пришел к PHP тем же путем, что и большинство PHP-программистов. Потому что мы хотели, чтобы сайт мог делать больше, чем просто отображать изображение и абзац текста. Я был невероятно взволнован, когда понял, как получить информацию из базы данных и отобразить ее на веб-странице. Это было потрясающе! Это было именно то, что мне было нужно, и я сразу нырнул в PHP с головой.
Затем я узнал о WordPress. И, как и для любого другого человека, сидящего перед экраном компьютера с некоторыми базовыми знаниями PHP, WordPress перевернул мой мир. Это было круто, правда?
WordPress обязан своим успехом таким людям, как мы — подросткам, которые хотели свой блог, но у них не было достаточно знаний для того, чтобы создать его самостоятельно.
Вы установили WordPress. Затем добавили плагин и изменили тему. Потом внесли небольшое изменение в тему, чтобы она работала по-другому или выглядела немного иначе. Затем вы модифицировали плагин. Затем вы создали свою собственную тему. После чего вы задумались. А что еще я могу сделать?
Так я познакомился с PHP. Я не выбирал PHP, он выбрал меня. 20 прошло, а я все еще пишу на PHP. Конечно, больше не через WordPress, и мне нравится то, что я уже достаточно вырос как PHP-программист, чтобы со знанием дела написать эту статью.
“PHP слишком прост. Лучше выучи что-то посложнее”.
Одна из основных причин, по которой PHP так популярен, заключается в его повсеместном использовании. Его можно найти почти везде. Да даже самый обычный MacBook поставляется с предустановленным PHP (хотя похоже, что это изменится в будущей версии MacOS).
Писать на PHP с нуля не сложно. Обычно ничего особенного делать не нужно. Создайте index.php, поместите в него одну строку PHP-кода и загрузите практически на любую учетную запись общего хостинга:
Начало положено. Начать работу с PHP очень просто, потому что вам не нужно думать о том, как заставить PHP работать. Это почти всегда уже сделано за вас.
Однако, представьте себе, что именно эта “простота использования” на самом деле является одной из претензий к PHP. Теория гласит, что если PHP настолько прост, то на PHP очень легко написать действительно небезопасный код.
Меня всегда это немного настораживало. Значит ли это, что языки, которые труднее использовать, с меньшей вероятностью будут использоваться для написания плохого кода? Я где-то читал, что около 70% патчей, которые Microsoft выпускает для Windows, предназначены для решения проблем с памятью, возникших из-за C++ (но не цитируйте меня, это не официальное заявление). Я сомневаюсь, что люди, которые пишут на C++ для Microsoft, любители, и я почти уверен, что они знают, что делают. Да, Windows намного сложнее, чем ваш типовой сайт с корзины покупок, но я думаю, что аргумент остается в силе. Я не согласен с тем, что простота использования PHP делает его потенциально опасным. Python хорошо известен за то, как он удобен для начинающих, но не имеет такой “потенциально опасной” репутации. Легко написать небезопасный код на ЛЮБОМ языке. Не язык делает код небезопасным, а недостаток знаний.
“Простота” — это не причина отговаривать новичков от изучения PHP, а, скорее, причина дать этим новичкам лучшие инструменты для принятия более взвешенных решений относительно кода, который они пишут. Это повод помочь им найти нужные ресурсы для изучения PHP. Мне очень повезло; и хотя я написал свою долю “небезопасного” кода, в моей жизни были люди (не всегда PHP-программисты), которые помогли мне понять, что можно улучшить.
PHP медленный
Что ж, это неправда. PHP работает настолько быстро или медленно, насколько написан ваш код. PHP — это скриптовый язык, поэтому сравнивать его с компилируемыми языками бессмысленно, но почему-то я даже видел, как люди сравнивают PHP с Rust или Go. Но это просто бессмысленно. Сравнение PHP с Python или Ruby, вероятно, понятнее, но “скорость” языка зависит от ряда различных факторов. Сам язык, да, но также его среда, какой код он выполняет, как настроен интерпретатор и т. д. Говорить, что PHP медленный без контекста, неправильно.
PHP определенно медленный в отношении определенных типов задач. Например, PHP, вероятно, не станет вашим первым выбором, если речь идет о машинном обучении (хотя есть несколько очень интересных проектов, которые имеют вполне реальные перспективы).
Можно встретить бенчмарки двух разных языков, выполняющих одно и то же, например, перебирающие миллион записей и выполняющие простые вычисления. Результаты часто отличаются миллисекундами. Иногда это используется, чтобы показать, что PHP работает медленно (или, в некоторых случаях, быстро). Если вы пишете программное обеспечение, в котором лишние несколько миллисекунд при циклическом просмотре миллиона записей были бы катастрофическими, то, возможно, вы задаете неправильные вопросы.
WordPress плох
Да, я согласен. Я не самый большой поклонник WordPress, особенно в наши дни, но я также готов признать, что без WordPress у нас, вероятно, не было бы того PHP-сообщества, которое существует сегодня.
Однако судить о языке по одному программному обеспечению — это неправильно. Это все равно, что сказать, что C++ — плохой язык, потому что вам не нравится Microsoft Windows.
PHP — это не узкоспециальный язык, а WordPress — это только часть истории PHP. Существует множество фреймворков и пакетов на любой выбор, если уж на то пошло. Laravel пророчат “снова сделать PHP крутым”, и я должен признать, что этот фреймворк, безусловно, один из моих любимых и он удобен для большинства проектов.
Хулить PHP, презирая WordPress, действительно несправедливо. Можно утверждать, что WordPress был отражением ограничений PHP, но это было давно, и с тех пор язык сильно вырос.
PHP не дотягивает до корпоративного уровня
Почему? Я действительно не понимаю, откуда это пошло. Но это серьезное заявление. Что делает язык “корпоративным” (enterprise ready)? Как определить, что один язык более корпоративный, чем другой? Java, вероятно, является одним из самых популярных языков в корпоративной среде, но это не потому, что Java сам по себе корпоративный. Причина в существовании платформы Java EE. Я не Java-разработчик, поэтому поправьте меня, если я неправ, но, насколько я понимаю, Java EE — это платформа, на которой создаются корпоративные приложения. Звучит как фреймворк, верно? Так что, возможно, вопрос должен звучать так: “Дотягивает ли <мой-любимый-php-фреймворк> до корпоративного уровня?”.
Для ответа на этот вопрос нужна целая отдельная статья. Я пытаюсь подчеркнуть, что PHP как язык настолько же “корпоративный”, как и любой другой язык. Это целиком и полностью зависит от того, как вы его используете.
Примечание: некоторое время назад я был частью небольшой команды, которая создала и развернула платформу управления событиями во внутренней сети одного из ведущих финансовых учреждений Южной Африки (я мог бы написать кое-что об опыте). Приложение было полностью написано на PHP и JavaScript. И в разгар пандемии Covid-19 система находилась под огромной нагрузкой, но справилась почти со всем. У нас было несколько заминок, но ничего такого, что нельзя было бы решить быстро.
PHP не масштабируется
Это единственная претензия, в которой есть доля правды, но и тут все немного сложнее, чем вы думаете. По правде говоря, PHP прекрасно масштабируется, если вы пишете нормальный код. Когда люди говорят, что PHP не масштабируется, они обычно имеют в виду, что приложения, написанные на PHP, могут быть не в состоянии обрабатывать очень большое количество запросов (например, миллионы). Дело в том, что это все не так просто, и я думаю, что многие заблуждения уходят корнями в WordPress, который до недавнего времени был хорошо известен своими проблемами с масштабируемостью.
В качестве доказательства: Slack, платформа обмена сообщениями, которая нацелена заменить электронную почту, с миллионами пользователей, каждый из которых подключается каждый день к системе, имеет бэкенд написанный на PHP. Если это не пример того, как PHP может масштабироваться, то я не знаю, что вообще вас может переубедить. Многие люди приводят Facebook в качестве примера, и хотя я считаю, что Facebook, вероятно, все еще использует PHP в той или иной форме, я думаю, что они, скорее всего, перенесли большую часть своих приложений с PHP. Но, честно говоря, Facebook — это особый случай.
Нельзя говорить о масштабируемости, не говоря об инфраструктуре. Если вы размещаете блог WordPress на простом виртуальном хостинге и внезапно переживаете десятки тысяч посещений… ну, это может быть проблемой, и ваш хостинг отправит вам неприятное электронное письмо или, по крайней мере, выставит вам больший счет, чем вы ожидали.
Масштабирование приложения включает в себя гораздо больше, чем просто выбор языка. В этом деле очень много деталей, и меня расстраивает то, что все шишки достаются PHP. Более новые версии PHP, в правильной среде и правильно настроенные, более чем способны обрабатывать большое количество запросов. Laravel Vapor, первая бессерверная платформа для приложений Laravel, работающих на AWS, показывает действительно впечатляющие цифры.
Иногда я думаю, что вопрос масштабируемости также несколько преувеличен. За 20 лет написания вещей на PHP я никогда не сталкивался с “миллионами запросов” в секунду. Даже близко. Большинство из нас не будут создавать новый Facebook, как бы мы не мечтали. На самом деле мы создаем гораздо более узкоспециализированные приложения. Мы работаем с конкретными отраслями, часто в определенных странах, и нам не приходится беспокоиться об обработке более нескольких сотен запросов в секунду. Для многих проектов, в которых мы участвуем, это большие цифры. Это не значит, что то, что мы делаем, не важно, это просто означает, что нам не нужно беспокоиться о таком масштабе. Масштабирование приложений для обработки миллионов запросов просто не является частью нашей рутины.
PHP уродлив
Вы, должно быть, шутите. Самую бесячую претензию я оставил напоследок. Если вы выбираете свой стек технологий, основываясь на том, как красиво что-либо выглядит, то вы серьезно заблуждаетесь, и вам нужно серьезно задуматься над своим выбором.
Но даже несмотря на это, я не думаю, что это правда. Вероятно, это происходит из-за давней практики использования PHP непосредственно в HTML (где он действительно выглядел не очень). Но дело в том, что мы больше этого не делаем, так как это не приветствуется.
Я не говорю, что так называемые “красивые языки” — неправильный выбор, но это определенно не должно быть определяющим фактором. Java совершенно некрасив, но при этом является одним из самых популярных языков в мире. Просто глупо возражать против использования PHP из-за того, что он некрасив.
PHP, вероятно, не самый красивый язык, но я нахожу его вполне читабельным, когда он хорошо написан. И в PHP 8 есть несколько действительно замечательных инструментов, которые помогут сделать ваш код еще более “красивым”.
Я люблю PHP
Я действительно его люблю. Я люблю язык и экосистему. Мне нравится, какие улучшения произошли в нем за последние несколько лет. PHP 8 — это не просто еще одна версия того же языка. С каждым крупным релизом мы получаем более качественные и полезные инструменты.
Мне нравится, что с PHP легко начать работу, как и то, что он сложен и на самом деле нужно так много знать, чтобы считаться профессиональным PHP-программистом. Я люблю Symfony и Laravel и думаю, что люди, стоящие за ними, также ответственны за продвижение языка, как и основная команда PHP.
Но больше всего мне нравится быть программистом. Не только на PHP, но я люблю создавать вещи на любом языке, который мне приходится использовать. Мне нравится тот факт, что я могу указывать компьютерам, что делать, и что я сам этому научился. Я обязан этим PHP. Без PHP я не знаю, что бы я сейчас делал. Может быть, я был бы каким-то посредственным дизайнером, ненавидящим свою работу и свою жизнь (не в обиду дизайнерам, читающим это. У меня есть действительно талантливые друзья-дизайнеры, которым тоже нравится то, что они делают). Но вместо этого я делаю то, что люблю, используя язык, который мне нравится.
Перевод материал подготовлен в преддверии старта специализации «PHP Developer».
Почему многие программисты считают PHP плохим языком? — отвечают эксперты
За время существования PHP его не пинал только ленивый. Множество мемов, нелестных отзывов и прочей критики в его адрес. Мы решили спросить у экспертов, за что же так не любят PHP и почему его считают плохим языком.

Причин много, пройдём по основным. Появился он в середине 90-x годов, когда не было развитой инфраструктуры и возможностей для его изучения, следствием этого стало появление массы программистов, не изучивших его полностью и не имеющих базы в компьютерных науках, коротко говоря, пишущих не очень качественный код. Язык имеет динамическую типизацию и вообще очень прост, т.е. имеет крайне низкий порог входа, что усиливало выше описанный эффект.
В 2000-х начался бурный рост количества интернет сайтов. Благодаря своей скриптовой сущности именно PHP стал лидером в этой области. К 2010-м годам руками той самой «плохой» массы программистов была написана львиная доля интернета. Быстрее, чем на «пыхе», сайт не «накалякаешь». PHP, если просмотреть линию от создания до сегодняшнего дня, также имел отставание в технологическом и синтаксическом развитии, относительно своих ровесников, например, Java. Да и огромная часть интернета написана и продолжает писаться на версии PHP 4 (2000 г.), несмотря на наличие версии 7.
Язык очень своеобразен, просто вдумайтесь, в нём нет адекватного стек-трейса из коробки. Т.е. в него не заложен инструмент отладки и разбора ошибок. Просто пишите и сразу в продакшн. Свойства языка и «слава» писавших на нём и создали такой эффект. Плюс эффект активно нагнетает элита мира разработчиков, пишущих на намного более современных, сложных, развитых, одним словом «крутых» языках, таких как Python (последних версий), Scala, Go и т.п. Но не стоит забывать, что всегда надо иметь баланс между технологическим удовольствием и бизнес-ценностью инструмента работы.

Потому что в языке отсутствует дизайн. Язык не развивался и не проектировался целенаправленно. Многие решения принимались хаотично, что называется, «по месту».
Например, названия функций неконсистентны, т.е., глядя в название одной функции работы со строками, нельзя предугадать название другой.
Результаты плохого проектирования видны всюду: mysql_real_escape_string , сломанный оператор == и т.д.
В отличие от многих других языков, где знания о языке ложатся в некую систему, PHP представляет собой свалку слабо связанных конструкций.

Не любить PHP очень легко. Если вы спросите у разработчиков, чем именно плох PHP, то вряд ли получите внятный ответ. Ссылаться могут на общеизвестные проблемы или на неудачный синтаксис, который не понравился человеку. В своё время PHP имел ряд проблем, но их не избежали и многие другие языки. Однако благодаря своей простоте язык стал популярным (Wikipedia, первый Facebook), а вместе с популярностью массовым стало и знание о его проблемах. За годы, с новыми релизами, часть проблем закрылась, но память жива. PHP стал просто удачным мальчиком для битья.

Многие считают PHP плохим из-за трёх вещей:
- Всё, что написано, может быть истолковано несколькими способами.
- Если есть что-то очень медленно и плохо написанное на процедурных языках с долгой историей, то это так или иначе можно найти на PHP.
- Черепашья скорость отладки и поиска багов.

Мне кажется, всё дело в происхождении языка. Изначально PHP был разработан как простой скриптовый язык, чтобы каждый человек мог легко написать для себя домашнюю страницу. Тогда аббревиатура PHP расшифровывалась как Personal Home Page. Со временем язык стал развиваться, но по-прежнему оставался простым и доступным. Так как порог вхождения был низким, это привлекало большое количество людей, которые до этого не были знакомы с разработкой. Сталкиваясь с вопросами и проблемами, люди преимущественно шли на форумы в ожидании, что кто-то даст им готовое решение — вместо того, чтобы самостоятельно глубоко изучить документацию.
Таким образом, PHP-сообщество на 90% состояло из людей, которые пишут, не задумываясь и вставляя в свои проекты куски непонятного кода — главное, чтобы работало. Многие из тех, кто разобрался в скриптинге получше, вели блоги о программировании и даже записывали видеокурсы, которые зачастую содержали такие подходы и такой код, которые были непригодны для использования в реальных проектах. А люди, которые могли развернуть WordPress и установить в него плагины, и вовсе считали себя экспертами.
Именно простота языка и недостаточная глубина знаний сообщества вокруг него и создали PHP дурную славу.
Однако всё это в прошлом. PHP уже давно содержит в себе интерфейсы, абстрактные классы, трейты и другие вещи, позволяющие реализовывать парадигмы ООП и использовать паттерны проектирования. А в последних версиях PHP появилась типизация аргументов функций и методов, возвращаемых значений и свойств классов. PHP также имеет свой пакетный менеджер, множество современных мощных фреймворков, таких как Symfony и Laravel, и массу других интересных проектов, написанных очень качественно. Сейчас, в 2018, лично я не вижу причин считать PHP «плохим» языком программирования.

Началось всё, как обычно, много лет назад, когда бизнес только начал осваивать интернет. Серьёзные проекты писались за серьёзные деньги, но большинству заказчиков хотелось получить какой-нибудь сайт за мелкий прайс, желательно вообще бесплатно. Так началась эпоха wordpress и joomla. Так как все разработчики, согласные делать проекты за нормальные деньги, уже были заняты на этих самых проектах за нормальные деньги, то сайтоделием на CMS занялись случайные люди, со временем начавшие отождествлять себя с программированием и PHP как языком этих CMS. Общий, весьма низкий технический уровень этого сообщества прицепом потянул за собой в бездну репутацию PHP как инструмента, а дефицит кадров в отечественном IT не позволял гнать несвежими тряпками таких разработчиков. В конце концов PHP стал синонимом «дёшево и быстро», а ведь никто из программистов не хочет «дёшево», оправдывая это придирками к архитектуре языка.
На самом же деле, если внимательно посмотреть на PHP, будет сложно найти существенные отличия от остальных C-подобных скриптовых языков. В конце концов, не бывает плохих языков — бывают плохие программисты.

Почему многие программисты считают PHP плохим языком программирования? В основном это связано с неоднозначностью, которая присутствует при написании программ на этом языке. На просторах Сети нашёл следующий код:
Как вы думаете, что он напечатает? В таких языках, как Java, C++ или C#, есть аналогичный оператор условное выражение. Там он напечатает ‘train’. А в PHP результат будет ‘horse’!
Второй момент, который вызывает сложности с PHP, — это диагностика ошибок. Если вы открываете файл, то для этого есть функция fopen() . При невозможности открыть файл, сообщение об ошибке будет выведено в поток. Мы можем его подавить, используя символ @ , т.е. записать @fopen() . Однако, даже при наличии этого оператора, если в настройках php.ini вы указали опцию scream.enabled=true , это приведёт к печати сообщения об ошибке, даже если вы используете в коде оператор @ .
Третий момент связан с неоднозначностью оператора == . Вот на этом ресурсе есть хорошая таблица, какие результаты он возвращает.
Вся проблема в том, что этот оператор «не придирается» к типам данных. Так выражение вида 123 == «123foo» вернёт TRUE , а вот выражение «123» == «123foo» уже вернёт FALSE . Этот оператор пытается сделать приведение типа и в первом выражении просто преобразует строку «123foo» в число 123, когда в других языках программирования мы бы получили ошибку, что логично. А второе выражение просто сравнивает строки. Всё это порождает неоднозначность, с которой очень сложно совладать начинающим программистам на PHP. Хороший язык программирования не должен оставлять места трактовке тех или иных конструкций, а должен быть последовательным везде и всегда.
И четвертый момент, почему считают данный язык программирования плохим, — это тот момент, что он создавался как язык шаблонов, который встраивается в HTML-код с помощью тегов <?php ?> . В итоге это приводило к смешению программного кода и данных, что в больших системах недопустимо. Понятно, что потом появились «лучшие практики», как надо писать и как не надо писать скрипты PHP, но для начинающих разработчиков это и сегодня представляет определенную сложность.
В защиту языка программирования PHP хочется сказать, что по-своему это мощный язык программирования, который нашел своё место в веб-приложениях. На нём написано достаточно много веб-приложений, начиная от Facebook и заканчивая системой умного дома Majoromo, CMS Drupal и другими.

Его считают плохим те, кто на нём не пишет, либо, кто столкнулся с некачественным исполнением поставленной задачи. Те разработчики, кто не стремятся изучить документацию языка и не следуют рекомендациям, пишут на нём действительно очень слабо. Это бросает тень на всё сообщество. PHP — язык с низким порогом вхождения. Это одновременно сильная и слабая его сторона. Достаточно знать азы программирования, поставить интерпретатор и можно писать хоть в «Блокноте». По умолчанию конфигурация интерпретатора PHP не выводит детальной информации о предупреждениях и ошибках, что на начальном этапе изучения (использования) языка может сформировать у программиста неверные принципы написания кода.
Язык по сути развязывает руки разработчику: делай, что хочешь. А когда многое дозволено, приходится быть предельно аккуратным и дисциплинированным. PHP хорошо справляется с поставленными перед ним задачами по веб-разработке. Это универсальная рабочая лошадка, на языке написана большая часть сайтов в интернете. У него есть объективные слабые стороны, и связаны они с тем, что PHP развивался в трендах и тенденциях более чем пятнадцатилетней давности. В частности его проблема в том, что он тянет с 1997 года ворох проблем, например реализацию ООП, проблемы с сигнатурами функций в стандартной библиотеке, двойственный метод использования стандартных расширений (ООП или процедурный) и т.д. У PHP накопился багаж того, что нужно переделать. И эта работа ведется, многие исторически накопленные проблемы решаются.

Во-первых, нужно изначально иметь в виду, что у языков программирования, даже общего назначения, есть свои устоявшиеся сферы применения. Если рассматривать PHP, то прежде всего это веб-разработка. Значит и сравнивать, насколько плох или хорош PHP, логично с другими языками для веб-разработки.
Тут нужна небольшая историческая справка. Изначально Web разрабатывали на «том, что было» (C, а потом Perl через CGI). Затем, особенно в энтерпрайз секторе, значительное распространение получила Java и следом C# (ответ Microsoft). Это созданные большими корпорациями, хорошо спроектированные, можно так сказать, серьёзные языки программирования.
В то же время PHP начинал как проект энтузиаста (даже расшифровывался как Personal Home Page), как набор скриптов на Perl.
Но в то же время он имел большие плюсы: очень низкий порог входа, отсутствие необходимости в тяжеловесных виртуальных машинах, простота создания несложных сайтов.
Обратная сторона этих плюсов — уровень компетенции комьюнити, собравшегося вокруг PHP, был значительно ниже по сравнению с другими языками.
Web стремительно развивался. А за ним развивался и PHP, так как это был чуть ли не единственный язык для построения неэнтерпрайзного Web.
С определенной версии это стал вполне современный язык (с некоторым наследием), в среднем, ничем не хуже, чем любые другие аналоги.
Но вот этот «Personal Home Page» осадок остался.
Во-вторых, когда PHP запустил волну популярности динамически программируемых языков, в Web зашли такие языки, как, например, Python, Ruby или NodeJS. Тут уже началась «гонка вооружений» между ними. На старте эти языки (и связанные библиотеки и фреймворки) учитывали недостатки PHP и выглядели значительно привлекательнее. Тут уже начались холивары между комьюнити. В принципе каждый язык занял свою нишу. PHP же итеративно догоняет по функциональными возможностям нововведения в других языках. И на текущем этапе плохим языком его назвать уж точно нельзя. Скорее — промышленным стандартом в не-энтерпрайз Web.
Резюмируя, можно сказать, что такое отношение к PHP вызвано его историей и конкуренцией с регулярно появляющимися «самыми прорывными» свежими языками.
Почему многие программисты считают PHP плохим языком? — отвечают эксперты
За время существования PHP его не пинал только ленивый. Множество мемов, нелестных отзывов и прочей критики в его адрес. Мы решили спросить у экспертов, за что же так не любят PHP и почему его считают плохим языком.
Рустам Кильдиев, руководитель отдела разработки BigData компании «Иннодата»

Причин много, пройдём по основным. Появился он в середине 90-x годов, когда не было развитой инфраструктуры и возможностей для его изучения, следствием этого стало появление массы программистов, не изучивших его полностью и не имеющих базы в компьютерных науках, коротко говоря, пишущих не очень качественный код. Язык имеет динамическую типизацию и вообще очень прост, т.е. имеет крайне низкий порог входа, что усиливало выше описанный эффект.
В 2000-х начался бурный рост количества интернет сайтов. Благодаря своей скриптовой сущности именно PHP стал лидером в этой области. К 2010-м годам руками той самой «плохой» массы программистов была написана львиная доля интернета. Быстрее, чем на «пыхе», сайт не «накалякаешь». PHP, если просмотреть линию от создания до сегодняшнего дня, также имел отставание в технологическом и синтаксическом развитии, относительно своих ровесников, например, Java. Да и огромная часть интернета написана и продолжает писаться на версии PHP 4 (2000 г.), несмотря на наличие версии 7.
Язык очень своеобразен, просто вдумайтесь, в нём нет адекватного стек-трейса из коробки. Т.е. в него не заложен инструмент отладки и разбора ошибок. Просто пишите и сразу в продакшн. Свойства языка и «слава» писавших на нём и создали такой эффект. Плюс эффект активно нагнетает элита мира разработчиков, пишущих на намного более современных, сложных, развитых, одним словом «крутых» языках, таких как Python (последних версий), Scala, Go и т.п. Но не стоит забывать, что всегда надо иметь баланс между технологическим удовольствием и бизнес-ценностью инструмента работы.
Павел Романченко, технический директор Центра программных решений «Инфосистемы Джет»

Потому что в языке отсутствует дизайн. Язык не развивался и не проектировался целенаправленно. Многие решения принимались хаотично, что называется, «по месту».
Например, названия функций неконсистентны, т.е., глядя в название одной функции работы со строками, нельзя предугадать название другой.
Результаты плохого проектирования видны всюду: mysql_real_escape_string , сломанный оператор == и т.д.
В отличие от многих других языков, где знания о языке ложатся в некую систему, PHP представляет собой свалку слабо связанных конструкций.
Кирилл Меженцев, программист группы разработки карты рассрочки «Совесть»

Не любить PHP очень легко. Если вы спросите у разработчиков, чем именно плох PHP, то вряд ли получите внятный ответ. Ссылаться могут на общеизвестные проблемы или на неудачный синтаксис, который не понравился человеку. В своё время PHP имел ряд проблем, но их не избежали и многие другие языки. Однако благодаря своей простоте язык стал популярным (Wikipedia, первый Facebook), а вместе с популярностью массовым стало и знание о его проблемах. За годы, с новыми релизами, часть проблем закрылась, но память жива. PHP стал просто удачным мальчиком для битья.
Юрий Пономарев, консультант по программным продуктам Oracle Центра технической поддержки компании РДТЕХ

Многие считают PHP плохим из-за трёх вещей:
- Всё, что написано, может быть истолковано несколькими способами.
- Если есть что-то очень медленно и плохо написанное на процедурных языках с долгой историей, то это так или иначе можно найти на PHP.
- Черепашья скорость отладки и поиска багов.
Али Рагимов, главный специалист отдела разработки программного обеспечения, Okko

Мне кажется, всё дело в происхождении языка. Изначально PHP был разработан как простой скриптовый язык, чтобы каждый человек мог легко написать для себя домашнюю страницу. Тогда аббревиатура PHP расшифровывалась как Personal Home Page. Со временем язык стал развиваться, но по-прежнему оставался простым и доступным. Так как порог вхождения был низким, это привлекало большое количество людей, которые до этого не были знакомы с разработкой. Сталкиваясь с вопросами и проблемами, люди преимущественно шли на форумы в ожидании, что кто-то даст им готовое решение — вместо того, чтобы самостоятельно глубоко изучить документацию.
Таким образом, PHP-сообщество на 90% состояло из людей, которые пишут, не задумываясь и вставляя в свои проекты куски непонятного кода — главное, чтобы работало. Многие из тех, кто разобрался в скриптинге получше, вели блоги о программировании и даже записывали видеокурсы, которые зачастую содержали такие подходы и такой код, которые были непригодны для использования в реальных проектах. А люди, которые могли развернуть WordPress и установить в него плагины, и вовсе считали себя экспертами.
Именно простота языка и недостаточная глубина знаний сообщества вокруг него и создали PHP дурную славу.
Однако всё это в прошлом. PHP уже давно содержит в себе интерфейсы, абстрактные классы, трейты и другие вещи, позволяющие реализовывать парадигмы ООП и использовать паттерны проектирования. А в последних версиях PHP появилась типизация аргументов функций и методов, возвращаемых значений и свойств классов. PHP также имеет свой пакетный менеджер, множество современных мощных фреймворков, таких как Symfony и Laravel, и массу других интересных проектов, написанных очень качественно. Сейчас, в 2018, лично я не вижу причин считать PHP «плохим» языком программирования.
Дмитрий Казаков, руководитель отдела веб-разработки RU-CENTER

Началось всё, как обычно, много лет назад, когда бизнес только начал осваивать интернет. Серьёзные проекты писались за серьёзные деньги, но большинству заказчиков хотелось получить какой-нибудь сайт за мелкий прайс, желательно вообще бесплатно. Так началась эпоха wordpress и joomla. Так как все разработчики, согласные делать проекты за нормальные деньги, уже были заняты на этих самых проектах за нормальные деньги, то сайтоделием на CMS занялись случайные люди, со временем начавшие отождествлять себя с программированием и PHP как языком этих CMS. Общий, весьма низкий технический уровень этого сообщества прицепом потянул за собой в бездну репутацию PHP как инструмента, а дефицит кадров в отечественном IT не позволял гнать несвежими тряпками таких разработчиков. В конце концов PHP стал синонимом «дёшево и быстро», а ведь никто из программистов не хочет «дёшево», оправдывая это придирками к архитектуре языка.
На самом же деле, если внимательно посмотреть на PHP, будет сложно найти существенные отличия от остальных C-подобных скриптовых языков. В конце концов, не бывает плохих языков — бывают плохие программисты.
Павел Цытович, тренер по разработке и архитектуре ПО в Luxoft

Почему многие программисты считают PHP плохим языком программирования? В основном это связано с неоднозначностью, которая присутствует при написании программ на этом языке. На просторах Сети нашёл следующий код:
Как вы думаете, что он напечатает? В таких языках, как Java, C++ или C#, есть аналогичный оператор условное выражение. Там он напечатает ‘train’. А в PHP результат будет ‘horse’!
Второй момент, который вызывает сложности с PHP, — это диагностика ошибок. Если вы открываете файл, то для этого есть функция fopen() . При невозможности открыть файл, сообщение об ошибке будет выведено в поток. Мы можем его подавить, используя символ @ , т.е. записать @fopen() . Однако, даже при наличии этого оператора, если в настройках php.ini вы указали опцию scream.enabled=true , это приведёт к печати сообщения об ошибке, даже если вы используете в коде оператор @ .
Третий момент связан с неоднозначностью оператора == . Вот на этом ресурсе есть хорошая таблица, какие результаты он возвращает.
Вся проблема в том, что этот оператор «не придирается» к типам данных. Так выражение вида 123 == «123foo» вернёт TRUE , а вот выражение «123» == «123foo» уже вернёт FALSE . Этот оператор пытается сделать приведение типа и в первом выражении просто преобразует строку «123foo» в число 123, когда в других языках программирования мы бы получили ошибку, что логично. А второе выражение просто сравнивает строки. Всё это порождает неоднозначность, с которой очень сложно совладать начинающим программистам на PHP. Хороший язык программирования не должен оставлять места трактовке тех или иных конструкций, а должен быть последовательным везде и всегда.
И четвертый момент, почему считают данный язык программирования плохим, — это тот момент, что он создавался как язык шаблонов, который встраивается в HTML-код с помощью тегов <?php ?> . В итоге это приводило к смешению программного кода и данных, что в больших системах недопустимо. Понятно, что потом появились «лучшие практики», как надо писать и как не надо писать скрипты PHP, но для начинающих разработчиков это и сегодня представляет определенную сложность.
В защиту языка программирования PHP хочется сказать, что по-своему это мощный язык программирования, который нашел своё место в веб-приложениях. На нём написано достаточно много веб-приложений, начиная от Facebook и заканчивая системой умного дома Majoromo, CMS Drupal и другими.
Дмитрий Гацура, руководитель отдела разработки компании «СёрчИнформ»

Его считают плохим те, кто на нём не пишет, либо, кто столкнулся с некачественным исполнением поставленной задачи. Те разработчики, кто не стремятся изучить документацию языка и не следуют рекомендациям, пишут на нём действительно очень слабо. Это бросает тень на всё сообщество. PHP — язык с низким порогом вхождения. Это одновременно сильная и слабая его сторона. Достаточно знать азы программирования, поставить интерпретатор и можно писать хоть в «Блокноте». По умолчанию конфигурация интерпретатора PHP не выводит детальной информации о предупреждениях и ошибках, что на начальном этапе изучения (использования) языка может сформировать у программиста неверные принципы написания кода.
Язык по сути развязывает руки разработчику: делай, что хочешь. А когда многое дозволено, приходится быть предельно аккуратным и дисциплинированным. PHP хорошо справляется с поставленными перед ним задачами по веб-разработке. Это универсальная рабочая лошадка, на языке написана большая часть сайтов в интернете. У него есть объективные слабые стороны, и связаны они с тем, что PHP развивался в трендах и тенденциях более чем пятнадцатилетней давности. В частности его проблема в том, что он тянет с 1997 года ворох проблем, например реализацию ООП, проблемы с сигнатурами функций в стандартной библиотеке, двойственный метод использования стандартных расширений (ООП или процедурный) и т.д. У PHP накопился багаж того, что нужно переделать. И эта работа ведется, многие исторически накопленные проблемы решаются.
Итак, почему многие программисты считают PHP плохим языком?
Во-первых, у PHP достаточно низкий порог входа, что влечёт за собой тонны некачественного кода начинающих программистов. Во-вторых, у PHP есть неудачные решения в архитектуре: названия функций неконсистентны, проблемы с сигнатурами функций в стандартной библиотеке, двойственный метод использования стандартных расширений (ООП или процедурный), сломанный оператор == и так далее.
Но всё же главное правило качественного кода — прямые руки программиста, растущие из плечей. А говнокодить можно на любом языке.