Подтвердить что ты не робот

Что бы вы сделали с компилятором как службой

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

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

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

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

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

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

Итак, что вы все надеетесь сделать с Compiler в качестве сервиса?

4b9b3361

Ответ 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, чтобы сказать, возможно ли все это, но я могу представить это.