Inspiration for easy-to-use, probably graphical, scripting language
我必须在我们的产品中实现一些脚本功能。脚本通常用于简单的事情,如:
1 2 3 4 | IF param1 > 5 + param3 AND current time > 18.00: SET param2 TO 3 ELSE SET param2 TO 4 |
另一个非常常见的任务是让一个参数在一天内变化,最好使用一些带有可在视觉上移动的设定点的线图等。
现在,我需要如何实现这一点的灵感。我们的客户现在使用的非常过时的工具只不过是一种图形化的基本方言:您不必以纯文本格式键入脚本,但可以将诸如"if"、"then"、"else"、"parameter"、"current time"等符号拖到画布上,并且您必须了解语法和语义。我认为我们可以做得更好。
我一直在寻找图形语言,但我还没有找到一个引人注目的系统。
例如,有一种乐高Mindstorm语言,非常简单,但是它非常直接地指向自动化,并且不能很好地处理数学和逻辑。有LabVIEW,对于典型的用户来说有点太复杂了。有阶梯式编程,可用于PLC的,但我的经验是,他们也非常自动化导向,处理数学不是很好。雅虎Pipes和一些软件合成器采用了相互连接的盒子方法,但当需要数学运算时,它们也会变得很麻烦,而且控制序列也不是很自然。还有一些非常简单的,巫师式的选择,比如前景和进化中的过滤器,但我认为它们不够灵活。
那么,你偶然发现了什么图形语言,并且有点喜欢?(我几乎不认识任何程序员,包括我自己在内,喜欢这种语言,但我认为它们在这里是有目的的。)
你是在寻找表达树类型的图形语言,还是命令式语言?
以下是我过去使用过的几种图形语言。不幸的是,它们不是通用的或独立的产品,因此它们只起到激励作用:
不真实的kismet:一个图形化的、基于节点的脚本游戏脚本环境。基于事件生成器和操作。每个节点可以接受输入事件并生成输出事件。非常适合简单的脚本,游戏需要对游戏中的某些事件做出反应(当玩家进入触发音量时锁上门等)。实现复杂的逻辑(如循环、数组等)非常繁琐且容易出错,并且通常通过构建专门的kismet节点使用unalscript来实现此类构造。基于事件流。
本地仪器扩音器:模块化合成器环境。有点像kismet,但用于生成和处理音频和MIDI事件。同样,创建复杂的逻辑也很乏味。
明暗器/合成/动画树编辑器:许多游戏引擎和3D软件都包括这些。基本上是一个表达式树,其中有带输入和输出的操作符节点。
人工智能行为树:多于表达树,类似于有限状态机。