clojure,Clojure语言 vs Scala语言

Clojure语言 vs Scala语言clojure 本文是从 Clojure vs Scala - anecdote 这篇文章翻译而来。
我在这里是想跟大家分享一些从 World Singles 系统里获得的经验 …
早在 2009 年 11 月,我们就开始使用 Scala 语言了。我们有一个需要运行很长时间的操作,把大量的数据变更信息从会员信息数据库中取出,以 XML 打包文件的形式发送到自定义搜索引擎里。把一大堆的数据表从数据库中映射到 XML 规则文件里是一个相当复杂的操作。在过去,公司尝试了各种方法,有的好用,有的不好用。我向公司推荐使用 Scala 语言,原因是他的高效、并行性、类型安全,以及方便适用(特别是 XML 在 Scala 语言里有一种相对应的基本数据类型)。
我们使用 Scala 编程作为产品的后台发布程序已经有差不多两年了。大多时候,它运行的非常好,但在压力大的时候,它会出现内存溢出的现象,经过大量的观察和测试,我们慢慢的确认,(至少部分原因)是 Scala 语言本身的实现导致了这个问题。Scala 正准备要收编 Akka 程序库,我们一直在考虑把程序迁移到 Akka 上…
因为今年我们开始使用 Clojure 语言(大概是去年 5 月我们就开始尝试这种语言),我们认为应该集中兵力开发出一个 Clojure 版本的 Scala 程序,看看它运行起来表现如何。
这个 Clojure 版的后台发布程序的开发耗费了我们大概 15 个小时,并通过了所有测试。今天我们进行了一次“疲劳测试”,让它一次处理将近 30 万个会员的信息。如果是 Scala 程序,当一次处理的数据量达到 5 万份时(有时会更少),它就会报内存溢出错误。而 Clojure 程序却一气呵成,十分顺利——于是,我们就决定在下一次产品发布里用它把 Scala 程序给替换下来了。
另外一个有趣的方面是,Scala 版的程序长度总共大约有 1000 行(大概有3.1万个字符)。而 Clojure 版的只有 260 行(大约1.15 万个字符)。就连注释也简单了(*呃哼*—这并不是我想炫耀的,只是想说这种比较没有偏向)。我们的比较还没有把单元测试代码计算入内,因为 Clojure 版写的很仓促。Clojure 的代码形式非常的接近 Scala 代码,很多函数都相同——Clojure 是一种更强大的 Scala——它对一些辅助函数进行的重构,使其变的更加模块化和可维护。
结果是很显然,我将在产品里采用 Clojure 版的发布程序,完全的放弃 Scala。
这是 Rich Hickey(Clojure 语言的发明人) 和 Clojure/core 开发团队的功劳,他们创造了这样一种精彩适用的编程语言,帮人们解决了大问题——谢谢你们!
Tags: 

延伸阅读

最新评论

发表评论