Clojure布道

2012-02-27 04:24

Clojure布道

by

at 2012-02-26 20:24:52

original http://item.feedsky.com/~feedsky/heikezhi/~8608072/603800682/6713895/1/item.html

原文作者:Philip Potter,原文地址,翻译:Isaiah

我目前正在出席第二届Clojure Conj。会议的主题之一是传播Clojure:如何让更多的人使用它,和说服那些本来不会选择Clojure的人使用这门语言。

实际上这是Neal Ford的演讲“支配企业认同的总体规划”的中心思想,在演讲中,Neal就如何使充满体制惯性的大型组织采用Clojure提出了自己的想法。Phil Bagwell也在他的演讲开头引用了Neal的演讲,他请所有使用Clojure作为日常工作语言的人举手,然后请那些从来没有将Clojure部署到生产环境的人举手。然后他就请第二组人与跟他靠得最近的第一组的人交流一下,问问他们是怎样使用Clojure工作的。

Clojure传播也成了许多演讲Q&A环节的共同主题:一个关于ClojureScript的演讲通常会引发类似于“怎样把ClojureScript应用到一个已有的JavaScript项目中?”诸类问题。

下面是一些关键的问题:

了解你的敌人

在新语言领域竞争非常激烈,特别是在Scala,Clojure和Groovy之间。这是正确的也是正常不过的,另外我们应该认识到Scala的成功,不会直接损害到Clojure。

Scala,Clojure和Groovy之间的竞争并不意味它他们互相是敌人。现状才是真正的敌人,每当听到人们开出这些理由时,我的感觉非常糟糕:

  • “选择Clojure有非常大的风险-我想保持现有系统稳定”
  • “虽然我觉得Clojure可能相对于Java是一个更好的选择,但是因为Java是一个工业的标准,如果选择Clojure作为项目的语言,我更有可能会由于项目失败而遭到非议”
  • “如果选择Clojure,我不确定是否能找到会使用这种语言的码农。”

这些观点总体上反映了一种心理,那就是因循守旧比尝试使用一些更新的,然而不那么有名的技术来改善生产力要更加安全一些。

如果一个客户从Java切换到了Groovy,Scala或者JRuby,证明他已经抛开了现状。培养一种人们能乐于探索新技术的氛围会帮助更多对Clojure有兴趣的人克服他们的恐惧而使用它。

积极对待新的可能性,而不是消极面对现状

会议大体上的感觉是积极向上的,这也是为什么开了几个关于ruby的玩笑之后,立刻有人报怨这种非建设性的做法。

Clojure和Scala让一些其他语言的不可能变成现实,这可能会让人产生一种优越感的错觉。要坚决同这种错觉作斗争!Clojure不可能因为贬低Ruby和Java而获得更多认同,唯一的方式是努力推广自己和更有效率地解决问题。

另外,存在很多现有工具完全适合的领域-Rails是一个很好的web框架,虽然它存在一些限制,但是这些限制在大多数用例中并没有影响。甚至一些Clojure核心团队的成员也在大量工作中使用Rails,只有在处理一些复杂的问题时才会使用Clojure。我们的目的是架起桥梁,而诋毁Rails只会竖起一道墙。

构建一个良好生态

新近出现的成功案例表明,仅仅通过提供强大的工具,就可以成功地让语言扩大其影响力。例如某些人可能并不特别想要使用Ruby,但是他们却可能希望使用Cucumber;即使他们不想使用Groovy,他们可能仍然想要Gradle。

在我最近的一个项目中,我们使用了node.js 作为测试stub。我们中没有任何JavaScript的鼓吹者,仅仅因为Node是作这项工作的最好工具,所以我们选择了它。然而这却使我们以一种新的方式看待JavaScript,结果是我们更有可能在将来的工作中再使用JavaScript。

这是取得认同的一种很好的方法。我在conj会议了解到的其中这样一款工具是来自heroku的pulseMark McGranaghan在“Logs as Data”演讲中详细介绍了这款工具。Pulse将日志作为事件和富数据对象的流而不是字节流处理。另一个是Twitter的Nathan Marz编写的Cascalog,它通过在Hadoop MapReduce之上作高级的抽象,创造了一种非常优雅的以查询和谓词构建MapReduce计算任务的内部DSL。

总结

这是一场非常激动人心的会议,一方面Clojure是一门非常伟大的语言,另一方面它正处于历史的关键时刻。Clojure已经到达了成熟期,也被一些人用来在生产环境中解决一些困难并有趣的问题;下一步的任务是传播Clojure,使它被越来越多的人认真地使用。

Happy hacking!

想和我们一道传播黑客精神?快来加入吧!

Creative Commons Attribution 3.0 Unported 此作品采用 Creative Commons Attribution 3.0 Unported.

无觅猜您也喜欢:

GNU/Linux中有多少GNU的代码?

Javascript版Heroku: Akshell

d3.js: 3个小圆圈的故事
<a target="_blank" title="测测你的Github能得多少分" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fheikezhi.com%2F2011%2F04%2F20%2Fgi