我的lisp学习心得和体会

一年前选修学校的网站技术课程得到了启蒙的我开始了一年的自学程序设计的过程,期间主要是使用javscript和nodejs搭建网站,学到后面一步步深入包括socket编程,http协议,linux系统的基础知识,一边学习一边思考的过程中,暑假选学了一门python深度学习的实践课程,但是好像并没有学到什么有用的东西,在网上查找es6语法的书籍和人工智能的历史的时候,突然一个不同寻常的程序语言出现在了我的面前,阮一峰大大翻译了保罗古根汉姆的那本《黑客与画家》把我的视线转移到了lisp这个古老而强大的语言面前,学习资料少之又少的我开始了一个异常困难的求知之旅,首先在网络上查询到了一本保罗编写的两本commonlisp的书,一个寒假的时间显然不足以使我理解这个神奇而强大的人工智能语言到底有什么魔力,我也不知道为何如此强大的语言,会这样被忽略,包括那些lisp书籍前面的序言说得所谓编程语言的宗教性质可能是导致这个的原因,倒是里面的使用lisp去思考一门语言的设计思路这个说法让我抛开了这个怀疑,我想,没有任何一个宗教会宣称自己的神孕育了其他所有的神,这本身就是一种谬论,可是在科学世界不一样,倘若某一个语言的设计者声称我的语言理论上可以实现任何一件事情,包括编写一门编程语言,这个并不难验证,大致有一个理论叫做图灵等价,这的确是事实,但是为何lisp的拥簇们如此热衷于宣扬一个已经通晓的事实呢?答案就是,这门语言从语法层面上支持对于语言内部最核心部分的改造,它的设计思想大概是要你为你想解决的一类问题都自主设计一门语言来解决它,编写数据库,你可以使用它写一个基础的框架来支持数据库的基本编写模型,写图形程序,同样如此。
当然我还没有真正从学习它的过程中得到所谓的函数式编程的好处,由于我的javascript程序入门的出身,对里面的一些高级特性往往一知半解,比如闭包,高阶函数,无论怎么说,得到一门梦幻以求的编程语言是很难的,设计者的思维总是在左右使用者的思维,让你在一个固定的框架里难以自拔,自然谈不上自由和快乐的编程了,对于我这种把生活和工作学习无法分开的人来说无疑是不大适合的,我希望享受工作和学习的过程,结果当然也是过程的一部分,那么我便希望自己不要永远都在思考工作完了之后我去做点放松的事情,我希望工作本身就是我的人生价值和生活意义的一部分,看起来好像比较困难,实际上我却觉得这是一个值得追求的目标,那么lisp好像给了我这样的感觉,它拥有我想要的所有特质,你写的代码只需要自己读懂就好了,因为你一个人要做这样一件事情,你要和一群有几千人的大公司进行竞争,你凭什么呢,自由的代价是及其昂贵的,但是却让人垂涎欲滴,财务自由并不是真正的自由吧,始终做自己热爱的事情,并且可以为社会带来价值,为用户带来利益,那么这显然是正确的一件事情。
我大概后面又学习了scheme为基础的那本《计算机程序的构造与解释》,一边在b站看视频,觉得得到了很多的启示,也理解了javascript的reduce函数的意义,原来函数式编程是如此的优雅,它的封装性和优美程度比面向对象更加强大,后面的数据抽象一节,我又体会了lisp的递归特性带来的威力,我大概无法想象以后再使用迭代来设计某一些程序是多么地低效,它带来更多的复杂性和难于理解的程序代码,看看现行的程序语言,java和c++,甚至python,它们都不支持lambda函数,或许后面会逐渐支持?
我只学习了很少的一部分,但是这些部分足够让我理解lisp的不同之处,但是大概要成为一个合格的lisp黑客,可能还需要积年累月的练习和编程,当然了,我已经把它作为我暂时终生学习的目标,以后写程序也使用它来思考的话,进步会很明显的,也许将来我会为某一个特定的编程领域编写一门自己的语言?也不是没有可能,但是现在还达不到这个水平,希望自己一直虚心若愚,求知若渴,学习,理解,然后创造,然后再学习,理解,创造。

你可能感兴趣的:(我的lisp学习心得和体会)