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是一种命令式语言。这相对不习惯函数语言的人来说易于掌握一些。
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更加灵活)