回到未来:永恒的lisp

栏目: Lisp · 发布时间: 8年前

内容简介:回到未来:永恒的lisp

2016-12-20

lisp我学不会。我研究了很久的lisp,仍然没能领会到本质。它并不是一门语言,而是一种精神,一门哲学,信仰或者宗教类似的东西。

一开始我以为是一堆的括号,是cons,car和cdr,括号只是表象。抑或是map,是闭包和高阶函数?lisp是一门函数式语言?那函数式又是什么?后来发现了lambda calculate。自然是打开了一扇窗。简单的背后,隐藏了太多东西。慢慢的迷失在lisp是什么。看一看lisp里面到底有什么。

副作用和不可变状态,这是函数式语言比较强调的,其它语言里也有,lisp也没有过于强调这个。

垃圾回收,被很多语言学去了,现在出现的高级语言,哪个不是自带垃圾回收?lisp是第一门支持垃圾回收的语言,可惜它出现的太早了,太超前了。直到 java 一类的垃圾回收的语言普及,花掉了几十年时间才让社区能普遍接受,是的,lisp太超前了。

call/cc,除了scheme,直接暴露控制流的语言还真不多。协程不就是简简单单包装一下的事情。然而协程只不过是continuation的应用场景之一。不过我觉得这并不是一项有价值的feature,也不是它的先进之处。当年lisp刚出来时可没有这项feature。

卫生宏。对于宏评价,人们褒贬不一。它带来了灵活性,也导致了分裂,不得不承认宏确实是lisp里非常特色的一个地方,虽然我不喜欢。

想必大家听过这个故事:

在 ILC 2002 大会上前Lisp大神,当今的 Python 倡导者Peter Norvig,由于某些原因,做一个类似于马丁路德在梵蒂冈宣扬新教的主题演讲,因为他在演讲中大胆地声称Python就是一种Lisp。 讲完后进入提问环节,出乎我意料的是,Peter点了我过道另一侧,靠上面几排座位的一个老头,他衣着皱褶,在演讲刚开始的时候踱步进来,然后就靠在了那个座位上面。 这老头满头凌乱的白发,邋遢的白胡须,像是从旅行团中落下的游客,已经完全迷路了,闲逛到这里来歇歇脚,随便看看我们都在这里干什么。我的第一个念头是,他会因为我们的奇怪的话题感到相当失望;接着,我意识到这位老头的年纪,想到斯坦福就在附近,而且我想那人也在斯坦福 —— 难道他是…… “嗨,John,有什么问题?” Peter说。 虽然这只是10个字左右的问题,我不会假装自己记住了Lisp之父约翰麦卡锡说的每一个字。他在问Python程序能不能像处理数据一样,优雅地处理Python代码。 “不行。John, Python做不到。” Peter就回答了这一句,然后静静地等待,准备接受教授的质疑,但老人没有再说什么了。此时,无语已胜千言。

我第一次看这个故事还是在许多以前,直到现在,有了更深的体会。

了解过类型理论的人大概都知道这是个很复杂的东西。lisp一般是无类型的,但我见过有一门叫做shen的lisp方言,它实现了类型,而且它的类型系统只用了511行的代码。怎么做到的?用这些代码它会生成大约200多条规则和公理,然后将这些规则变成大约27,000行的Common Lisp代码!天呐,这么神奇?因为lisp的代码即数据呀。写一行lisp相当于其它语言写一百行,何等恐怖的生产力。

在编程语言鄙视链里面,Java鄙视C不是面向对象的,python鄙视的Java还不够灵活,haskell的学院派则鄙视C、Java、python等一切非函数式语言,而唯有lisp是站在编程语言进化论的终点,傲视群雄。如果将编程语言比作爬山,C在山脚,Java爬得稍快一点,但还远远看不到haskell的影子。只有lisp,它站在山顶,透过重叠的云层,看到蜗牛一样的haskell都还没爬过半山腰!

但是,为什么它没能流行起来?

如果说编程语言是宗教,那么lisp一定是佛教禅宗。佛教里是没有上帝的,宣称每个人都是可以成佛。但是佛教讲究缘份,需要开悟,对于没有慧根的人,lisp也就无缘了。所以我看到但凡能对lisp有一些心得的,都属于 程序员 中最聪明的那一类人。各个年代也总有一些能参悟lisp的人,从而将这种香火传承下来。

这种传承却不是靠口口相传能够解决。正如优秀的程序员不够多,是函数式语言永远无法解决的问题。能够悟到函数式语言这一层就已经是凤毛麟角了,而lisp又不知道高明到哪去。

凑一堆天才在一起是很困难的,比集齐七颗龙珠还难,而天才一般都有自己的个性,难免凑在一起了不打架。lisp的灵活性更是让状况雪上加霜。为什么有这么多的lisp呢?因为每个深刻理解lisp的人,都有自己的对lisp不同的理解。即便是每个悟道成佛的人,悟的东西其实都不尽然相同,所谓"道可道,非常道"。

lisp没有流行并不可怕,lisp本来是孤独的。我觉得引用这个句子非常合适:

只有当你独自一人深入荒漠,用树枝在黄沙上为自己喜欢的Lisp方言写解释器时,你才成为一名真正的Lisp程序员。

软件开发却不是单打独斗的工作,这个时代已不是靠一个天才就能创造出什么。只是大师的光辉会照耀着我们。当年一手创立了GNU的大胡子,其实他同时也是位lisp高手,lisp machine失败后,Emacs算是硕果仅存的"伪装成操作系统的编辑器"。lisp的编译器很多,我最后一个觉得比较有意思的是shen,当然经历不同感悟会不同。觉得lisp不是函数式语言的人,大概不懂函数式。觉得括号难看的,可能不知道模式匹配,当然,更不可能领悟代码即数据的重要性。真要觉得有类型才算牛逼的,去看下逻辑编程。其实所有的一切,lisp都有,一沙一世界,就看能领悟多少。

既然提到佛,真心信佛的人不多。大概就两类:要么是上了年纪的大妈,要么是清华退学的天才。嗯,就好比最牛逼的语言只能是 PHP 跟lisp一样。

lisp是上世纪的东西了,但是它的出现超前了何止一个世纪,直到今天,我们所有主流的语言还不停地向它"借"一些东西。所以可以看到很多语言里都流趟着lisp的基因,但,它们都不是lisp。

这个恐龙时代的语言真的有这么神奇?是,大概就是回到未来的感觉吧,lisp的精神将永存于世。

(全文胡扯,只有开头第一句正经的。准备放弃lisp了,瞎写点东西留作记念吧)


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Tales from Facebook

Tales from Facebook

Daniel Miller / Polity Press / 2011-4-1 / GBP 55.00

Facebook is now used by nearly 500 million people throughout the world, many of whom spend several hours a day on this site. Once the preserve of youth, the largest increase in usage today is amongst ......一起来看看 《Tales from Facebook》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换