響應式編程
在計算中,響應式編程或反應式編程(英語:Reactive programming)是一種面向數據串流和變化傳播的聲明式編程範式。這意味着可以在編程語言中很方便地表達靜態或動態的數據流,而相關的計算模型會自動將變化的值通過數據流進行傳播。
實例
編輯例如,在命令式編程環境中, 表示將表達式的結果賦給 ,而之後改變 或 的值不會影響 。但在響應式編程中, 的值會隨着 或 的更新而更新。電子表格程序就是響應式編程的一個例子。單元格可以包含字面值或類似"=B1+C1"的公式,而包含公式的單元格的值會依據其他單元格的值的變化而變化 。
另一個例子是硬件描述語言,比如Verilog,這裡響應式編程可以對電路中傳播的信號變化進行建模。
響應式編程最初是為了簡化交互式用戶界面的創建和實時系統動畫的繪製而提出來的一種方法,但它本質上是一種通用的編程範式。
范型
編輯響應式編程范型基於Edward A. Lee和David G. Messerschmitt在1987年提出的同步數據流程編程范型[2],但是放鬆了實時限制。響應式編程范型介入了表示連續時變值的行為(behaviour),和表示離散值的事件。
概念
編輯外顯性的程度
編輯響應式編程語言包括從顯式的使用箭頭來表示數據流,到隱式的通過語言類似命令式或者函數式的語言架構衍生而來的數據流。例如,在隱式的函數式響應式編程中,一個函數調用可能隱式的導致一個節點在數據流圖中被創建出來。動態語言的響應式編程庫(例如Lisp的「Cells」和Python的「Trellis」等)可以在運行時通過對函數執行數值讀取的過程進行分析,構建出依賴圖,使得數據流不僅隱式,而且動態。
響應式編程的說法有時候會被用在軟件工程的架構分層中,這是數據流圖中所謂的節點只是能夠互相通信的普通程序。
參見
編輯引用
編輯- ^ Trellis, Model-view-controller and the observer pattern, Tele community, [2020-05-02], (原始內容存檔於2016-03-03).
- ^ Synchronous Data Flow. [2021-02-15]. (原始內容存檔於2020-08-04).
外部連結
編輯- A survey on reactive programming (頁面存檔備份,存於網際網路檔案館) A paper by E. Bainomugisha, A. Lombide Carreton, T. Van Cutsem, S. Mostinckx, and W. De Meuter that surveys and provides a taxonomy of existing reactive programming approaches.
- MIMOSA Project of INRIA - ENSMP(頁面存檔備份,存於網際網路檔案館), a general site about reactive programming.