我有一些时间和思考基于事件的编程语言。我指的是当你更改一个因变量时,每个变量都被更新的语言。例如,考虑终端应用程序的以下伪代码:
int a = 5
int b = a + 5
// event which is called every 5 seconds
every 5 seconds =>
{
// update a by adding 5
a << a + 5
}
// event which is called when the user presses enter
on enter =>
{
println("b = " + b)
}
按Enter键将打印 b 的值。但结果将仅在前五秒 10 ,因为之后 a 将更新为 10 并在接下来的五秒内< strong> b 等于 15 ,因为 b 取决于 a 。
这个概念当然会带来一些问题,但它也会带来一些好处。想象一下,例如一个GUI应用程序(通常用事件编程),它显示两个输入框和添加两个数字的结果:
------------- -------------
| 5 | + | 6 | = 11
------------- -------------
可以按以下方式编程:
// two inputboxes and a label
Textbox tb1 = new TextBox() { format = "numeric", value = 5 }
Label lbl1_plus = new Label() { value = "+" }
Textbox tb2 = new TextBox() { format = "numeric", value = 6 }
// and the result
Label lbl1_plus = new Label() { value = "= " + (tb1.value + tb2.value) }
多数民众赞成。它有点像excel,但有真正的编程。 有这样的编程语言吗?或类似的东西?
答案 0 :(得分:3)
模糊相似的东西:一般来看功能性反应式编程,尤其是Elm。
答案 1 :(得分:0)
我没有看到这种确切的语言,但它似乎有点像Prolog和Inform的各个方面的组合。即功能和基于约束的编程。
答案 2 :(得分:0)
简单的选择是使用反应式编程。反应式编程是功能编程和基于事件的编程的组合。有很多实用功能可以让你根据较小的事件定义事件或动作。例如,在您的情况下,您可以在每次变量AE
更改时定义事件A
。基于此,你可以触发一个序列,将A
添加到B
并打印出来。您可以在http://reactivex.io/languages.html查看不同语言的实施列表。
可以通过使用CEP(复杂事件处理)工具来处理更复杂的情况。 CEP允许您定义基本事件并描述这些事件的复杂模式并捕获它们的出现。虽然这些工具正处于生命的开始阶段,也许还没有足够成熟的工具,但它们的规格符合您提到的要求。