事情的开始是上周无意中找到了原本以为丢了的《Go To》。这本书读起来很有意思,比如我从中找到了 C++ 和 COBOL 的相似之处。所以,当初以为弄丢了的时候很失望,这次『失而复得』也很惊喜。接着上次停下的地方开始读下去,很快的结束 UNIX 的章节,进入关于 Basic 语言的历史。
我一直以来认为 Basic 不是一个成功的尝试。对于软件开发人员来说,Basic 很像小孩子用的简易学行车,没有必不可少的需要,用的不好还有让孩子骨骼变形的危险。Visual Basic 也是整个业界一次尝试简化开发的歧路(Delphi 部分的修正了这个错误,不过根本的问题是快速应用开发(Rapid App Development)本身就是一个急功近利的产物。今天,GUI 开发中传统的 RAD 已经接近消亡,取而代之的是 Cocoa、GTK、QT、Flash 等等根基更为稳固的技术)。
这次读《Go To》,发现这完全是对 Basic 语言的发明者 Thomas Kurtz 本意的误解。Kurtz 丝毫没有希望 Basic 成为计算机技术人员的入门语言,他的愿望是希望给文科学生提供一个接触计算机技术的机会。这些文科学生将来并不会从事计算机技术和科学的研究,但是他们更可能在社会生活中作出高层决定。如果他们完全不了解计算机技术,那么他们在一个计算机技术主导的社会中作出的决定是否明智就很成问题。也就是说,发明 Basic 语言的本意是社会层面的,是一次对大众和潜在的高层管理人员的公关行为。(相对来说,在中国推广 Basic 语言的行为有一种误导的倾向。Visual Basic 这种尝试也是对其本意的一种偏离。)从这个意义上说,不但 Basic 语言的结果是成功的,能够提出这个设想本身就说明美国的知识阶层是有远见的。
2009/09/21 2:00 下午 |
我突然想到教育孩子学编程不应该用真实的计算机,应该让他们在纸上编程,先学用正则表达式处理文本。只用纸笔去思考,让孩子的大脑能够真正学会艰苦地思考。
另外关于Basic,设计者总是预料不到使用者会如何使用他们的产品。这才有趣。计算机的设计者之一(冯。诺依曼?)还预料世界只需要几台计算机就够了呢。哈代还说数论没任何实际用途呢。
2009/09/24 2:24 上午 |
话说也没几个先驱们真的知道自己的东西东西会怎么用。Bjarne最早写D&E的时候也没说过加template就是为了搞meta programming。这似乎从反面印证了集体智慧的伟大力量。
关于纸上思考呢,我想这个有点难,现如今这年头即使是真的码农也未必都能做到这个,遑论那些反问我们:“所有的电脑上不是都有IE吗”的童鞋们。
我认为搞计算机教育的话用计算机必须用真实的,但教学方式上要分两类:
a) 如果是打算做专业码农,就让他们从用Makefile手工编译开始,一步一步地过编译的细节。就得让他们知道只会玩玩自动档当不了专业赛车手。
b) 如果不打算做专业的,就让他们用VB,Perl,Python这种能搞快速开发的。让他们知道有了自动档加上合理的严谨思维,自己也能把车开起来。