когда даже не знаешь с чего начать.
И при этом становится ещё более непонятно, зачем же он в таком виде сейчс кому-то нужен.
Сам он настолько экзотичный, что я скорее отнес бы php к эзотерическим языкам программирования и поставил где-нибудь рядом с HOtMEfSPRIbNG.
Такое ощущение, что его специально делали как упражнение в том, насколько кривую и поломанную технологию можно создать.
Но если по пунктам, то вот мои впечатления:
1. Настройка и установка php - это весьма своеобразная история. php.ini - это потрясающее изобретение, сложно найти настройки ЯП или сервера хуже.
2. Самое смешное, что по умолчанию php.ini ставится совсем бессмысленный и со всем отключенным. У него даже не хватает настроек по умолчанию, чтобы запустить пакетный менеджер.
3. То, где может искаться php.ini - это целый здоровый список в документации с целой кучей вариантов в зависимости от ОС и сервера.
4. Сюда же идёт тот факт, что php всегда намертво связано с веб-сервером и не может толком использоваться вне его. Так что в этом плане его даже сложно назвать полноценным языков программирования, скорее просто скрипт для уже готового веб-сервера.
5. Так что в итоге всегда получается взрывная смесь между настройками веб-сервера и настройками интерпретатора. Так что в сложных случаях веселье обеспечено.
7. Ещё важно заметить, что интерпретатор в общем случае живет в рамках одного http запроса.
8. Это значит, что реализация любых кэшей, веб-сокетов, джобов и тому подобного сразу же превращается в удивительный гемморой.
9. Долгое время из-за этой особенности авторы пхп просто не заморачивались с утечками памяти, т.к. все равно он сдохнет после запроса. Поэтому любые долгоиграющие процессы на пхп - были миной замедленного действия.
10. Точно так же они не заморачивались с обработкой ошибок: привет error_reporting, @ и тому подобный бред. Это, наверное, один из немногих распространенных языков, для которого нормально проглатывать ошибки.
11. Сам язык не менее удивительный и радует сюрпризами повсюду.
12. Начну с простого: такое ощущение, что авторы специально каждый раз выбирали наиболее непредсказуемых синтаксис для новой фичи, чтобы удивить разработчиков.
13. Имена переменных начинаются с $. Есть ->, но указателей нет. Есть касты через (boolean), но статически определенных типов у переменных нет. Неймспейсы задаются через \. Замыкаемые переменные обозначаются через use и т.п. и т.д.
14. Стандартная библиотека одна в своем роде. Умудряется сочетать в себе все возможные стили именования функций. Автор языка сам признает, что выбирал названия вначале так, чтобы хорошо работала хэш таблица для хранения функций с хэшем в виде длины строки (!!!)
15. Сюда же относится уникальный phpшный array, который так и не определился массив ли он, список или хэш таблица.
16. Есть подобные же вопросы о неконсистентности и к местному ООП. Зачем-то в динамический язык скопировали ООП из джавы. Зачем, почему, непонятно. А потом, кстати, ещё и трейты добавили, но со своим, уникальным стилем.
17. При этом местную стандартную библиотеку в процедурном стиле никто и не подумал менять или хотя бы сделать обертки для неё.
18. НО! Есть (ВНЕЗАПНО) набор коллекций в ООП стиле. Опять-таки, почему, зачем, вопрос открытый.
19. В какой-то прекрасный момент авторам пришла идея добавить в язык типизацию. Конечно же сделали они её криво.
20. Типы доступны только для аргументов функций (c 5й версии) и с 7й версии для возвращаемого значения.
6. Надо ли напоминать о том, что даже номера версий у него странные и 6й версии не было в принципе?
⓺. Надо ли при этом напоминать о том, что 6ую версию они не выпустили, потому что не справились с планируемой поддержкой юникода в ней?
21. Причем поддержка типов вводилась очень постепенно. Вначале были только классы, потом стали потихоньку добавлять примитивы. Причем, в языке, конечно же, нет дженериков и даже типа для функции, кроме callable.
22. Долгое время, конечно же, не было пакетного менеджера, но в итоге добро всё же победило.
легаси само себя не будет поддерживать
и все? пффф https://wtfjs.com/
> Сам он настолько экзотичный, что я скорее отнес бы php к эзотерическим языкам программирования и поставил где-нибудь рядом… Я бы отнёс автора к экспертам
Обсуждают сегодня