vlambda博客
学习文章列表

Roam Research 为何选择 Clojure 作开发语言


1、

如果你因为 PG 的文章而对 Lisp 感兴趣,那么知道他现在推荐 Clojure 是很重要的。

Roam Research 为何选择 Clojure 作开发语言


2、

摘自 Beating The Averages[1]

如果一门语言能让你成为更好的程序员,那为什么你不想一直使用它呢?

完全同意 —— 这是 Roamresearch.com 用 Clojurescript 语言编写的原因之一。

秘密武器

Eric Raymond 写了一篇名为 "如何成为黑客" 的文章,在这篇文章中,他还告诉未来的黑客们应该学习哪些语言。他建议从 Python 和 Java 开始,因为它们很容易学习。认真的黑客还想学习 C 语言,以便破解 Unix,以及 Perl,用于系统管理和 cgi 脚本。最后,真正认真的黑客应该考虑学习 Lisp。

Lisp 是值得学习的,因为当你最终掌握它时,你会有深刻的启蒙体验;这种体验会让你在剩下的日子里成为一个更好的程序员,即使你从来没有机会真正大量使用 Lisp 语言。

这和你经常听到的学习拉丁语的论点是一样的。它不会让你得到一份工作,除非你是古典文学教授,但它会改善你的思想,并使你在你确实想用的语言中成为更好的作家,比如英语。

但是,等一下。这个比喻并不完全贴切。拉丁语不会让你找到工作的原因是,没有人会说它。如果你用拉丁语写作,没有人能理解你。但 Lisp 是一种计算机语言,你这个程序员让计算机说什么语言,计算机就说什么语言。

所以如果 Lisp 能让你成为一个更好的程序员,就像他说的那样,你为什么不想用它呢?如果一个画家得到了一支能让他成为更好的画家的画笔,在我看来,他似乎会想在他所有的画作中使用它,不是吗?我不是想在这里取笑 Eric Raymond。总的来说,他的建议是好的。他说的 Lisp 几乎是传统的智慧。但是传统观点中存在一个矛盾:Lisp 会让你成为一个更好的程序员,但你却不会用它。

为什么不呢?编程语言毕竟只是工具。如果 Lisp 真的能产生更好的程序,你应该使用它。如果不是,那谁还需要它?


3、

我花了很长时间用其他语言 (主要是 Ruby 和不同的 Javascript 框架) 构建思考工具的原型。

当我读到来自 @dan_abramov 的 Redux 库中给人灵感的文档,并看到 @bhauman 关于 figwheel 的演讲,我开始认真对待 Clojurescript。


4、

我感到 Clojure 社区的阅读范围真的很广,他们从所有其他语言社区中寻找核心思想,并以非常务实的方式将其整合到他们的库/工具中。

我决定飞往 Conj 和 Clojure/West


5、

Clojure 确实有一条陡峭的学习曲线,但这是一件好事,当你开始学习的时候,你会非常快地学到很多东西,而且核心思想(围绕状态变化、组成和重用)是非常强大的。

Clojure 社区是好奇、务实、温暖、谦虚和机智的。


6、

很多人说,用如此晦涩难懂的编程语言建立一家创业公司,是不是一个冒险的商业决策?

Clojure 工程师的工资在美国乃至全球都是最高的。

你不担心招聘吗?

Roam Research 为何选择 Clojure 作开发语言

Roam Research 为何选择 Clojure 作开发语言


7、

不,这里有一个原因。

我在 http://42.us.org 编程训练营认识了我的联合创始人,当时我们都在学习 C 语言。

编程训练营基本上是对自学者的耐力测试

他大多数晚上都在实验室里待到凌晨 4 点,自学和帮助像我这样的可怜的傻子做习题


8、

在 42 编程训练营结束的时候,我给他看了我做的第一个 Roam 原型。

他很感兴趣,于是我告诉他,如果他自学 Clojure,我就给他一份工作。

他的第一次交付是在不到 6 周后。

在那之后不到一个月,我向他提供了联合创始人的股权。


9、

@sama 说过这样的话

你雇佣的是性格(坚毅、坚韧、正直),然后是智力,然后是技能,依次类推。

我认为是

"雇佣人才,培训技能"

其中,人才还包括品格、价值观、求知欲和解决问题的能力等。


10、

Clojure 社区充满了友好、开放、谦逊和乐于助人的人。

像 @nathanmarz 这样的人,他们在专业上取得了巨大的成功,为他们的初创公司筹集了大量的资金,但他们仍然会花上几个小时的时间来回答像我这样的初学者的问题。


11、

Clojure 是一门了不起的语言 (它本身就是一种思考的工具),但将它用于初创企业的原因,是因为它有一个美丽的社区,可以成为其中的一员。

学习 Clojure 的人,往往就是我日常想接触的人。


12、

另一个例子 —— @timothypratley

我在第一次 clojure 会议上认识了他,我从他的 YouTube 视频中学到了Reagent。

他在 CLJ 工作了10年,我只学了8个月,但他却答应帮我成立一个研究俱乐部。

http://timothypratley.blogspot.com/2016/11/my-research-group-needs-you.html?m=1


13、

我就是靠这些找到使 Roam 成为实时协作工具的架构的

多年后,我们仍然在用这些代码。


14、

更多 PG 关于 Clojure 的内容

差点忘了 @stuarthalloway —— 他可能是除了 @richhickey 之外,社区最核心的人物 —— 最早是因为 "Beating The Averages" 才知道他的。

另外,我刚才说的关于为什么要雇佣 Clojurians。PG 在这里都说了 http://paulgraham.com/pypar.html

Roam Research 为何选择 Clojure 作开发语言

Roam Research 为何选择 Clojure 作开发语言


15、

陡峭的学习曲线和只要几天时间就能学会并不相互排斥。

事实上往往是相辅相成的。

当你走陡峭的小路时,你会很快到达山顶。

如果你投入 3 天的学习时间,Clojure 会让你大吃一惊,改变你的想法。


16、

"我给 Clojure 的情书"

学习 Clojure 如何改变了我的生活,让我重新体验到编码的纯粹乐趣,它如何影响独角兽项目中的五个理念 ......

... 以及我是如何修正一个 20 年来一直扼杀我的项目的错误 ...


17、

Clojure 的真正卖点是开发速度,而且它是一种更易于编写和思考的语言。

虽然这也很酷

在动态语言中,#Clojure 的性能对 web 应用程序来说非常好。


References

[1] Beating The Averages: http://www.paulgraham.com/avg.html