@azzz Я просто оставлю это здесь...
— Несогласованный синтаксис функций и неортогональность
Синтаксис языка не согласован, например, часть функций для работы с массивами начинается с префикса array_, другая часть этим префиксом не обладает. Названия части строковых функций начинается с префикса str, другие функции таким префиксом не обладают. В тех же строковых функциях обрабатываемая строка может передаваться как в качестве первого, так и в качестве последнего аргумента, что требует постоянного обращения к документации. Некоторые задачи, например разбиение строки на массив или подстроки, решаются несколькими функциями.
— Отсутствие обратной совместимости между версиями языка
Код, созданный для более ранних версий языка, зачастую не работает или работает некорректно с более поздними версиями языка. В более поздних версиях исключаются конструкции, методики, функции, применявшиеся ранее. В результате, приложения, созданные несколько лет назад, практически теряют работоспособность для современных версий языка и требуют значительной модификации.
— Отсутствие поддержки многобайтовых кодировок в ядре языка
Поддержка строк с многобайтовыми кодировками, такими как UTF-8 реализуется через расширение mbstring. При этом вместо стандартных функций работы со строками используются аналогичные функции, но с префиксом mb_. Сами строки не хранят информацию о своей кодировке, и её необходимо указывать вручную при вызове функций расширения mbstring.
— Отсутствие многопоточности
В языке не предусмотрена возможность создания многопоточных приложений.