Как стать автором
Обновить

Комментарии 8

А что это на практике дает помимо кросс-языкового копипаста?
Например возможность использовать АОП «из коробки».
Да хотя-бы то, что ASPX и сборки XMLSerializer-а можно будет компилировать без создания временных файлов.
Возможностей очень много: анализ кода (рефакторинг, подсчёт метрик и т.п.), трансляция кода, модификация исходной функциональности языков.
метапрограммирование
Наконец-то можно будет манипулировать синтаксическим деревом, а не байткодом. Для ряда задач это существенно упростит работу, которую через разнообразные Cecil-ы было делать очень непросто. Собственно даже сам компилятор от MS часть работы делает на уровне дерева, а не байткода — например, переписывает IEnumerator+yield функции в классы…
Mono.CSharp чем не устраивает? На нём всякие REPL делать неимоверно удобно, API богатое, всё это счастье выполнено в виде библиотеки открытыми исходниками.
Можно было кратко описать примеры, которые были на видео по ссылке:
1. Компиляция строк в код в рантайме, например, можно строку «int sum(int x, int y) {return x+y;}» преобразовать в делегат парой строк кода.
2. Изменение кода через контекстное меню visualstudio (я так понимаю, что-то вроде расширений для visualstudio), например, все авто-свойства класса преобразовать в свойства для интерфейса INotifyPropertyChanged. (Но тут речь именно о модификации исходного кода, а не влияния на процесс компиляции)
3. Преобразование кода из одного языка в другой при копировании, о чём написано выше.
4. Интерактивный режим, как в F#, когда можно вводить код и он будет исполняться по мере ввода.

Честно говоря, я так и не увидел того, чего так хотелось — метапрограммирования, хотя многие надеялись увидеть его уже в C# 5.0

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

Публикации

Истории