我必须在我们的产品中实现一些脚本功能。脚本通常用于简单的事情,例如:
IF param1 > 5 + param3 AND current time > 18.00:
SET param2 TO 3
ELSE
SET param2 TO 4
另一个非常常见的任务是让参数在一天内变化,最好使用一些带有可在视觉上移动的设定点的线图等。
现在,我需要获得如何实现这一点的灵感。我们的客户今天使用的非常过时的工具只不过是一个图形基本方言:您不必以纯文本键入脚本,但可以拖动符号,如“IF”,“THEN”,“ELSE”,“参数” ,“当前时间”等,在画布上,你必须知道和理解语法和语义。我想我们可以做得更好。
我一直在寻找图形语言,但我还没有找到一个引人注目的系统。
例如,有Lego Mindstorm语言,这非常简单,但它非常注重自动化,并且不能很好地处理数学和逻辑。有labview,对于典型的用户来说似乎有点过于复杂。有用于PLC的梯形图编程,但我的经验是它们也非常注重自动化,并且不能很好地处理数学。有雅虎管道和一些软件合成器的互连盒方法,但是当需要数学时它们也很麻烦,控制序列也不是很自然。然后是非常简单的向导式替代方案,例如Outlook和Evolution中的过滤器,但我认为它们不够灵活。
那么,你偶然发现了什么样的图形语言? (我知道几乎没有程序员,包括我自己,喜欢这些语言,但我认为它们是有目的的。)
答案 0 :(得分:1)
您是在寻找表达式树的图形语言还是命令式语言?
以下是我过去使用过的几种图形语言。不幸的是,它们不是通用的或独立的产品,因此它们只是一种灵感:
Unreal Kismet:基于节点的图形化脚本游戏脚本环境。基于事件生成器和操作。每个节点都可以获取输入事件并生成输出事件。非常适合简单的脚本编写,游戏需要对游戏中的某些事件作出反应(当玩家进入触发音量等时锁门)。实现复杂的逻辑(例如for循环,数组等)非常繁琐且容易出错,而且这种构造通常通过构建专门的Kismet节点使用UnrealScript来实现。根据事件的流程。
Native-instruments Reaktor:模块化合成器环境。有点像Kismet,但用于生成和处理音频和MIDI事件。同样,创建复杂的逻辑也是乏味的。
着色器/合成/动画树编辑器:许多游戏引擎和3D软件都包含这些。基本上是一个表达式树,其中包含具有输入和输出的运算符节点。
AI behavior trees:不仅仅是表达式树,类似于有限状态机。