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的安全的应用。
为啥Erlang 没有像 Go,Scala 语言那样崛起Scala到底是什么?在目前众多的JVM语言当中,Scala无疑是最引人注意的语言之一。Scala是一个静态语言,更适合大型工程项目,Scala直接编译成Java字节码,性能接近Java。Scala是一个多范式的语言,你可以混合使用函数式和面向对象编程,混合使用可变类和不变类,混合使用Actor和传统的Java并发库。
短短一个月的时间,Scala于本月冲进了TIOBE的前五十名。一个 Twitter 的开发人员说过,Scala 将会成为现代 Web2.0 的发起语言。LinkedIn 也用这种语言。同样许多其他大的公司如 Sony Picture, EDF, SAP 也开始使用这种语言。为什么Scala发展这么迅猛,可以获得如此热烈的社区支持。