7

У нас есть IDE для автоматизации машин, которая позволяет своим пользователям разрабатывать решения, визуально связывая объекты и компоненты. Они также могут писать «плагины» с использованием C++ и C#. IDE написана с использованием .NET. Его пользователи часто не основаны на традиционной разработке и программировании программного обеспечения, но больше в области технических/электрических и автоматических инженеров, но все они должны знать основы программирования на C# и C++.Какой язык сценариев для нашей .NET-среды на основе .NET?

Если бы мы представили язык макросов/скриптов для самой IDE, включая интерактивную консоль (только время разработки), какой язык мы должны выбрать? Это должен быть динамический язык сценариев, который имеет хорошую основу в .NET и DLR, поскольку он является будущим доказательством и имеет хорошую поддержку и приличный импульс позади него, но также не будет иметь такой крутой кривой обучения для наших специальных разработчиков. В идеале это должно быть совершенно интуитивно понятным, если вы знаете C++ и/или C#, даже если вы не являетесь разработчиком программного обеспечения с прочной конструкцией.

UPDATE: Этот вариант, который в настоящее время является наиболее привлекательным для нас, заключается в использовании динамически скомпилированного C#. Наши пользователи могут продолжать использовать C#. Кажется, что возможно создать интерактивную консоль, как доказывает CSI. Что вы думаете об этом варианте? Существуют ли какие-либо потенциальные недостатки/недостатки, которые мы (из-за нашего отсутствия опыта работы со сценариями в целом) пока еще не знаем?

+0

Ну, похоже, что DLR не будет поддерживаться в будущем, поэтому вам придется либо избавиться от требования «будущего доказательства», либо использовать что-то другое, кроме DLR. –

+0

@ Рихард - Зачем им это делать? – ChaosPandion

+0

@ Рихард Хайн - Цитата? –

ответ

2

Я думаю, что мы либо ро ll наша собственная среда сценариев на основе C#, вроде как упрощенная версия очень классного CS-Script, или мы сразу же интегрируем CS-Script.

2

Python (IronPython) получит мой голос. Это динамический язык, который можно использовать для сценариев .NET-программ, и вы можете использовать его в интерактивном режиме (на самом деле не пытались взаимодействовать с IronPython, но вы, безусловно, можете использовать «обычный» python). К сожалению, это не будет полностью интуитивно понятным для ваших разработчиков C++ и C#.

Вы можете просто использовать C# в качестве языка сценариев (вы можете компилировать и выполнять код во время выполнения), но вы не получите интерактивную консоль, и это не очень «скрипт».

Я думаю, что простота очень важна на языке сценариев. «Hello World» в Python - это просто print "Hello World", где в C# вам понадобится пространство имен, класс, статический основной метод и т. Д. Если вы хотите использовать C#, вы можете имитировать это, обернув код, предоставленный пользователем, внутри определения функции (или, по крайней мере, класс) перед компиляцией, поэтому их «скрипт» может просто быть содержимым функции. Это несколько ограничит то, что они могут сделать в скрипте, что может быть хорошим или плохим, в зависимости от того, что вы хотите. Если им нужны несколько классов и функций, возможно, им понадобится написать полный плагин в вашем случае.

+0

Что на самом деле означает «сценарий» в реальной жизни? Какие функции привносят языки сценариев в таблицу, которые важны/полезны, которых нет в C#. – bitbonk

+0

Мой комментарий был слишком длинным, поэтому я отредактировал свой ответ. Кроме того, одна из основных функций, которая устанавливает языки сценариев отдельно, очень динамична (и динамически типизирована). Хотя в .NET 4.0 есть новые динамические расширения, C# по-прежнему является довольно статическим (и статически типизированным) языком. – Bob

+0

Итак, основная причина иметь язык с динамически типизированным языком - это ввести меньше символов? – bitbonk

1

Будущее неясно для DLR поддерживаемых в настоящее время динамических языков IronRuby и IronPython. Что непонятно, руководство Microsoft на этих 2. Пока я не услышу от Gu или выше, я бы не принял решение ни по одному из этих 2. Это не поможет вам сегодня, приняв дизайнерское решение для ваших пользователей. Я понимаю, что IronPython сохранит поддержку, но это просто необоснованная спекуляция.

Для сценариев .NET также рассмотрите Boo.

Boo является объектно-ориентированным, статически типизированный язык программирования, который стремится использовать поддержку Common Language Infrastructure для Unicode, интернационализация и веб-приложений, при использовании Python-вдохновил синтаксис 1 и особый акцент на языке и расширяемость компилятора. Некоторые особенности примечания включают вывод типа, генераторы, мультиметоды, опциональную утиную печать, макросы, истинные закрытия, currying и первоклассные функции.

+0

'Динамическое языковое исполнение (DLR) - это новый API в .NET Framework 4. Он предоставляет инфраструктуру, поддерживающую динамический тип в C#' http://msdn.microsoft.com/en-us/library/dd264736.aspx –

+0

@ Лукас: замечательный материал с копией/вставкой. C# компилируется, а не интерпретируется. OP хотели варианты для «языка динамических скриптов». Не уверен, что ваш комментарий связан с Boo. –

+0

скопируйте и вставьте снова :) Вы сказали: «Будущее не понятно для DLR». Совершенно ясно, если Microsoft не захочет заменить его на C# 5+. Даже если это так, DLR сама по себе безопасна до тех пор, пока C# 4 не будет поддерживаться. –

1

я встроил немного C# редактор приложения и скомпилирован/побежал результаты

ала

var codeProvider = new CSharpCodeProvider( 
       new Dictionary<string, string> { { "CompilerVersion", "v3.5" } }); 

var parameters = new CompilerParameters(); 
// add any of your 'library' dlls as references 
parameters.ReferencedAssemblies.AddRange(dlls.ToArray()); 
parameters.OutputAssembly = outputPath; 
CompilerResults r = codeProvider.CompileAssemblyFromFile(parameters, sourceFiles); 
+0

C# будет наиболее привлекательным для наших пользователей. Нам просто нужно убедиться, что на самом деле там все, что вы обычно ожидаете от среды sctipting (например, интерактивной консоли). – bitbonk

1

Если вы посмотрите на то, как Microsoft руководит сценариями/автоматизацией своих продуктов, PowerShell будет нацелен.

Разработка вашего собственного хоста и провайдера должна быть хорошо интегрирована в ваше приложение .NET.