Здравствуйте, hi_octane, Вы писали:
S>>Тем более что добавить новую фишку и ничего не поломать не так-то просто. Вот тебе навскидку вопросы:
S>>ну и тд и тп.
_>4 года назад мы спорили о микроменеджменте фич языкаАвтор: hi_octane
Дата: 03.11.10
. Эта штука ущербна по определению. И Эрик Липперт уже ушёл, а ничего в головах людей работающих над компилятором C# не изменилось
Ну вот смотри. Ты автор языка, которым пользуются дофигищща разработчиков.
Вот тут не особо скромничая вообще загнули про "C#, the language used by an estimated six million developers worldwide", но ок, сократим на порядок, до 600k.
Даже тупо по методу монте-карло, каждая из сотни возможностей шарпа кем-то используется, причём весьма нетрадиционным способом. Любое ломающее изменение обязательно затронет несколько разработчиков, причём это "затронет" обязательно выразится в падении продаж студии и в необходимости тратить ресурсы на сопровождение предыдущих версий VS.
Потому что потерь для долгоживущего проекта от "остаёмся на старой версии" нет никаких, если не считать ЧСВ разработчика. А вот переезд на что-то новое, при наличии ломающих изменений, надо аргументировать. Опять-таки чем-то кроме ЧСВ разработчика
Также из этого следует, что новые фичи тоже нельзя добавлять "просто так", они могут помешать развитию языка через итерацию-другую. Вопрос про custom string interpolator как раз из этой группы.
Оценить, насколько эта стратегия выигрышная, очень легко.
2008:
Client (Windows Operating System)
Revenue: $16,865,000,000
Operating Income: $13,052,000,000
...
Server and Tools (Windows Server, Microsoft SQL Server, Visual Studio)
Revenue: $13,170,000,000
Operating Income: $4,593,000,000
2013:
Windows (including Surface tablets and other hardware)
Revenue: $19,239,000,000 (+5%)
Operating Income: $9,504,000,000 (-18%)
...
Server and Tools (Windows Server, Microsoft SQL, Visual Studio)
Revenue: $20,281,000,000 (+9%)
Operating Income: $8,164,000,000 (+13%)
(c)
Прибыль от Operating System как бы намекает: всё ок, можно ломать дальше
Так вот, тебе нужно добавить "маленькую" фичу, которая по большому счёту никакой особой пользы не несёт, зато "как в %подставить_язык%!!!".
Так вот, вариант
_>добавить Compile-Time String Formatter класс, использующих API Roslyn и контекст где описана строка — он сам построит дерево вызовов ToString для аргументов и подсунет текущую культуру, текущий форматтер и т.п. Плюс открытая реализация чтобы его можно было подменить/расширить, и тогда базовый вариант будет доступен всем, а на кодеплексе сами размножатся самые нетривиальные форматтеры, от поддерживающих абсолютно все фичи которые там обсуждаются + те до которых мы никогда не додумаемся.
— это неправильный ответ. Потому что всего-то надо:
* добавить AOP-style расширения шарпа, обеспечить их поддержку вместе с dynamic/expression trees.
* отполировать API рослина до пригодности для массового написания расширений (на сегодня это мяхко говоря не так).
* объяснить 600k клиентам, что если им что-то не нравится, они всегда могут сами допилить язык до нужного им состояния.
Сорри, но изначально roslyn team всего-то собиралась транслировать $"Hello, {world}!" в string.Format("Hello, {0}!", world). И даже для такой мелочи нужно рассмотреть тонну вопросов, т.к. потом решение поменять будет слегка поздновато.
С вашим вариантом фичу надо ждать ближе к седьмому шарпу