7

我们有一个用于机器自动化的 IDE,它允许其用户通过视觉连接对象和组件来开发解决方案。他们还可以使用 C++ 和 C# 编写“插件”。IDE 是使用 .NET 编写的。它的用户通常不是建立在传统的软件开发和编程领域,而是更多地从事技术/电气和自动化工程师的方向,但他们都需要了解 C# 和 C++ 编程的基础知识。

如果我们要为 IDE 本身引入一个宏/脚本语言,包括一个交互式控制台(仅限设计时),我们应该选择哪种语言?它应该是一种动态脚本语言,在 .NET 和 DLR 方面都有良好的基础,因为它是面向未来的,具有良好的支持和良好的发展势头,但对于我们的特殊开发人员来说,学习曲线不会那么陡峭。理想情况下,如果您了解 C++ 和/或 C#,则使用起来应该完全直观——即使您不是坚如磐石的软件开发人员。

更新:目前对我们最有吸引力的选项是使用动态编译的 C#。我们的用户可以继续使用 C#。正如CSI所证明的那样,甚至似乎可以构建一个交互式控制台。你觉得这个选项怎么样?是否有任何我们(由于我们缺乏一般的脚本编写经验)尚未意识到的潜在陷阱/缺点?

4

5 回答 5

2

Python (IronPython) 将获得我的投票。它是一种动态语言,可用于编写 .NET 程序的脚本,并且可以交互地使用它(实际上尚未尝试与 IronPython 交互,但您当然可以使用“常规”python)。不幸的是,对于您的 C++ 和 C# 开发人员来说,它并不完全直观。

您可以只使用 C# 作为您的脚本语言(您可以在运行时编译和执行代码),但您不会获得交互式控制台,而且它不是很像“脚本”。

我认为简单性在脚本语言中非常重要。Python 中的“Hello World”很简单print "Hello World",在 C# 中,您需要命名空间、类、静态 Main 方法等。如果您想使用 C#,可以通过将用户提供的代码包装在函数定义中来模拟它(或者至少是一个类)在编译之前,所以它们的“脚本”可以简单地是函数的内容。这将在一定程度上限制他们在脚本中可以做的事情,这可能是好是坏,这取决于你想要什么。如果他们需要多个类和函数,也许他们需要为您编写一个完整的插件。

于 2010-08-18T20:32:55.000 回答
2

我认为我们要么推出我们自己的基于 c# 的脚本环境,有点像非常酷的CS-Script的简化版本,要么我们将立即集成 CS-Script。

于 2010-09-17T09:17:07.613 回答
1

DLR目前支持的动态语言 IronRuby 和 IronPython的未来并不明朗。不清楚的是微软在这 2 方面的方向。在我从 The Gu 或更高版本那里听到之前,我会避免对这 2 中的任何一个做出决定。这对你今天没有帮助,为你的用户做出设计决定。我觉得 IronPython 将保留支持,但这只是毫无根据的猜测。

对于 .NET 脚本,还可以考虑 Boo。

Boo 是一种面向对象的静态类型编程语言,旨在利用公共语言基础结构对 Unicode、国际化和 Web 应用程序的支持,同时使用受 Python 启发的语法1并特别关注语言和编译器可扩展性。一些值得注意的特性包括类型推断、生成器、多方法、可选的鸭子类型、宏、真正的闭包、柯里化和一流的函数。

于 2010-08-18T20:33:18.697 回答
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 );
于 2010-08-18T20:39:07.613 回答
1

如果你看看微软在其产品的脚本/自动化方面的发展方向,PowerShell 将是目标。

开发您的自定义主机和提供程序应该很好地集成到您的 .NET 应用程序中。

于 2010-09-17T09:25:08.323 回答