Pull to refresh

Comments 6

По мне так дженериков через аннотации хватает, разве что можно добавить native-аннотации типа #[Template] #[Extends] #[Implements], чтобы IDE-шкам легче было индексировать.

В одном из вариантов предлагалось стандартизировать аннотации типов через атрибуты, чтобы все использовали одинаковые, а не придумали свои.

PHP Compile Time Generics: да или нет?

Нет.

А какие ещё могут быть дженерики ? в первую очередь нужно думать о бенефитах которые это всё предоставляет, а исходя из прочтения оригинальных статей я их для себя так и не смог вывести. Возможно сообществу стоило сместить акцент именно на это, например тотальная типизация могла бы быть использована для кодогенерации в какой нибудь Си. Но пока что это выглядит как тотальное усложнение без видимых преимуществ (о чем критики и говорят упоминая стат анализаторы которые не дают импакта на производительность). Надо продолжать работать, например над библиотеками для ML о чем Пронский и переживает за уход разрабов из стэка в питонисты например. Только тогда комьюнити будет расти и набираться свежей крови.

Пока что я против, по крайней мере до момента когда не появится вменяемый роадмэп который наглядно объяснит где это можно использовать и принесёт преимущества

Нет. В PHP в принципе нет ничего Compile-Time, все в Run-Time. Этой концепции и следует придерживаться в дальнейшем.

Не нужны эти рантайм дженерики. Таких хватает. Может быть, стоит только через атрибуты их как-то писать, а не через phpdoc.

Раз уж упомянули про ковариантность и контравариантность, а точнее, про ограничения на сужение и расширение типов. Может кто-нибудь объяснит? Я так понимаю, эти ограничения нужны для соблюдение принципа подстановки Лисков. Но этот принцип можно нарушить еще тысячью и одним способом. Какой толк от этих ограничений тогда?

Кроме того, этот принцип не всегда нужно и возможно соблюдать, он не является какой доказанной теоремой или аксиомой. А точнее, его нарушение может быть правильно учтено в логике программы так, что он как бы и не нарушается. Вообще, язык программирования не должен диктовать программисту, как реализовывать логику программы. Есть различные стандарты, PSR, но ЯП же не проверяет их соблюдение. Так почему бы не убрать эти ограничения, и не позволить хоть сужать, хоть расширять тип, как в параметре, так и возвращаемом значении? Или может в реализации этого есть какие-то технические сложности? И пусть оно проверяется статанализом, если нужно. Хорошо хоть через phpdoc можно любой тип задать...

Sign up to leave a comment.

Articles