起因

之前因为vpp和emacs的原因,了解过一点lisp的内容,觉得还是挺有意思的,但是长时间不用忘记的差不多了。

最近在家看旧书,看到一本《计算机程序的构造和解释》,简称SICP,里面用scheme描述程序的构造和抽象,觉得不错。

因此又去看了scheme相关的一些东西,发现scheme比common lisp还要简单一些,语法元素非常少,但是功能还算完备。

虽然实际工程应用很少,但是拿来讲讲课,研究下算法还是可以的。

环境

用的mit-scheme,写lisp的编辑器还是用emacs的一套生态做开发比较好,开个分屏,一边用evil编辑,一边开个repl或者shell,编辑和执行都很愉快。

之前用过emacs+evil,现在又用感觉还是不错的。emacs的强大之处就在于使用插件比较方便,除去一些个性化的插件,纯编辑还是vim顺手。

语言

回到scheme本身,宣扬函数式编程,强调递归,高阶函数,program=data=list这样的理念,主张程序员都应该把自己看成编程语言的设计者。

因为每个复杂的程序进化到后面,似乎都要提供一种编程语言解释器类似的东西。

这样的理念对我来说还是比较有吸引力。不同于C语言编程,满脑子想的是指令,内存,强调抽象,又不失去其简洁。

各种现代语言,比如go/python/js之类,借助于丰富的库和各种数据结构,编码也很简洁,但还是没有lisp简洁。

现代的软件开发,大部分都会借助已有的很多复杂组件,通过工程化的组装,形成一个产品。

lisp早期不够底层,后期不够抽象,没有形成C/JAVA那样的生态,现在已经难有大的发展了。

在它被埋没进历史之前,用它来学习如何成为一个更好的程序员,还是很有意义的。

同类

谈到lisp,经常有人拿它与haskell比较。很多人说haskell难入门,但是有点lisp基础去看haskell还是比较好理解的。

作为工具,haskell的问题与lisp一样,没有好的生态,工程应用很少,只能当个兴趣爱好和个人工具了。

作为程序员的个人工具的话,用emacs和elisp不是已经很香了吗。还要啥自行车? 还是上lisp吧。