Форум
Компьютерные священные войны
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, vdimas, Вы писали: V>Здравствуйте, Qbit86, Вы писали: Q>>>>Спасибо, такой фичи не надо. Нужна такая фича, чтобы варианты проверялись/энфорсились в момент чтения/написания обобщённого кода, а не когда-то потом при инстанцировании пользователем в непонятном месте. V>>>Тогда это будет не совсем обобщённый код, а так, обманка, типа генериков. Т.е. прибитие гвоздями к конкретным интерфейсам. Q>>Констрейнты и описания параметров «шаблонов» — это абсолютно нормальная практика во всех современных ЯП: Rust, Scala, Ceylon, Haxe, etc. Это как типы в строго и статически типизированном языке V>Похоже, что ты забываешь, что речь всё еще о стадии компиляции и такое несоответствие "констрейнам" (возникни оно в коде) в С++ в любом случае именно на этой стадии обнаруживается. Более того, в С++ легко проверить наличие нужного метода/методов даже в декларативном стиле уже имеющимися ср-вами языка (т.е. ср-в языка достаточно для разработки библиотечных приблуд требуемой функциональности). V>Если бы ты взял себе за труд проверить свой аргумент на его действенность, ты бы с пол-тыка нашел примеры на этот счет даже на этом сайте. :xz: Q>>ты же не говоришь, что типы ослабляют настоящую мощь void* или динамической типизации? V>Пока что я говорю, что ты споришь сам с собой, т.к., будучи применённым к наблюдаемой объективной реальности, подобные "аргументы" просто не существуют в виде именно аргументов. Q>>Параметрический полиморфизм — обширная область в computer science и в частности теории типов, по ней пишут много книжек и пейперов. А ты говоришь «обманка типа генериков». V>И снова ты прибегаешь к прямой лжи, пытаясь выдать генерики дотнета за параметрический полиморфизм как таковой. )) V>Практически про любой современный язык, поддерживающий параметрический полиморфизм, можно рассуждать лишь в сравнительной степени (есть ранги такого полиморфизма и степень удовлетворения системы типов языка одному или нескольким рангам). V>В общем, когда речь идёт о реализации параметрического полиморфизма в C# vs C++ - то тут что-либо обсуждать сложно, т.к. у этих языков явно разные весовые категории в плане такого полиморфизма. С++ частично поддерживает параметрический полиморфизм ранга 2, а дотнет даже 1-й ранг окучить не в состоянии. V>Ну и степень consistency в реализации параметрического полиморфизма в дотнете - ниже всякой критики, там просто каша как она есть. :xz: V>Тут даже далеко ходить не надо, например, в дотнете не существует возможности подписаться на некий полиморфный колбэк, хотя можно заменить делегат интерфейсом c полиморфным методом. V>В этом смысле мне дотнет напоминает какой-нить скриптовый язык, типа Питона, с его непоследовательностями и даже откровенными глупостями в дизайне. Все-таки, плюсы куда как более строги и последовательны и, что примечательно при взгляде на новшества языка - сам язык двигается в сторону именно большей строгости и последовательности. Про C# можно сказать ровно противоположное - в язык стараются впихнуть массу "практически полезных вещей". При том, что сам язык не позволяет выражать многие из "полезных вещей" в библиотечной форме, такими вещами требуется нагружать компилятор и именно в этом моменте C# перестаёт отличаться от какого-нить "навороченного" скриптового языка, где любые языковые "вкусности" получаются исключительно и только через хардкодинг их в интерпретаторе.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …