函数式编程是否反应式编程?

我想知道Reactive Programming如何与功能编程绑定。

大多数论文将“反应式编程”称为“功能式反应式编程”。

反应式编程是否可以在函数式编程之外实现?

使用功能性语言编写反应式程序更容易吗?


我使用了我称之为无功编程(Reactive Programming)或SEDA(Staged Event Driven Architecture,分阶段事件驱动架构)的方法,但我并没有多少使用函数式编程。 http://www.slideshare.net/PeterLawrey/writing-and-testing-high-frequency-trading-engines-in-java

尽管在功能上编写反应式程序比较容易,但通过使用函数式编程将其编写为更快执行并不容易。 重复使用可变状态通常比始终创建新的不可变对象快2-5倍。 所以如果你使用反应式编程来提高性能,我不会使用函数式编程。

通常开发人员觉得他们必须使用多个线程或内核,因为他们在那里。 这就像是说你需要使用100%的磁盘空间,或者你正在浪费它。

恕我直言,你应该只添加多线程的复杂性,如果它提高性能,并且它是实现这种改进的最简单的方法。 在关于简化并发的讨论中经常会被遗忘的是最简单的解决方案是使用一个线程,并且除非您已经证明您的解决方案比这更快,否则您并没有确信使用多线程是有帮助的。


我的猜测是你正在参加Odersky / Meijer / Kuhn的Reactive Programming课程吗? 然后你会在第一次会议中看到马丁奥德斯基的解释:他用字典中的一个非常广泛的描述,即反应意味着“容易响应刺激”。 所以它是关于一个程序观察并等待它响应的一些刺激。

所以从这个角度来看,反应是最重要的某种观察触发功能。 当你可以编写它们,例如映射事件或数据流变量时,你可能会把这个“功能”称为一组未来值,这是作为事件起源值的一个函数来声明的。

另一方面,功能性反应式编程或FRP是由Conal Elliott和Paul Hudak(原来是Functional Reactive Animation,因为它指的是图形界面)创造的一个术语。 它与他们的工作和Haskell编程语言密切相关。

许多实施反应性思想的图书馆(例如参见WP关于反应性编程的文章)与FRP共享事件组成部分,但它们不一定延伸到FRP的分析/连续信号或“行为”,以补充事件。


你会发现有些人声称,没有遵循规范FRP的反应式编程 - 例如当使用演员或频道时 - 是从该名称的“真正承担者”中“窃取”术语。 所以这个讨论很容易变成意识形态。 在意识形态的另一方面,你会发现反应性经常被用作一个新的流行词。 “反应宣言”(宣言......真的!?你甚至可以签署这些东西......)可能就是这方面的一个例子。


对我来说,这个“反应性宣言”只是一个流行词。 二十世纪80年代以来,Erlang一直在自由地和无声地实现整个事情。

我认为在函数式编程中坚持反应原则会更容易,因为FP通常包含不可变状态和免费的副作用函数。 这意味着更容易实现并发, 分布式并行系统。

祝你好运,使用共享状态,线程,锁,信号量来实现“Reactive”系统......并且你知道,他们说只有两个人可以使用Java并发系统,Doug Lea和Brian Goetz。

链接地址: http://www.djcxy.com/p/47723.html

上一篇: Is Reactive Programming bounded to Functional programming?

下一篇: Why does FRP consider time as a factor for values?