Что, уже все отшутились про PHP? Уже каждый клоун из Твиттера запостил картинку? Точно никого не осталось? Хорошо, тогда выскажусь и я.

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

Поэтому клоунам из твиттера, которые постят мемы про пых, я бы напомнил о других эпичных фейлах.

Помните эпизод с Джавой и Log4j? Если коротко, то за тридцать лет в Джаве не договорились, как сделать нормальный логгинг. В итоге появились логгеры-монстры с Тьюринг-полными шаблонами и загрузчиками классов. Логгер загружал произвольный java-класс из интернета(!!!) и выполнял в процессе приложения. Это настолько тупо, что я не нахожу слов.

Помните случай с Leftpad в Джаваскрипте? Это еще фееричней. Жил-был типичный одноклеточный Js-разработчик: писал пакеты-однострочники вроде isArray, isNumber и выкладывал в npm. В числе прочего он залил в него пакет kick. Оказалось, есть мессенджер Kick, где сидят одни педофилы и охотники на педофилов. Юристы Кика потребовали у npm удалить пакет. Основанием для этого должен быть товарный знак, которого, конечно, не было. Однако админы npm прогнулись и удалили kick без каких-либо обсуждений. Его автор обиделся и в знак протеста удалил все свои пакеты.

Казалось бы, ну и катись к х…м со своими isArray и isNumber. Но дело в том, что через цепь зависимостей от пакета Leftpad зависел сам Реакт – и он перестал собираться по всему миру. Другими словами, разработчики Реакта оказались такими же одноклеточными, потому не проверили, а от чего, собственно, зависит их творение и насколько оно надежно. Инцидент показал столько гнили в экосистеме Js, что уже за это я испытываю к ней отвращение. Но ничего – починили, шоу продолжается.

Или другой случай – миграция со второго Питона на третий. Я начинал с Питона 2.4 и активно писал на нем до 3.2. На мою долю выпала миграция 2->3. Скорее всего, большинство читателей сразу сели за тройку, а я все это разгребал.

Миграция была очень, очень, очень сложной. В тройке поломали строки – центральный тип языка. Да, они стали лучше и правильней (как в Джаве), но беда в том, что за время двойки все уже привыкли к сишным восьмибитным строкам. Не было ни одной библиотеки, которую бы не пришлось дорабатывать. Изменения раскололи сообщество: против тройки выступил сам Армин Ронахер, разработчик Flask, Jinja2 и других бессмертных библиотек. Позже Армин передал свои наработки сообществу и ушел в Раст. И все-таки Питон мигрировал, ошибки дизайна остались в прошлом, поезд идет вперед.

Что касается PHP, то уже одна его популярность говорит о многом. Его автор угадал ключевую фишку – удобство. PHP – это попытка сделать программирование удобным, и притом попытка удачная. К сожалению, языку не повезло с технической частью: не нашлось местного Торвальдса или Кармака, которые написали бы технически безупречный интерпретатор. Уж что есть, то есть.

Ошибки, найденные в PHP, связаны с памятью, а для любого сишного кода это родовая травма. Код на Си – это прямые действия с памятью, и при ошибке в лучшем случае программа свалится с сегфолтом. В худшем начнется неопределенное поведение: затирание данных, исполнение произвольного кода. Но как мы видим, в других языках были ошибки еще хуже, при этом вызваны они не сишными фокусами, а разгильдяйством. Лично я за второе наказывал бы сильнее, чем за первое.

Так что держись, пых. Уже двадцать лет тебя хоронят, а ты все трудишься, старичок. Ничего, пропатчат тебя и пойдешь дальше крутить сайты на Джумле.