[英]Does an asynchronous-event-based programing languages exists?
我花了一些時間思考基於事件的編程語言。 我的意思是說,當您更改因變量時,每個變量都會更新的語言。 例如,為終端應用程序考慮以下偽代碼:
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 ,在接下來的五秒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,但是具有真正的編程功能。 有這樣的編程語言嗎? 還是類似的東西?
大概有點相似:總體上看功能響應式編程,特別是Elm 。
我還沒有看到這種確切的語言,但似乎有點像Prolog和Inform方面的結合。 即功能和基於約束的編程。
簡單的選擇是使用反應式編程。 反應式編程是功能編程和基於事件的編程的結合。 有很多實用程序函數可以讓您根據較小的事件定義事件或動作。 例如,在您的情況下,每次變量A
更改時,您都可以定義事件AE
。 基於此,您可以觸發一個序列,將A
添加到B
並打印出來。 您可以在http://reactivex.io/languages.html上以不同的語言查看其實現列表。
通過使用CEP (復雜事件處理)工具可以處理更復雜的情況。 CEP使您可以定義基本事件並描述這些事件的復雜模式並捕獲它們的發生。 盡管此工具尚處於起步階段,也許還不夠成熟,但是其規格可以滿足您提到的要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.