5

Scala和Go的区别

 8 months ago
source link: https://www.jdon.com/46596.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Scala和Go的区别 - 极道

Keith Morrow作为 Scala的支持者,发表了这篇倾向于 Scala的文章,主要也是为了反驳一年前 Paul Dix 的文章:why he prefers Go over Node and Scala,Paul Dix认为Go好于Scala的原因在于下面几个方面:并发性, 易理解性, 代码分享和学习难度。之所以时隔一年才有人反驳,一则因为双方不了解,二则可能是随着Go编写的Docker流行,拳头产品的出现让大家对Go刮目相看。

Keith Morrow则认为Go比 Scala易于学习是因为Go是一种命令式语言。这相对不习惯函数语言的人来说易于掌握一些。

因为大多数人对于命令式语言比较熟悉,因此毫无疑问在代码共享方面Go要易于 Scala。那么,在学校曲线上,命令式语言的人学习函数编程要难一些,Go是一个小而易于学习的语言,当然还因为它更接近C和 Python

当然硬币也有另外一个方面,Go正是因为是命令式语言,它就不可能充分发挥函数编程的特点,因为缺乏泛型,而Go语言认为其简单正是因为没有类 模块 泛型这些概念。

Keith Morrow举例说:如果你要实现一个简单的map函数,使用命令式方式实现(使用循环而不是递归方式),你必须强迫忘记类型安全(比如使用一个空接口),或对于每个类型重新再实现一次map函数,Go不支持函数overloading,除了这些,Go也不支持只读的不可变的值,除了常量。

在并发性方面,Go和 Scala都有内建的并发机制(Akka for  scala), Scala是倾向于Actor模型,而Go使用CSP模型,Akka相对于Go内部并发机制好处是透明性,能够透明地将Actor从不同机器之间迁移实现远程发送消息,而且能够控制可靠性,而Go 的goroutines 和Channel被强迫成一个单进程,需要额外努力才能扩展,无法如此透明的进行扩展。(有人反对认为Gocircuit for Go比Akka更加灵活)

总之,Keith Morrow认为,如果不理解函数编程和类型安全编程语言的好处,没有基础的函数结构如不可变性等,那就很难编写一个无bug的安全的应用。

[该贴被banq于2014-08-08 12:11修改过]
[该贴被banq于2014-08-08 12:12修改过]

Whitepages 从Ruby迁移到Scala

这是来自Whitepages的一篇从Ruby迁移到Reactive的实战分享英文.

从OOP和FP看苹果Swift语言与Scala比较

如果说,此前的 Scala语言是一种函数式编程语言,那么苹果推出的Swift语言无疑是针对 Scala提出的挑战。 .

没去极端过的人,永远不知道极端是什么。

BUG是过程的后遗症,函数与逻辑是少犯错的支柱,过程中少BUG的部分往往也是递归等与函数或逻辑同理的地方。人类思维本来就是逻辑的,绝对不是过程。过程是人类在逻辑上构造一种特例,或者说过程的生存依靠是逻辑。过程是什么?你光想解释就需要一系列规则,这不是逻辑?没有逻辑约束,过程不剩下BUG还能剩下什么?过程各种语法都是维护逻辑而已,之所以出现BUG,是因为维护得还不够好,当足够好的时候其实已经变回函数或逻辑了。

为了现实掌握过程,为了追求掌握逻辑。

PS:在我看来过程实际上是比函数或逻辑更高级的,可以认为是函数或逻辑的领域标准化,只是现在没有一样过程是那样的理论。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK