《黑客与画家》这本书中,保罗 · 格雷厄姆给大家描述了一种黑客心目中梦寐以求的语言。

enter image description here

让我们试着描述黑客心目中梦寐以求的语言。这种语言干净简练,具有最高层次的抽象和互动性,而且很容易装备,可以只用很少的代码就解决常见的问题。不管是什么程序,你真正要写的代码几乎都与你自己的特定设置有关,其他具有普遍性的问题都有现成的函数库可以调用。

  • 句法短到令人生疑。
  • 这种语言的抽象程度很高
  • 语言的内核很小,但很强大。
  • 以层的方式构建。
  • 所有细节对使用者都是透明的。

这种语言提供的抽象能力只是为了方便你的开发,而不是为了强迫你按照它的方式行事。事实上,它鼓励你参与它的设计,给你提供与语言创造者平等的权力。你能够对它的任何部分加以改变,甚至包括它的语法。它尽可能让你自己定义的部分与它本身定义的部分处于同等地位。这种梦幻般的编程语言不仅开放源码,更开放自身的设计。

在这本书中保罗 · 格雷厄姆非常推崇Lisp这门语言。3月16日,中国lisp技术爱好者齐聚图灵,进行了一场充满欢乐氛围的交流活动。 enter image description here

本次lisp技术沙龙报名比较踊跃,报名了100多人参加会议。图灵这边也提前做了准备,最大限度的腾出空间布置场地,还临时征用了编辑们的椅子。结果准备还是不足,虽然提前公布了场地人员限制,但还是难挡大家的参加活动的热情,现场人员爆棚,晚来的人员只能站在听讲,小编在这里也先抱歉则个。

enter image description here

相机的视线后方还有许多站着听讲的人,Lisp语言的号召力还是很强的。在开场自我介绍的环节有几位参会者提到,就是看了《黑客与画家》这本书才投入到了Lisp的怀抱之中。看来保罗 · 格雷厄姆对于Lisp这门语言的推广功不可没。

好书总是值得人们一读再读,当你放下它的时候,它总是在那里默默的等待着你的下一次翻阅。读过《黑客与画家》这本书的人都会有这样的体会,每次阅读都会有一些新的心得体会。

enter image description here

活动的第一位演讲者帝归(花名),他给大家分享了 《小议Clojure与其它Lisp的异同》。帝归也是一位Lisp语言的实践者,在进入大学后开始编程,阴差阳错的进入了Lisp的世界。他从Lisp语系的历史、语法及编程范式、工具链、运行时等几个方面和大家进行了探讨。

现场提问环节有人问到 ,现在哪一种语言更有发展?有人说是Clojure,也有人并不认同,也有人说这个问题就是像《黑客与画家》中所讲的“一百年后的语言”一样。

enter image description here enter image description here

第二位演讲者沈锋给大家带来了《Clojure Web简介——少了框架,日子更美好》。他在现场直接编程讲解。他也说道自己是一个实践者,喜欢code。写过Java、搞过Python,最后钟情Clojure,投入Lisp的怀抱。沈锋的幽默风趣也引来了大家的阵阵笑声。

enter image description here

来自ThoughtWorks 的第三位演讲者韩锴与大家分享了《Prolog与Erlang起源》。讲者并不使用Prolog与Erlang,只是对于新语言的热情,让讲者对于Prolog与Erlang投入了大量的关注。

enter image description here

第四位演讲者赖林华与大家分享了《Haskell 与 Yesod,利用 DSL 加速 Web 开发》。在提问环节听众问了一个问题“什么叫纯粹的语言?”,讲者给出的答案是“纯粹就是一个函数的输入没有副作用”。听众追问“你说所有的语言都是纯粹的那么所有语言都没有副作用,那什么是副作用”,讲者的回答是“你在写代码的时候是没有副作用的,运行起来的时候才会产生副作用”。

enter image description here

第五位演讲者包昊军带来了《我想读源代码》的10分钟简短演讲。他也是现场编程与大家进行探讨交流。

enter image description here

最后一位演讲者,温瑞云与大家分享了《Clojure的力量之源》,也是一段10分钟的简短演讲。讲者结合自己的实践,介绍了Clojure与C++对比的感受。

enter image description here

最后在整个活动结束后,一定要来一张合影。很多人都坚持到了活动的结束。

后记(转自维基Lisp中文社区

Lisp的历史

Lisp的历史十分悠久,仅次于Fortran,是第二古老的语言。 而对于Fortran,语言学家给予的负面评价远比正面评价多,甚至在很多场合被作为程序设计语言的反面教材; 但是Lisp则刚好相反,它一直被人们作为一个优秀作品的例子被大加赞扬,这些人中包括著名的计算机科学家,Smalltalk的发明人——Alan Kay。 有一个传言,据说McCarthy当时想把这门语言的语法设计往后拖一拖,等到他把一些有趣的事做完之后,再回过头来给这门给予Lambda演算理论的语言加上一些数学家们熟悉的语法,可是他的一个学生发现,在一个还没有定义正式语法的抽象语法上中写程序,感觉非常好,于是McCarthy干脆就决定不定义Lisp的语法。

直到如今,Lisp的“语法”定义中值得一提的规则似乎只有一条“括号要配对”,其它的都是“语义”上的规范。 这样做当然不是没有代价的,很快Lisp就出现了第一个分支Scheme。这个语言由Guy Steele, Jr.和他的老师Gerald Sussman设计。这两位最开始的工作是改进Lisp,他们共同把Lisp由Dynamic scope变成了Lexical scope。今天几乎大家熟悉的所有语言都是Lexical scope。后来他们共同把Continuation这个概念引入了Lisp,于是一门新语言就这样诞生。 随后,Sussman把Lexical scope和Scheme中的一些其它概念都引入了Lisp,并由此确立了Common Lisp的标准,Sussman本人也一直是Common Lisp的主力。

作为一门最早出现的FP语言,Lisp当然有它的缺点,其中最为人诟病的恐怕就是括号了,所以随后出现的许多FP语言都试图使用另外的语法来清晰的描述程序,这其中最著名的当属Haskell,Haskell是一门“纯正”的FP语言,在Haskell中,变量不能赋值,没有循环,甚至没有程序流程,一切都是函数。