Что бы вы сделали с Компилятором как Сервисом? - PullRequest
27 голосов
/ 19 ноября 2010

Видя, что мы, вероятно, получим эту функцию в следующем выпуске, что вы думаете или сможете сделать, или что вы хотели бы использовать эту функцию?

Лично, во время генерации кода (скажем, в задаче MSBuild) мне иногда хотелось бы получить код в проекте и таким образом иметь возможность производить лучше (больше кода).

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

Другими словами, я публикую свое «Намерение» во время написания кода, и у меня могут быть тяжелые генераторы кода.

partial void InitCommandForStoredProc(ref DbCommand command, string storedProcName);

Учитывая эту информацию в частичном методе, я мог бы сгенерировать правильный код.

Так, что вы все надеетесь сделать с Компилятором как сервисом?

Ответы [ 5 ]

58 голосов
/ 08 апреля 2011

Чтобы дать (один) практический ответ, IntelliSense LINQPad получит огромную выгоду от CaaS.Это позволит автозаполнению работать как с C #, так и с VB (при условии, что CaaS работает и для VB).Это также облегчит написание новых интересных инструментов рефакторинга.

Дайте нам CaaS, и я сделаю LINQPad демонстрацией того, что вы можете с ним сделать:)

Эта функция далекослишком хорошо, чтобы ждать, пока C # 6 / VB 12

19 голосов
/ 19 ноября 2010

Учитывая, что мы, вероятно, получим эту функцию в следующем выпуске

Мы не объявили о планировании или отгрузке транспортных средств для какой-либо функции или продукта, связанных с "компилятором как услугой"стратегия.CaaS - это долгосрочная долгосрочная стратегия о том, как мы надеемся строить архитектуры компиляторов в будущем.Это не языковая функция, это стратегия создания инструментов.На недавнем PDC Андерс сделал несколько демонстраций того, что можно было бы сделать с помощью таких инструментов, но он специально не сказал, когда что-то подобное будет доставлено.Вы должны не ожидать этого в ближайшее время.Единственная функция, о которой мы объявили, будет в следующем выпуске - это функция асинхронного ожидания в C # 5, и мы также не объявили расписание для этого.

Что вы тоже можете сказать?думаю, что вы сможете сделать или вещи, которые вы хотели бы использовать эту функцию?

Хотя я лично очень заинтересован в ответах на этот вопрос, я отмечаю, что это не хороший кандидатдля вопроса StackOverflow.Это расплывчато, умозрительно и субъективно, а не о конкретной технической проблеме кодирования.

Спасибо за то, что предоставили свои сценарии;они полезны для меня.

ОБНОВЛЕНИЕ: октябрь 2011

Мы только что отправили предварительный выпуск проекта "Compiler As A Service", он же "Roslyn".

Мы все еще не объявляем о корабельном транспортном средстве;это будет пост Visual Studio 11.

7 голосов
/ 05 мая 2011

Я думаю, что это сделает процесс ткачества, который делают Aspect Oriented frameworks, гораздо более мощным. Сейчас они почти все используют какую-то хакерскую технику, которая ставит требования к вашей реализации, такие как наследование от ContextBoundObject, или делает все ваши методы виртуальными. Наличие CaaS сделало бы рамки AOP первоклассными гражданами в .NET, и я думаю, что это было бы огромным преимуществом.

3 голосов
/ 22 августа 2011

Я подозреваю, что метапрограммирование сделает огромный шаг вперед с CaaS. Я думаю, что такие вещи, как макросы Lisp, можно будет эмулировать. Я также с нетерпением ожидаю возможности манипулирования синтаксисом для таких вещей, как внутренние DSL или имитации синтаксиса из других языков, например, Мне нравится синтаксис Python для списков и кортежей. Я не знаю достаточно о CaaS, чтобы сказать, возможно ли все это, но я могу представить это.

3 голосов
/ 24 ноября 2010

В эпизоде ​​# 541 .NET Rocks !, Андерс сказал, что темой C # 5 будет «Компилятор как услуга».

Андерс Хейлсберг: Могу сказать, что одна из вещей, над которой мы работаем, это тема и каждый релиз имеет своего рода тему.

Ричард Кэмпбелл: Верно.

Андерс Хейлсберг: В 4.0 можно было бы сказать, что тема «Динамическая», а в 3.0 это была LINQ. тема для 5.0 - это компилятор в сервисе, это то, как мы думаем об этом

http://www.dotnetrocks.com/text/0541/index12.html

С апреля 2010 года, когда этот подкаст транслировался, дальнейшие объявления на PDC 2010 года указывают на то, что тема больше не будет Compiler as a Service, а вместо этого будет асинхронным программированием. Не было сделано никаких объявлений, указывающих на необходимость смены темы.

...