Что бы вы сделали с компилятором как службой
Увидев, что мы, вероятно, получим эту функцию в следующей версии, какие из вещей вы либо думаете, что сможете сделать, или вещи, которые вы хотели бы использовать для этой функции?
Лично, во время генерации кода (скажем, в задаче MSBuild) мне иногда хочется, чтобы я мог проверить код в проекте и, следовательно, иметь возможность создавать лучше (больше кода).
Например, если у меня есть частичный класс, который имеет частичный метод с параметром некоторого типа, который отправляется, то во время генерации кода я мог бы использовать эту информацию для генерации лучшего кода.
Другими словами, я публикую свое "намерение" во время написания кода, и у меня могут быть генераторы кода для тяжелой работы.
partial void InitCommandForStoredProc(ref DbCommand command, string storedProcName);
Учитывая эту информацию в частичном методе, я мог бы сгенерировать правильный код.
Итак, что вы все надеетесь сделать с Compiler в качестве сервиса?
Ответы
Ответ 1
Чтобы дать (один) практический ответ, LINQPad IntelliSense принесет огромную пользу от CaaS. Это позволит автозаполнению работать как с С#, так и с VB (при условии, что CaaS работает и для VB). Это также упростит создание интересных новых инструментов рефакторинга.
Дайте нам CaaS, и я сделаю LINQPad ярлыком того, что вы можете с ним сделать:)
Эта функция слишком хороша, чтобы ждать, пока С# 6/VB 12
Ответ 2
Увидев, что мы, вероятно, получим эту функцию в следующей версии
Мы не объявляли о планировании или отправке транспортных средств для какой-либо функции или продукта, связанных с стратегией "компилятор как услуга". CaaS - это долгосрочная стратегическая стратегия долгосрочного, направленная на то, как мы надеемся построить архитектуры компиляторов в будущем. Это не язык, а стратегия для создания инструментов. В недавнем PDC Anders делали некоторые демонстрации того, что можно было бы делать с такими инструментами, но он специально не говорил, когда что-то подобное будет поставляться. Вы не должны ожидать этого в ближайшее время. Единственная функция, о которой мы объявили, будет в следующем выпуске - это асинхронная функция ожидания С# 5, и мы также не объявили о расписании для этого.
Каковы некоторые из вещей, которые вы либо думаете, что сможете сделать, или вещи, которые вы хотели бы использовать эту функцию?
Хотя я лично очень заинтересован в ответах на этот вопрос, я отмечаю, что он не является хорошим кандидатом на вопрос StackOverflow. Это расплывчатое, умозрительное и субъективное, а не конкретная проблема технического кодирования.
Спасибо, что дали ваши сценарии; они мне полезны.
ОБНОВЛЕНИЕ: октябрь 2011
Мы только что отправили предварительный выпуск проекта "Компилятор как услуга", также известный как "Рослин".
Мы все еще не объявляем корабль; это будет сообщение Visual Studio 11.
Ответ 3
Я думаю, что это сделает процесс ткацкого процесса, который делает Aspect Oriented frameworks намного мощнее. Сейчас они почти все используют хакерскую технику, которая ставит требования к вашей реализации, такие как наследование из ContextBoundObject, или делает все ваши методы виртуальными. Если CaaS сделает AOP-каркасы первоклассными гражданами в .NET, и я думаю, что это будет огромной выгодой.
Ответ 4
В эпизоде # 541 из .NET Rocks!, Андерс сказал, что тема С# 5 будет компилятором как услугой.
Андерс Хейлсберг: Я мог бы сказать вам, что одна из вещей, над которыми мы работаем, - это тема, и каждый выпуск имеет своего рода тему.
Ричард Кэмпбелл: Верно.
Андерс Хейлсберг: В 4.0 вы могли бы сказать, что тема динамическая, а в 3.0 это LINQ. тема для 5.0 - это компилятор на службе, как мы об этом думаем
http://www.dotnetrocks.com/text/0541/index12.html
С апреля 2010 года, когда этот подкаст транслировался, дальнейшие объявления на PDC 2010 указывают, что тема больше не будет компилятором в качестве службы, а будет асинхронным программированием. Не было сделано никаких объявлений, чтобы указать, почему требуется изменение темы.
Ответ 5
Я подозреваю, что метапрограммирование сделает огромный шаг вперед с CaaS. Я думаю, что такие вещи, как макросы Lisp, можно будет эмулировать. Я также с нетерпением жду возможности манипулировать синтаксисом для таких вещей, как внутренние DSL, или имитировать синтаксис с других языков, например. Мне нравится синтаксис Python для списков и кортежей. Я не знаю достаточно о CaaS, чтобы сказать, возможно ли все это, но я могу представить это.