Re[5]: C# 7 - названия и прочее
От: Sinix  
Дата: 30.04.15 05:17
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Они меня среди "знатоков" просто не заметят. В общем, проверено. Это то место откуда информация доходит до кого надо .


Ну... ок. У меня опыт противоположный, пара предложений в принципе прошла. Но у меня задача попроще была, я не пытался им доказать, что они делают не то, так что спорить не буду


VD>То, то. F#, просто еще несколько старомоден (унаследовал много от ML и далек от ОО-мира).

VD>В Немерле это выглядит так:
Так мы не про N и F# говорим. Проблема не в них, проблема в шарпе — нету там ничего похожего и планов не озвучено. По крайней мере пока.

VD>Если абстрагироваться от оптимизаций, то это чистое наследование.

Под капотом — да, а вот атрибут Variant и по хорошему валидацию от CLR надо бы добавить


S>>Ну да. Но нbкто не запрещает сделать тип с primary ctor но без is operator.

VD>1. Зачем это нужно?
Коллекции, dto-классы и тд и тп. В общем берём любой mutable-тип, если хотим к нему primary ctor — это оно.

VD>2. Я вообще не вижу смысла в этом операторе is. Точнее то не плохая фича для расширяемости ПМ, но по умолчанию ПМ должен работать и без наличия этого метода.

Так и будет. Но вот это
if (point is (var x, var y)) // синтаксис по памяти пишу. По-моему, он не так выглядит.
{
  // do smth with x & y
}

без is operator работать не будет.

VD>В Немерле информация о связи между полями и параметрами конструктора записывается в атрибут Variant (видно в примере декомпилята).

Ну а если Point внутри хранит x и y одним long-ом? Один фиг кастомный оператор нужен.

VD>Рекорд просто лишний. Очередная ошибка дизайна, на мой взгляд.

Ну, дождёмся финального дизайна — тогда и посмотрим. Как показывает опыт, если фишка не проходит по планке качества, её не стесняются выкинуть.



S>>Ну блин, это opt-in возможности. Можно добавлять, можно не добавлять. Без модификатора record такое поведение красиво не сделать.

VD>Возможности которые всегда полезны можно добавлять по умолчанию не думая. Если кому-то нужно вручную что-то реализовать, то они могут переопределить нужные методы врунчую.
Ну а если нам нужен primary ctor, всё остальное не надо?

opt-out вообще не катит для языка, которому надо оставаться совместимым с кодом пятнадцатилетней давности. Иначе ещё через 10 лет получится тут opt-in, тут opt-out а тут рыбу заворачивали.

Даже для куда более полезных not null references режим not null по умолчанию добавлять не будут. Только opt-in, только хардкор.


VD>Сегодня ничего нет. Мы же говорим о C# 7. Смотри на Немерл. Его в C# 5 пророчили многие, но он, похоже, C# и в десятой версии всех фичь не реализует.

Ну так шарп и не немерл. Разные языки, разные ключевые сценарии. А если посмотреть на остальных мейнстримщиков — шарп так вообще цветёт и пахнет


VD>МП — это очень даже хорошо. Когда-нибудь они и до этого дорастут. Но это уже будет C# 10, наверно.


В виде макросов — не верю. Как я понимаю, ядро N2 на сегодня — это Nitra, так? И сама нитра превратилась в генератор dsl на стероидах. Не будут такую мегафишку протаскивать в язык, в котором от рождения макросов не было. Если не хватает шарпа лучше уж взять готовый язык и не мучаться.

А вот compile-time метагенерация скорее всего будет. Или в c#7 или в c#8.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.