Здравствуйте, Ziaw, Вы писали:
S>>А вот compile-time метагенерация скорее всего будет. Или в c#7 или в c#8.
Z>Макросы и есть компайл-тайм генерация. Как только она появится — начнут думать в сторону ее упрощения.
Тут слегка о другом речь, метапрограммирование на атрибутах и макросы/квазицитирование — это всё-таки разные штуки и покрывают они разный набор задач. Разница — как между AOP и DSL, лучше их обсуждать по отдельности.
С compile-time-реврайтерами никаких принципиальных проблем нет. Более того, с первых версий студии реврайтеры используются для кучи вещей — от кодогенераторов для настроек/ресурсов и до code contracts (начиная с vs 2010 конечно). Речь только о том, чтобы добавить публичное и поддерживаемое API для этой радости, что в принципе тож несложно. Для roslyn code fix нечто подобное уже сделано.
С _примититивным_ квазицитированием (только для избавления от генерации AST вручную) особых проблем тож нет,
var stubCode = SyntaxFactory.ParseExpression(@$"
public {typeName} {propertyName}
{
get { return {fieldName}; }
set
{
{fieldName} = value;
OnPropertyChanged(""{propertyName}"");
}
}")
— и вперёд

Конечно, назвать это полноценными макросами уровня N — сова лопнет, но для AOP-кодогенерации и этого за глаза достаточно.
А вот внедрять поддержку расширений синтаксиса аля всё тот же N — ну не лезет оно никак в шарп

Другой язык получится. Точнее, тот же немерль, вид сбоку. Да и нафиг не нужно, по большому счёту.
Дисклаймер: разумеется, будут частные случаи, но как всегда, специализированный язык тут будет выигрывать с большим отрывом.
>До расширения синтаксиса C# может и не дожить, но сами макросы и квазицитирование скорее всего успеет попробовать. Темпы развития радуют и вектор у него немерловый.
Вектор не немерловый, ибо сценарии разные.
Вообще, это лучше не мне, а девелоперам шарпа высказывать. Я это
уже сделал, есть желание поправить — присоединяйтесь.