响应式编程
实例
例如,在命令式编程环境中,表示将表达式的结果赋给,而之后改变或的值不会影响。但在响应式编程中,的值会随着或的更新而更新。电子表格程序就是响应式编程的一个例子。单元格可以包含字面值或类似"=B1+C1"的公式,而包含公式的单元格的值会依据其他单元格的值的变化而变化 。
另一个例子是硬件描述语言,比如Verilog,这里响应式编程可以对电路中传播的信号变化进行建模。
响应式编程最初是为了简化交互式用户界面的创建和实时系统动画的绘制而提出来的一种方法,但它本质上是一种通用的编程范式。
范型
响应式编程范型基于Edward A. Lee和David G. Messerschmitt在1987年提出的同步数据流程编程范型[2],但是放松了实时限制。响应式编程范型介入了表示连续时变值的行为(behaviour),和表示离散值的事件。
概念
外显性的程度
响应式编程语言包括从显式的使用箭头来表示数据流,到隐式的通过语言类似命令式或者函数式的语言架构衍生而来的数据流。例如,在隐式的函数式响应式编程中,一个函数调用可能隐式的导致一个节点在数据流图中被创建出来。动态语言的响应式编程库(例如Lisp的“Cells”和Python的“Trellis”等)可以在运行时通过对函数执行数值读取的过程进行分析,构建出依赖图,使得数据流不仅隐式,而且动态。
响应式编程的说法有时候会被用在软件工程的架构分层中,这是数据流图中所谓的节点只是能够互相通信的普通程序。
参见
引用
外部链接
- 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.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.