【外刊IT评论网】Clojure语言 vs Scala语言

标签: Clojure 批评评论 Scala | 发表时间:2011-09-20 00:28 | 作者:Aqee Tairan Wang
出处:http://www.aqee.net
本文是从 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 开发团队的功劳,他们创造了这样一种精彩适用的编程语言,帮人们解决了大问题——谢谢你们!


本文来自外刊IT评论网(www.aqee.net),原始地址:Clojure语言 vs Scala语言

相关 [it clojure 语言] 推荐:

[转][转]Clojure 编程语言

- - heiyeluren的blog(黑夜路人的开源世界)
简介: Lisp 是一种编程语言,以表达性和功能强大著称,但人们通常认为它不太适合应用于一般情况. Clojure 是一种运行在 Java™ 平台上的 Lisp 方言,它的出现彻底改变了这一现状. 如今,在任何具备 Java 虚拟机的地方,您都可以利用 Lisp 的强大功能. 在本文中,了解如何开始使用 Clojure,学习它的一些语法,同时利用 Eclipse 的 Clojure 插件提供帮助.

【外刊IT评论网】Clojure语言 vs Scala语言

- Tairan Wang - 外刊IT评论
本文是从 Clojure vs Scala - anecdote 这篇文章翻译而来. 我在这里是想跟大家分享一些从World Singles 系统里获得的经验 …. 早在2009年11月,我们就开始使用Scala语言了. 我们有一个需要运行很长时间的操作,把大量的数据变更信息从会员信息数据库中取出,以XML打包文件的形式发送到自定义搜索引擎里.

Clojure 1.3发布,基于JVM的函数式编程语言

- bamerl - ITeye资讯频道
Clojure日前发布了 1.3 版本. Clojure是一个在JVM平台运行的动态函数式编程语言,在JVM平台运行的时候,会被编译为JVM的字节码进行运算,能调用Java的类库,支持并发,与Scala类似. Leinigen或是Maven用户现在可以设置依赖:.    该版本中包含了许多重大的特性和性能改进,比如增强了原生支持、改进了defrecord和deftype、改进了异常报告、可以通过Maven进行编辑和部署,以及绑定Conveyance等.

Clojure 入门

- - 博客 - 伯乐在线
英文原 getting started with clojure,翻译:开源中国. 我将尝试教一些人(主要是Python开发者,在OS X操作系统运行)如何使用Clojure, 因为我觉得目前已经存在的一些教人如何从零开始学习Clojure的文档不尽如人意. 当我自己在几个月前亲身经历这一切,这是一个奇怪的时期, 好几个星期我一直处于迷茫中, 我基本上找不到一个关于Clojure生态系统的概念路线图,也不知道如何组织一个.

记首次cn-clojure线下聚会

- Tim - BlogJava-庄周梦蝶
    没有耐心看经过的请直接拉到末尾看slide列表.     这个聚会是由江宏首先提议的,我参与协助. 目的是让长三角地区对clojure语言感兴趣,或者正在使用的朋友当面认识和交流一下. 会议的组织过程一波三折,首先是会议地点本来定在了上海google办公室,但是后来google那边又说不让过去,我再联系了原来淘宝网的同事火狐,经过他的努力和帮助,最终将地点确定在了上海大众点评.

语言壁垒

- kylexlau - Chun Tian (binghe)
虽然经常更新微博,但确实又有些日子没写常规博客了. 10 月开始前有必要再写一篇,整理一下近期的各种思路,以良好的精神面貌迎接今年的最后一个季度. 首先发布一个已经不太新的消息:Practical Common Lisp 的中文版《实用 Common Lisp 编程》几经周折终于付印了,下月即可正式出版;读者们甚至已经可以在当当网上预订了.

UnQL:NoSQL查询语言

- 卡飞菲 - Solidot
CouchDB作者Damien Katz与SQLite作者Richard Hipp正在为NoSQL文档数据库开发一种高级查询语言UnQL(发音同Uncle,是UNstructured Query Language的缩写). Katz表示,他们坚信为了推广NoSQL需要一种通用的查询语言,类似当年推广关系型数据库应运而生的SQL语言.

Go 语言初步

- wei - 云风的 BLOG
所谓认真玩,就是拿 Go 写点程序,前后大约两千行吧. 据说 Go 的最佳开发平台是 Mac OS ,我没有. Windows 版还没全部搞定,但是也可以用了. 如果你用 google 搜索,很容易去到一个叫 go-windows 的开源项目上. 如果你用这个,很多库都没有,而且语法也是老的. 我在 Windows 下甚至不能正确链接自己写的多个 package.

C语言之父

- Dylen - 子说
同事说c语言之父去世了,另一个同事大吃一惊,问:谭浩强死了. 不知丹尼斯·里奇(Dennis Ritchie)情何以堪.

如何学好C语言

- 夕角 - 酷壳 - CoolShell.cn
有人在酷壳的留言版上询问下面的问题. 我也遇到了和提问的老外一样的问题. 能给像遇到这样烦恼的程序员一点建议嘛. 我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程编到一定的时候,发现能力到了瓶颈,既不深,也不扎实,半吊子. 比如:你长期地使用Java和.NET ,这些有虚拟机的语言对于开发便利是便利,但是对于程序员来说可能并不太好,原因有两个:.