寻找一种可以轻松与.NET集成的简单脚本语言

时间:2009-06-23 18:17:58

标签: .net scripting

我们有许多电子测试技术人员,几乎没有编程经验。我想要一种易于学习的脚本语言,它具有简单宽松的语法,可以与.NET集成并轻松调用暴露的静态或单例实例方法。什么脚本语言可以满足这些要求?

注意:Perl被删除了,C#脚本会很好但语法有点无法容忍。

编辑:我希望能够做到这样的事情。

Instrument("MultiMeter1").Measure
if (LastMeasurement.IsInRange(50,100))
{
   Test.Pass = true;
}

12 个答案:

答案 0 :(得分:8)

短名单包括

  • PowerShell的
  • IronRuby的
  • IronPython的

PowerShell有很多功能,而且它将安装在所有Win2008和Win7安装上。

语法并不完全宽容,但PowerShell会尽其所能地根据需要转换类型,此外它还有一个强大的动态类型系统,可以帮助理解XML,COM,AD和WMI类型。

这里只是关于类型转换的几行

> $five = "5"
> $five + 5
55
> [int]$five + 5
10
> [datetime] "Nov 12"
Thursday, November 12, 2009 12:00:00 AM

编辑:为了解决您的情况,您可以创建一个包含.net类的cmdlet(或v2中的模块),然后执行类似

的操作
$meter = Get-Measurement MultiMeter1
if ($meter.IsInRange(50,100))
{   
   Set-TestResult $meter $true
}

答案 1 :(得分:5)

为什么不使用PowerShell?

答案 2 :(得分:3)

查看IronPython

还有IronRuby。我还没有看到嵌入它的参考文献,但我没看过。

答案 3 :(得分:2)

Dobbs博士有一篇关于在你的应用程序中嵌入VB.NET的文章:

  

Add VB.NET Scripting to .NET Apps (Dr Dobbs Journal)

那就是说,我认为选择DLR种语言之一可能就是前进的方向。

答案 4 :(得分:1)

PowerShell可能是个不错的选择。

答案 5 :(得分:1)

我建议查看Dynamic Language Runtime项目。已经有很多语言可以运行,包括IronPython和IronRuby。

这些都与.NET很好地集成(这就是重点)。

答案 6 :(得分:1)

VBScript不是答案,但是使用.NET时,在沙箱中调用新的.NET代码并不是很困难,即使访问提供的对象,因为大多数建议已经在使用它,只是为了运行像Python这样的语言。

那么,为什么不在那里插入VB * .NET *。作为一名开发人员,VB并不是一门优秀的语言,但如果你想要一种“简单”的语言,那么BASIC变体似乎就符合要求。如果它没有达到你想要的方式,.NET意味着只要包含CLR编译器,你就可以灵活地替换上述任何语言。

答案 7 :(得分:1)

F#(又名F-Sharpnow part of VS2010)有许多您可能会发现值得关注的功能。从F# At Microsoft Research页面引用:

  作为研究计划开发的F#   语言提供了很多   抢手的组合类型   安全,简洁,性能,   表达性和脚本,与所有   跑步的好处   高品质,良好的现代化支持   运行时系统。这种组合有   语言非常成功   现在正在转向一个   .NET上完全支持的语言   平台。一些原因   移动是F#给你的:

     
      
  • 简洁,类型推断的函数式编程,
  •   
  • 像Python和其他语言的交互式脚本,
  •   
  • 交互式数据可视化环境的基础,
  •   
  • 类型推理与安全的结合,如ML,
  •   
  • 与流行的OCaml语言共享的交叉编译核心
  •   
  • 类似于C#,
  • 的性能配置文件   
  • 轻松访问所有功能强大的.NET库和数据库   工具,
  •   
  • 具有类似于Scheme的基础简单,
  •   
  • 可以使用的顶级Visual Studio集成选项   随意的Visual   Studio 2008 Shell
  •   
  • 一流的语言研究人员团队的经验   提供高品质的记录   实现,
  •   
  • 并发,可移植和。的本机代码执行速度   分布式.NET Framework。
  •   
     

提供的唯一语言   像这样的组合是F#   (发音为FSharp) - a   脚本/功能/势在必行/面向对象的   编程语言是一种   很多实用的奇妙基础   编程任务。

您可能会感兴趣的一些事情包括:

  • 它可以推断类型,这意味着您需要很少指定类型信息,因此它看起来像脚本,但生成的代码最终是类型安全且快速的。
  • 它会自动检测何时可以生成“通用”代码以在多种数据类型上运行。
  • 它并不要求所有东西都在一个类中 - 独立的功能得到很好的支持。
  • 它既有命令行REPL又与Dev Studio集成,允许选择代码片段并在托管的REPL中执行它们。
  • 许多概念可以非常成功地表达,部分原因在于高阶函数,如过滤器,映射和减少列表和序列。
  • VSLab,VS2008的交互式图形插件(即将推出VS2010),类似于MATLABMathematica

一旦你克服了“它不是C”的语法,你就可以快速编写代码并且通常会减少错误(代码更少+类型推断+更高阶函数=更少的错误)。

语法并不像JavaScript那样宽容(事实上,有时它可能会令人沮丧,任何语言也是如此)。但是,对于大多数简单的事情来说,它相当直接。

let a = 1                    // bind 1 to identifier a
let b = a + 1                // bind function which adds 1 and a to b
let s = "Simple add"         // bind string to identifier s
printf "%s: %i %i" s a (b 1)

它具有高阶函数,流水线和lambda,这意味着序列上的数据转换是轻而易举的:

[ 1; 2; 3; 4; 5; 6 ]
|> List.map (fun a -> a + 1)            // add +1 to every item in the list
|> List.reduce_left (fun a b -> a * b)  // Multiply all the elements together

或者,当你变得好的时候,更加成功地写下来:

[ 1; 2; 3; 4; 5; 6 ]
|> List.map ((+) 1)
|> List.reduce_left (*)

答案 8 :(得分:1)

我开发了一种简单易用的电子测试脚本语言,可能正是您所寻找的。我使用VB类型语法通过GPIB或串行接口与仪器通信。它与测试执行程序和图形界面配合使用,可以翻译脚本并对指令进行排序。它仅用于测试。转到http://testview.wordpress.com/2011/11/14/electronics-test-scripting-language/或访问www.ontestengineering了解更多信息。

答案 9 :(得分:0)

我畏缩地说,但是VBScript怎么样?您可以从中创建/调用为COM注册的CLR对象。 COM要求有点像PITA,但很容易实现,vb被称为...宽容的语言,等等!

向VB的粉丝道歉

答案 10 :(得分:0)

不要忘记JScript.NET。

答案 11 :(得分:0)

这是一个旧的交换,但对于那些有兴趣学习PowerShell的人来说,网上有大量的资源。

PowerShell.org ScriptingAnswers.com

另外,我学会了使用PowerGUI和PowerISE,这使得使用PowerShell变得更容易。