firstblood00 2019-06-26
又名:写给不懂编程的人
一时兴起,用了差不多十天的时间,为「不懂编程」的人写了一系列的形散神不散的散文。这是我在这一年里做的我觉得最有意义的一件事,当然在我身边的人看来,这可能是我在这一年里做的最不务正业的事了。
「不懂编程」的人是加了引号的。这个人不是会编程的人,也不是不会编程的人,实际上这个人是我。也就是说,这一系列文章,不过是自嗨。拿出来示人,是自己觉得挺不错的东西,以为别人也会觉得挺不错。很可能这种感觉是错误的。
这些文章将 Emacs 作为一台可编程的机器,以 Emacs Lisp 作为编程语言。
对于 Lisp 语言,在写这些文章之前我只是略懂。现在我所掌握的 Emacs Lisp 的知识基本上都在在这个系列的文章里。这些知识基本上是我在写这些文章的过程中现学现卖,只不过是以我最喜欢的方式来卖的,其中还夹杂了一点奇怪的东西——我对这个世界的浅见薄识。
在这十二篇文章里,我很不学术也很不严肃地介绍了计算机原理、Emacs 的基本用法,以及 Emacs Lisp 的函数、变量、递归、Y 组合子、动态域/词法域、宏等知识,还讲述了 Emacs Lisp 版本的快速排序与列表的递归遍历程序的编写。我将这些知识称为程序的基本形状。
这些文章的目录如下:
更新说明:
2017.12.06:利用 let
表达式对第 12 篇的 list-map
函数进行了简化。
2017.12.07:为第 6 篇补充了一个例子,它是对第 3 篇定义的 c-malloc
函数所做的改进。
2017.12.07:为第 10 篇补充了一种守株待兔式的理解递归的方法。
2017.12.08:重新梳理了一遍对第 8 篇,克服了一些文字不通顺而导致难以理解的问题。
虽然这些文章讲的是如何用 Emacs Lisp 语言在 Emacs 环境中编程,但是一个事,你用英语来讲,还是用汉语来讲,事没有变,只是外在的形式变了。因此这些文章里所说的这些事,可能还都是大家经常遇见的。退一步说,学点 Lisp 也不算坏事。
前面已经说了,这些文章仅仅介绍了程序的基本形状,就像欧氏几何学里的三角形、四边形之类的东西。要想编写更复杂而且也更有用的程序,应该去看那些介绍了程序更复杂的形状的书。
接下来,对于编程的初学者,我建议的是,在参与编程这项工作的过程中,不妨再啃几本下面这样的书:
倘若只是对 Emacs 有了兴趣,那就去看 Emacs 与 Emacs Lisp 的官方文档。