С таким же успехом это может быть в разделе юмора. Знаете ли вы, почему PHP имеет такие странные устаревшие имена функций? Возможно, вы будете более чем удивлены, когда узнаете об этом…
PHP Manual Master Pieces-это веб-сайт, на котором перечислены
«Сверкающие драгоценные камни, найденные в официальной документации PHP»
Это действительно хорошее чтение, но только если вы разбираетесь в PHP и некоторых замечательных предложениях, найденных в документации по PHP, и, в частности, в комментариях пользователя.
Хотя это представляет интерес в основном для PHP-программистов, недавний пост имеет достаточно шокирующую ценность, чтобы быть распространенным среди более широкой аудитории, которая может либо пожалеть PHP-разработчиков, либо глупо посмеяться в ванне злорадства.
Сообщение на форуме PHP documentation php.internals начинается с достаточно невинного вопроса. Почему функции PHP не называются с использованием согласованного стиля, который делает их, если не логичными, то гораздо более регулярными? Предоставленный ответ-это немного истории PHP:
— Ну, там были и другие факторы. htmlspecialchars был очень ранней функцией. В те времена, когда в PHP было менее 100 функций, а механизм хэширования функций был strlen(). Для того, чтобы получить хорошее хэш-распределение имен функций по различным длинам имен функций, имена были выбраны специально для того, чтобы они вписывались в определенный сегмент длины. Это было примерно в конце 1994 года, когда PHP был инструментом только для моего личного использования, и я не слишком беспокоился о том, что не смогу запомнить несколько имен функций.»
Хорошо, возможно, вы не следили за тем, что происходит. Это не столько непонятно, сколько невероятно. Большинство языков используют хэш-таблицу для хранения символов, и это довольно стандартно, но в первые дни PHP имел мало функций, и просто для того, чтобы заставить вещи работать, использовалась хэш-функция длины строки. Да, это верно. Все функции с одинаковым количеством символов в названии были хэшированы в одно и то же место хранения. Поэтому очевидно, что для повышения эффективности системы имена функций должны были быть выбраны таким образом, чтобы хэш — функция равномерно распределяла их по хранилищу-чтобы быть на 100% ясными, это означает, что имена функций были выбраны не из соображений ясности или согласованности стиля, а для обеспечения хорошего распределения длины строк.
Это случай, когда хэш-функция виляет данными….
Конечно, это было 20 лет назад, и ни один языковой дизайнер или разработчик в здравом уме не стал бы использовать такую плохую хэш — функцию, а затем организовывать, чтобы данные превратились в хорошую хэш-функцию за счет лингвистической ясности-или они сделали бы это?
Я предполагаю, что со временем наши ошибки становятся все более тонкими.