设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1875|回复: 0
打印 上一主题 下一主题

【转载】Functional Reactive Programming

[复制链接]
跳转到指定楼层
1#
发表于 2014-2-27 08:43:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Reactive programming是一种针对数据流和变化传递的编程模式, 开发人员可以采用编程语言来描述静态或者动态的数据流程,其执行引擎可以自动的在数据流之间传递数据的变化。比如说,在一种命令式编程语言中,a: = b + c 表示 a 是 b + c 表达式的值,但是在RP语言中,它可能意味着一个动态的数据流关系:当c或者b的值发生变化时,a的值自动的发生变化。
RP已经被证实是一种最有效的处理交互式用户界面、实时模式下的动画的开发模式,但本质上是一种基本的编程模式。现在SUN的最为热门的JavaFX脚本语言中,引入的bind就是RP的一个概念实现。
Functional reactive programming (FRP) 是一种基于函数式语言的RP开发模式,其关键点包括:
l  输入被视为"行为",或者说一个随时间而变化的事件流
l  连续的、随时间而变化的值
l  按时间排序的离散事件序列
FRP与普通的函数式编程相似,但是每个函数可以接收一个输入值的流,如果其中,一个新的输入值到达的话,这个函数将根据最新的输入值重新计算,并且产生一个新的输出。这是一种"数据流"编程模式。
FRP最早是在Haskell这个函数式语言中被设计,并且开发了一个参考的实现,http://www.haskell.org/yampa/,从Scala的新闻组中,也可以看到,在scala中,即将开发一个reactive的包来支持这种编程模式。
实际上,可以认为,在JavaFX语言中,其数据绑定就是这样的一种机制,不过,目前,JavaFX还缺乏有效的文档,尤其是其反向绑定一块,感觉支持得并不是很好。期望在scala这样的语言中,可以更好的实现一个数据流的支持。
在JavaScript中,目前也有一个参考的实现:http://www.flapjax-lang.org/, 初步的看了一看这个框架,感觉也是很神奇的,在Javascript中实现了一个类似与JavaFX的数据绑定的概念,使得一些原本需要很多行代码的功能现在可以以一种简单的"申明式"的表达式依赖关系来得以实现。在后续的时间里,需要关注scala的reactive和flapjax的相关概念。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-3 00:29 , Processed in 0.189238 second(s), 24 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表