选择Scala的理由?

先来张镇宅神图:



为什么选择Scala

火热的网上公开课网站Coursera采用了Scala来作为他们的首选编程语言。最初这个网站是由几个Stanford的学生用PHP写的,后来随着业务扩展,团队开始寻找合适的语言来搭建平台。在尝试过了包括Python和Go在内的许多种框架后,Coursera决定采用Scala以及使用Scala编写的web框架Play Framework,原因有以下几条:


类型安全

Coursera一直承诺在教学上的创新,并且也身体力行为用户创造卓越的体验。所以平台代码一般都是快速迭代开发,在迭代过程中代码被写成、重写、重写再重写。大家都有经验,重构静态语言工程的难度要远远小于重构动态类型语言。重构PHP或者Python是很让攻城狮们头疼的一件事情,因为在这个过程中会引入更多新的bug。Scala在重构问题上做的就很好,这使得我们可以定期、并且健康的重构代码。Coursera的移动高端攻城狮Jacob这样说:

“Scala offers the easiest refactoring  experience that I’ve ever had due to the type system.” 

强大的并发特性

尽管Python和PHP支持进程创建,但是他们都没有轻量级的并发特性,比如“真正的”多线程编程。Coursera的框架具有多样性和复杂性的特点,要求能够具备和多种数据库和不同服务交互的能力。Play的reactive core和异步编程库能够和一些强大的并发库进行无缝连接(比如说Akka中的actor模型)。这些特性的融合能够使得异步编程像是同步编程代码那样容易理解。程序猿可以使用这些框架编写可读、可维护、高效的代码,而不是难以理解的无穷无尽的回调。


成熟的生态系统

JVM生态系统是现在组成熟的生态系统,而Scala就是在JVM和Java生态系统上构建的,因此可以从Java的工具库中获益。当前很多大数据的组件比如Hadoop、Spark以及Cassandra都是在JVM生态系统内,这使得使用Scala编程的框架可以直接调用他们的库。并且,相对PHP或者Python,Scala和Play只需要在节点上安装JVM,这省去了很多繁琐的部署和维护步骤。JVM还是一个特性完整的虚拟机,堆容器、GC机制、实时编译等都十分成熟,加速了开发过程。


Scala的不足

但是没有一种框架、语言是完美的,在使用Scala之前,我们还有许多担忧,以下就是Scala的不足:


编译时间

Scala的编译器是非常复杂的,而且其编译过程包含了25个阶段——这使得编译变得非常慢。幸运的是,SBT的增量编译可以有效的解决这个问题。尽管Scala的代码要比PHP、Python多得多,但是编译耗时很短(在秒级)。SBT的增量编译技术和Play的热重载能让开发者保持快速迭代节奏。尽管随着代码库规模增大这种问题会变得更凸显,但是目前我们不需要太多担心。

另外,对于过长的编译时间方面,Coursera的Nick表示最好的对策就是去泡一杯咖啡,休息一下。

-____________________-


晦涩的语法

Scala中随处可以见到看起来像是“噪声”的代码段,也经常会因为可读性的原因被诟病随意使用符号操作符。虽然Scala的语法比较随意,但是很少会在使用期间碰到搞不定的情况。当你熟悉了它的语法规则后,发现基本不会在阅读代码时遭遇难题。


高级特性

Scala有许多高级特性,比如宏、隐式类型等。使用这些特性时,很容易就编织出一堆连其作者也无法辨认的乱麻。在使用时,Coursera尽量避免去使用这些高级特性,比如从来不会在业务逻辑中定义新的隐式或者宏。也就是说,我们只有在重要的库或者框架中才会使用这些高级特性。而Coursera的产品攻城狮Josh则表示使用任何语言编码都可能写的一团糟,而Scala的高级特性能使代码更简洁,在可读性方面可以借助编程规范以及结对编程的方式来保证。


Scala IDE

相比起Java的IDE来说,Scala的IDE还有许多不足。虽然Eclipse在这方面已经做了持续的改进,但是很多功能仍然不具备(比如type hierarchy和call hierarchy),另外一些(比如move)还时不时的蹦出点bug。Scala的IDE是目前生态系统中的短板,Coursera的攻城狮们已经参与到了修复IDE BUG的工作中。


其他

最后,文章表示Scala的社区还没有形成规模,Coursera的程序猿大多都是从公司内部挖掘学习能力。而公司也很重视这方面的学习和教育。糟糠妻,不可弃。既然选择了Scala,我们就有信心把它做的更好。另外,打个广告,是Coursera上关于Scala编程的两门课程:Scala函数式编程原理响应式编程原理


文章来源:http://tech.coursera.org/blog/2014/02/18/why-we-love-scala-at-coursera/

原文标题:Why we love Scala at Coursera


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值