Roam Research 为何选择 Clojure 作开发语言
1、
如果你因为 PG 的文章而对 Lisp 感兴趣,那么知道他现在推荐 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 工程师的工资在美国乃至全球都是最高的。
你不担心招聘吗?
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
15、
陡峭的学习曲线和只要几天时间就能学会并不相互排斥。
事实上往往是相辅相成的。
当你走陡峭的小路时,你会很快到达山顶。
如果你投入 3 天的学习时间,Clojure 会让你大吃一惊,改变你的想法。
16、
"我给 Clojure 的情书"
学习 Clojure 如何改变了我的生活,让我重新体验到编码的纯粹乐趣,它如何影响独角兽项目中的五个理念 ......
... 以及我是如何修正一个 20 年来一直扼杀我的项目的错误 ...
17、
Clojure 的真正卖点是开发速度,而且它是一种更易于编写和思考的语言。
虽然这也很酷
在动态语言中,#Clojure 的性能对 web 应用程序来说非常好。
References
[1]
Beating The Averages: http://www.paulgraham.com/avg.html