从 2000 年毕业,我做这行已经超过十二年了。最初接触计算机程序,还是 DOS 下的 QBASIC ,那已经离现在有接近二十年了。最初,我只是会照猫画虎,按照老师的程序抄个素数数列,或者打印个三角形什么的。初步理解程序的结构和意义,要等到读大学以后了。那个时候在老师的鼓励下,自己买书学习 Delphi ,才开始慢慢了解一些程序语言的知识。能够自己设计和开发出有点用途的程序,则要等到工作以后,在实战中一边做一边学。
回头看看,这条路竟然是意外的漫长。用了至少有七八年,而其中有好几年,完全就是在很低阶的知识层面上独自摸索。
当然,对于很多天资聪明,又肯用功的同行,这个过程要短的多。就我身边朋友的经历,有不少人是仅仅靠大学四年的学习,就完成了从零基础到出类拔萃的过程。
大概因为我特别的愚钝,加上后来做过半年的培训讲师。感觉对那个徘徊的过程记忆特别深刻。有时候就想,能不能为我这样完全没有基础的人,设计一些非常非常容易上手的基础教程呢?
所以后来我尝试写过《Emacs 零基础教程》、《Python 零基础教程》等文章,在企业内部和互联网上跟同行分享。但是总的来说,并不成功,其中之一的问题是,对于一个完全没有基础的学习者,有太多在老手看来已经天经地义的知识,需要学习和熟悉。要在一份教程里解释各种基础知识,其实是一个非常庞大艰巨的任务。回头看过来,我自己都有点不可思议,这些问题,当初我也曾经遇到过?我如何弄懂它们的?用了多长时间?
举个例子,在 Python 中文社区,我见到过的新手问题:
- 为什么用 word 保存的代码不能执行?
- 不明白文本的编码和字符串的编码是什么意思,有什么关系?
- 如何在解释器中执行代码文件(或系统命令)?
- 为什么代码文件拿到别人的机器上不能运行?
蔡学镛老师的《编程ING》就是这样一本书,它耐心的解答了以上的这些基础问题,以及,传授了那些真正的编程需要的知识。如:
- 什么是编程语言?
- 什么是变量?
- 变量的类型是什么?
- 基础的程序逻辑——顺序、选择、循环等
- 语境(即 Context,常见的译法是“上下文”,但是我认为“语境”这个译法要好的多)
- 函数
- 模块
书里用了一种很不常见的编程语言,REBOL——这大概会吓跑不少读者。《程序员》的老读者应该有印象,蔡学镛老师几年前就开始发表一系列的文章,介绍这门语言。今天这本书,可以说是蔡老师的厚积薄发之作。在书中,使用这样一门“小”语言作为教学工,进一步降低了学习门槛。
比起最初我用来打印三角形的那个还需要写行号的 Basic ,REBOL 倒也不失是一个实用的小工具,例如书中 43 页,就有一个用十几行 REBOL 代码写成的十六进制阅读器。可不是每一本入门书,都能在前50页教到这个程度。
说到这个,这本书有个很了不起的地方。它每一页,都有一半以上的内容是图解——好吧,这大概又要吓跑不少追求“文字量”的朋友。每一个知识点,都彩色的图例非常认真清楚的解释出来。相信常做幻灯的朋友都知道,好的图示,工作量比同样篇幅的文字更大。
正是依靠这样不厌其烦的详细解说,我相信这本书真的可以在三百多页的篇幅内,教会读者编程的基础知识,让读者可以用 REBOL 写出简单可用的东西,并且也具备进一步学习其它语言的能力。这可是三百多个详细的图解,等于是有一位老师手把手的教学生读书写字。我这十几年的学习和工作生涯中,读过不少专业教材,有些写的深入浅出,有些写的丰富翔实。但是能有耐心把所有初学入门的知识一点一点掰碎了教给读者的,确实仅此一家,别无分号。
在这份耐心面前,这本书可能给读这的顾虑,例如 REBOL 语言是不是太冷门,学了以后没有机会用什么的,真的不重要了。我们这代人,还有几个用当年的小海龟(LOGO)工作?还有多少人在用那个需要写行号的 BASIC ?我们都成为了所谓的“业内人士”,但是不应该忘记当初起步的过程。感谢有作者还记得当初的不容易,并且致力于帮今天的学习者,找到那种简单而有乐趣的学习过程。
零基础的编程学习者、想要教这样的学习者写程序的朋友,想要了解一下蔡老师多次推荐的 REBOL 语言到底有多神奇的朋友,值得阅读一下这本书,这是一本另类的,有趣的编程教材。它解答了我的一个疑问:
我们到底是怎么学会写程序的?那个过程,有没有可能简单一点?简单到即使不是理工、宅男,仅仅是想学习一下“写程序”,体验一下这个乐趣,解决一些问题的人,也能学会?
这本书给了我们肯定的答案。