我承认我是看了 Paul Graham 的“黑客与画家”后中了Lisp的毒。
本来在看SICP时,只纯当Lisp是一门教学语言,现在完全觉得这门语言神奇的令人着迷,想象一下在纠结的前缀式和层层括号下,是程序语言的本质结构,让我们根本不用去纠结琐碎的语法(让语法细节见鬼去吧~~),正如Paul Graham所说的,Lisp与其说语法简单,不如说根本没有语法。当我们摆脱层层括号的困扰后,会发现我们得到了太多的优点:我们根本不担心算符优先级、诡异的结合优先级 ~~~ 等等繁文缛节。当我们把Lisp代码“拎”起来,就会发现它自然就是一个优美的语法树:程序即数据,也可以自由定制。
看着一段段简洁优雅的Lisp代码,真的对以前膜拜不已的C++提不起兴致来~~
呵呵,最近也正在看<黑客与画家>,不过还没看到说lisp那部分
我想没有成为主流用太先进来解释实在是太牵强了
很明显没成为主流是因为不好学习或者开发慢,总之是对新手不友好,门槛高
主流语言向lisp靠近的说法还只是在计算型语言阵营,像c++和java这些天生的机器型的语言,想靠也靠不过去
我还是坚持上面的说法,因为多核机器的出现,计算型语言的机会大大增加了
lisp在计算型语言中的位置相当于c在机器型语言中的位置
我们现在使用c很大一部分原因在于它性能强劲,而lisp并不
所以以后很难想象有新手愿意放弃流行而强大的python,ruby而去学老古董的lisp
当然部分的高水平程序员或者老一代的人也许还坚持使用lisp
但如今相比6月份,我更觉得它不太可能流行起来了
汗...千万别用"您"...
当初看sicp给我感觉良好的原因是,我以前学习过的语言,c/c++,java等都是属于机器系的,而lisp,和后来的python,ruby等是属于计算系的.当然lisp最纯
c/c++这样的语言结构都是对机器的抽象,所以性能上相对来说强大一些.但是操作上就不太方便了,而且思维显得有点奇怪
lisp是纯洁的对计算的抽象,所以它的解释器就必须适应不同的机器结构
由于计算机和数学的渊源,传统上,lisp这个系列给人感觉更高端一些.但是市场不选择他们,其实也挺郁闷的
直到多核机器的出现,c/c++这些对机器抽象的语言不太能适应多核心的编程.lisp等的函数式编程方式的优势就大大体现出来,再加上一直以来和数学的关系给人的高端印象,辛苦了五十年终于扬眉吐气
lisp作为一个老古董,要想把函数式编程发扬光大,还是要靠后来的python,ruby等.把lisp太当回事儿完全是知识分子的自我感觉良好.它当然可以维持它一直以来的高端形象,但已经那么老了,要成为主流的编程语言,我觉得困难比较大...
……这次我也中枪了。
当时我只是隐隐约约地感到了它有一些过人之处,但并不是很清楚具体强大在哪——
lambda?python也有,虽然不是闭包的;
用cons来组织复杂的数据结构?用C的指针,或者是python的列表,似乎同样可以做到。
看到quote的时候有点晕,但当时居然神奇地想到了用lisp来生成lisp的代码……不过SICP前三章都没提到它,于是我在看到第三章末尾的流的时候放弃了。
不过用数据结构拼凑加法器确实够霸气= =
知道macro的应用是看过《Practical Common Lisp》之后的事了……
所以我的结论是,对于没接触过FP而且有一定编程经验的人,最好的入门书目是《Practical Common Lisp》,而不是SICP……
……不过,其实《On Lisp》这本书我完全没看过= =