【问题标题】:What happened to Scala.React?Scala.React 发生了什么?
【发布时间】:2014-02-28 01:35:33
【问题描述】:

我阅读了 Odersky 合写的论文,“弃用观察者模式” 使用 Scala.React"

github 看起来被废弃了:

https://github.com/ingoem/scala-react

此外,最近的 Reactive Programming Coursera 课程使用了 JavaRx Observable 库(当然支持 Scala)。

这背后有故事吗?我可以假设 scala.react 只是没有走得很远。基于 Observable 的 JavaRx 库是否可取?或者我们可以期待 Typesafe 提供类似或更好的东西吗?

【问题讨论】:

  • 疯狂的猜测是 JavaRx Observables 只是使用起来更有意义,他们认为没有必要也没有好处仅仅为了与众不同而开发另一种替代方案。不过我可能大错特错。
  • 这与论文的重点背道而驰。奥德斯基在那个问题上是不是完全错了?
  • This question 相关。
  • 欢迎来到学术界,我想——它并不总能产生有用的东西,但整个研究将整个领域向前推进:)
  • 我实际上假设随着 Akka 在 Scala 中变得标准化,实现 FRP 的方法有很多,而无需引入另一个库。

标签: scala observer-pattern reactive-programming


【解决方案1】:

引用李浩毅,

谁使用过 Scala.React,他的观察是:

  • “设置和上手非常困难。”
  • “它需要大量的全局配置”
  • “需要几天时间才能使基本数据流图 (..,) 正常工作。”

他有很多问题,但没有设法联系到出版物的作者......

Li 还实现了 Scala.RX 来解决这些问题和其他问题。 该代码的形状很好,但我无法观察到将其推入标准 Scala 库的任何操作。此外,李是正在进行的 Scala 和 Javascript 工作的推动者,因此他主要忙于那个项目。

回答您的问题:

基于 Observable 的 JavaRx 库是否可取?

JavaRx 基于 Martin Odersky 试图弃用的观察者模式...

https://github.com/Netflix/RxJava/blob/master/rxjava-core/src/main/java/rx/Observer.java https://github.com/Netflix/RxJava/blob/master/rxjava-core/src/main/java/rx/Observable.java

虽然马丁在论文中指出的每个问题都是真实有效的, Netflix 利用了 Observables 的一个主要属性:

Futures 和 Observables 共享同构,因此是可组合的。 在 JavaRx 中,一个 Observable 返回一个事件流。然而,一个未来 另一方面,可以看作是一个专门的 Observable,它返回 只有一个单身人士。在这种情况下,Futures 和 Observables 可以异步组合 只要有意义。

这背后有故事吗?

不知道,但也许 Netflix 做了一些赞助。您可能已经注意到出现在 RX 钻石示例中的 Netflix 徽标......

或者我们可以期待 Typesafe 提供类似或更好的东西吗?

老实说,我对此表示怀疑。他们为什么要这样做? Typesafe 正忙于推动他们的 融入工业并进一步推进 Akka。 Scala.React 是个好主意,但是 不产生任何现金,而 Akka 为他们带来付费客户....

相反,我会问 Scala.React 究竟试图解决什么问题?

恕我直言,JavaRx 已经做得很好,正在生产中,Scala.React 可能添加的那些改进很可能不足以进行重大更改。

【讨论】:

  • 惊人的答案。类型安全的玩世不恭有点过分了。 Typesafe 正在推动其他产品和更新产品。 Scala.React 看起来只是一个未能成功的想法。
【解决方案2】:

RxJava:Reactive Extensions 与 scala.react 几乎没有共同之处。 RxJava 处理观察者和并发,但对评估顺序的正确性几乎没有帮助。基本上它只是事件流,如果事件被分成几个效果,那么这些效果将永远不会再连贯。基本上它是一团糟,只能用于计算精度不那么重要的 GUI。您永远不知道何时获得额外更新或额外刷新。

scala.react 是一个单线程计算模型,并使用由计算之间的函数依赖关系定义的严格评估顺序来处理计算顺序。

Akka 或演员再次是第三种模型,完全不同。它只是具有一些花哨语法和调度的线程,真的。

难怪每个人都感到困惑。遗憾的是 scala.react 并没有移动到任何地方,这很糟糕,因为它是这三个模型中唯一的创新模型。

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 2010-10-02
    • 2020-03-14
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 2014-03-26
    • 1970-01-01
    相关资源
    最近更新 更多