我们有许多电子测试技术人员,几乎没有编程经验。我想要一种易于学习的脚本语言,它具有简单宽松的语法,可以与.NET集成并轻松调用暴露的静态或单例实例方法。什么脚本语言可以满足这些要求?
注意:Perl被删除了,C#脚本会很好但语法有点无法容忍。
编辑:我希望能够做到这样的事情。
Instrument("MultiMeter1").Measure
if (LastMeasurement.IsInRange(50,100))
{
Test.Pass = true;
}
答案 0 :(得分:8)
短名单包括
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)
还有IronRuby。我还没有看到嵌入它的参考文献,但我没看过。
答案 3 :(得分:2)
答案 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-Sharp,now 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 脚本/功能/势在必行/面向对象的 编程语言是一种 很多实用的奇妙基础 编程任务。
您可能会感兴趣的一些事情包括:
一旦你克服了“它不是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变得更容易。