一定要看,原文地址是: http://www.cppblog.com/toMyself/archive/2010/08/29/125217.html 本文内容经过了我(Shane Loo Li)少许修改,主要是更新了目录。
自由软件:新的游戏规则
洪峰
内篇之一:“一、百、万”工程
1. 牛犊涉世之初
2. 迷雾中的引路人
3. 蹉跎岁月
3+漂泊
4. 走出混沌
5. 漫漫求索路
6. 初试网络的威力
6+自由软件
7. 坚果中的爪哇
7+与中央电大的合作
8. 结识理查德·斯托曼
9. 奥莱理变奏曲
10. 峰回路转九寨沟
11. 从观网看自由软件
12. 东山再起
13. 结语
“一、百、万”工程
牛犊涉世之初
我第一次听说泛系和吴学谋教授的名字大约是在1990年的下半年。当时我年方二十二岁,血气方刚,在某家国营的外贸公司工作。在大学里我苦学过英语,功底很好,故经常奉领导之命出席参加外事商务谈判活动,而很多同事干了几十年,但是终因语言不过关,因此只能做我的助手,因此我被他们嫉妒得不得了。 由于我不谙处理人际关系,终被同事暗算,从主管的职务“贬”到储运部门当小职员,而且他们还派了一个终日喋喋不休的老妇人监督我。我开始过起了无聊的日子,眼看着时间一天天地过去了,心中感到无比的苦闷。
储运部门的任务并不饱满,空闲时间很多。为了不虚度年华,我开始自寻出路。我在那个老妇人的监督之外开始学习德语和法律。在大学里我曾经学习过一段时间的德语,经过一段时间的自修,水平有了很大长进,学习的笔记也写了厚厚的几大本。为了应付那个老妇人,我在她监督时便看报纸,这她可说不上什么,因为她在没有事的时候也看报纸。
一天,我在读《长江日报》时,一则报道映入了我的眼帘,那篇文章篇幅不算太长,大部分内容我已经回忆不起来了,但是,有一点给我印象很深,说中国学者吴学谋教授发明了一套方法可以“放大”人的智能云云。为了了解更多的情况,我冒昧地按照报道上提到的武汉数字工程研究所的名称写了一封信给吴学谋教授,希望能见到他,并能具体地介绍泛系理论。这封信是用英文写的,而且是利用那家外贸公司的英文打字机打的,我不能确信他是否能够收到这封信,但是我还是发出了,我也不能确信他收到信后是否会给我回信,因为我是只一个无名小卒而已。
又有几个月过去了,我没有收到任何信件,于是这件事情我就淡忘了,我仍埋头学习德语和法律。这时(应该是在 1991 年的二月底或者三月份初,因为当时武汉接连不断地下雨,快进入雨季了),我的一个苏联朋友来武汉访问,因为他知道我会讲俄语,希望我能陪同他参观几个地方。我于是陪同他到武汉东湖高新技术开发区去参观和谈判。当时苏联还没有解体,尽管戈尔巴乔夫在台上天天喊他的改革与开放,但是中苏关系实际上还是处在冰冻时期末尾,没有改善。一下子来了一位高鼻子、蓝眼睛的俄罗斯人,东湖高新技术开发区的领导们很重视,也很谨慎。安排了一群老同志出来会见这位外宾,在会议室里,中方的同志们说话都非常地小心翼翼,生怕泄露了什么国家机密。这群同志二十世纪五、六十年代都学过俄语,但是多年不用,大都忘记了,只有一位同志例外,还没有全部忘记掉(他的名字我已经不记得了),只有他能与外宾进行简单的沟通,这样会议室的气氛才没有凝固。
最后,外宾提出,你们的东湖高新技术开发区成立的消息对外已经公布过了,正因为这样他才慕名而来,他也知道中方有些单位(这里使用“单位”这个词是最准确的,因为那个时候根本没有今天这么多的公司)想与外方合作,希望能实地考察其中几家。于是那位老同志友好地介绍了研究和制造光纤、激光器件、计算机系统的几个单位,包括以研究容错计算机系统和 Ada 语言的七零九所。于是,在他们的陪同下,我们几人一同驱车参观了这几家单位。
当我们最后到了七零九所时,我看到了门口的招牌,突然意识到这家单位就是武汉数字工程研究所,也就是吴学谋教授工作的单位。于是在与七零九所领导快谈完时,我以外宾的名义提出想见吴学谋教授。七零九所的领导当场很诧异,他们搞不明白怎么连苏联人也知道吴学谋,但最后还是叫秘书立即通知吴学谋到会议室来。
大约过了一刻钟的工夫,秘书领着吴学谋进来了,当时的情景我仍然记得很清楚,仿佛就在昨天一样。他当时身穿一件灰色的风衣,打上了一条红色的领带,下面是一条黑色的裤子,头发已经梳理过了,戴着眼镜,人显得很精神,一看就是一副大学者的形象。他一开口就是很浓的广西口音,我起初听不懂他说的话,但是过了几分钟就适应了。
寒喧几句之后,我们便聊起来,我问吴教授,他的理论与模糊数学是什么关系(我在大学里学过模糊数学,但是并没有入门。)?他说模糊数学可以用泛系理论来重新认识1。 这更加深了泛系在我心中的神秘感。我们还谈了其他内容,我告诉他我就是那个写信给他的洪峰,他一下子就联想起来了,告诉我信他是收到了的,但是忙于写作另外一本书,一直没有时间给我回信。我希望他能详细介绍泛系理论,于是他送了一本刚刚出版的《从泛系观看世界》给我,说这本书比较详细地介绍了泛系理论,希望我可以从中得到一些答案。我怀着对泛系的满腹疑问愉快地与他告别,并约好过一段时间再见。
迷雾中的引路人
送走了苏联朋友后,我便废寝忘食地开始阅读《从泛系观看世界》。这本书的确写得很好,非常深入浅出,定性的部分我基本上看懂了,但是我的数学功底实在太差,很多定量性的内容我还是根本看不懂,我虽然是学机械工程出身,上大学时数学分析课程也学过一年,吉米多维奇的数学分析习题集上的四千多道题目也做过一两千个,但是当时都是为了应付老师和考试,数学理论还是学的少,真正知其所以然的东西就更少了。《从泛系观看世界》里面用到了很多集合论的术语,什么幂集啊、传递包啊,等等,这些东西当时我可都是第一次看到,一窍不通。
为了搞明白泛系,看来集合论是非学不可了。于是我找了一本介绍集合论的书,是方嘉琳编写的《集合论》2,开始钻研起来。这本书不算厚,253 页,但是里面的各种数学符号一看就令人头痛,什么阿列夫(aleph)啦、良序啦、格啦、代数系统啦,等等。我越看问题越多,而且理不出一个头绪来,于是我决定提前去问吴学谋教授,让他来指导我。我天真地以为,只要明白了集合论,就可以不费吹灰之力地搞定泛系理论,就能去放大我的智能,而变得更加聪明些了。
我带着《集合论》这本书又一次见到了吴教授,我原来指望他能够就书中的问题逐一地对我进行辅导,就像大学里老师对我们的辅导一样。当得知我在学习集合论时,吴教授很高兴,把我带到了他的家中,我们开始谈起来。这是他第一次给我上数学课,但是,他自始至终没有打开我的那本《集合论》的书本,而是给我讲什么是集合,这个概念是怎么来的,数学中的隶属关系如何理解等。他在将分类的办法时,以人的分类为例,通过不同的分类条件,可以分出形形色色的人群来,大量生动的例子逗得我哈哈大笑,可以说他讲得头头是道。这是我一生中第二次有人将枯燥乏味的数学讲得这么生动,就像听动人的故事一样。
我第一次接触数学的美感是在高中一年级学习立体几何时,我的中学数学老师是一位极为出色的先生,他的讲课充满了幽默故事,纯启发式的,又不失严谨,往往枯燥无味的数学问题经过他的讲授,一切疑难便无形地消失在笑声中。他总是试图引起我们的好奇心。正是在这种好奇心的驱使下,我在高二时便理解了数学中极限和导数的概念。可惜当时面临高考的压力太大,我不可能用心思去仔细地品味数学中的美感。
时隔这么多年后,吴教授的讲授又再次引发了我的好奇心。吴教授高度重视直觉在数学思维中的作用,从此以后,我完全改变了对数学的看法,不再觉得数学符号是枯燥乏味的,相反,我认为一旦理解了数学符号背后理论的思路和背景,把相关的数学直觉建立起来后,数学是人人都会喜欢的学科。可惜,现代的教育体制已经将人的好奇心扼杀殆尽,人的直觉训练不受重视,对于背景与数学理论的来龙去脉更是很少提及,我发现这一问题不仅仅存在于数学的教学活动中,在其他学科的教学中也不同程度上地存在,甚至有过之而无不及,令人惋惜。
无论在中学还是在大学,我的文科功课是学得很好的,中学的语文课本里的古文可以倒背如流。历史成绩更是好得连授课老师也觉得奇怪,这个孩子怎么知道这么多历史知识啊。英文老师也佩服我的记忆力,因为我掌握的词汇量很多,后来由于吃不饱,便自学了一年的法语(我的英文老师也学过法语,所以他总是担心两种语言是否会在我的头脑中打架),我还是物理课代表,物理老师总是让我帮助他代解其他同学的作业。只有化学课糟糕,因为我觉得那么多的分子式、反应式不用去死记硬背,具体应用时,知道查书和手册即可,而且化学课经常做实验,酸啊、碱啊、玻璃瓶啊,这个不许碰、那个不许摸,我觉得约束实在太多。
我喜欢上数学课是因为我没有这些约束,而且老师的讲解轻松有趣,什么东西只要在头脑里认真想清楚就可以了,可以说数学是一种“思维体操”。后来我的体会是,文科的功课比较好懂,容易入门,而理科课程则需要动脑筋,没有老师的指导,很难入门并掌握要领。所以,要理解这些课程,就必须要有好的引导过程。
我很幸运,因为我遇到了吴教授,他能给我良好的导引。
蹉跎岁月
艰难的人生抉择
在吴教授给我上了第一次课后,我对数学产生了浓厚兴趣,开始花很多时间来思考集合论中的观点。现在回忆起来,可以说我走了一条捷径,因为集合论是几乎所有现代数学理论分支的共同基础,没有集合论提供的工具,描述一种数学概念或理论可以说是寸步难行。从这一基础理论开始研究数学要比从其他地方开始少走很多弯路。
方嘉琳所著的《集合论》一书只介绍朴素集合论,也就是由伟大的德国数学家康托尔(G. Cantor)首创的集合理论。对于大多数人来说,这本书介绍的朴素集合论应该是足够了,但是我没有满足,我怀着好奇的心情想看看书中一笔带过的公理集合论究竟是什么样的东西。
公理集合论非常大的程度上是为了解决朴素集合论中产生的悖论而产生的。后来我才搞明白,这个问题涉及到了数学这门学科的哲学基础。所谓悖论,按照我的简单理解,就是在逻辑上自相矛盾的东西。数学是讲究理性思维的,不允许似是而非的东西存在。可是我当时非常迷惑,为什么从纯粹的逻辑假设出发,按照逻辑系统的推导,可能会得到似是而非的结论呢? 难道说我们人类在认知能力上有着先天性的重大缺陷吗?
对于这些问题, 当时我无法回答自己,我想泛系理论或许可以回答我的问题。但这时我对集合论刚刚入门,无法深入下去,我步入了一个谜茫的世界。 我这个人天性爱好自由,一旦心中有了疑问,便感到了身上有了巨大的约束,心中非常地忐忑不安。
除了这些烦恼之外,我的生活也遇到了麻烦。1991 年底我第一遇到了人生以来最严重的危机,我所在的外贸公司的工作尽管在其他人看来是令人羡慕的职业,但是对于我,上班却如同坐牢一样难受,终于到了我无法忍受的地步。经过反复的思考,我做出当时令所有常人(除了我自己之外)难以理解的举动 —— 辞职。武汉这样的中国内地城市在 1991 年时仍然是非常封闭的社会,辞职就意味着失掉了一切 —— 没有了任何收入,没有了任何社会保障,没有任何社会地位如同乞丐,女朋友也同我一刀两断。一句话,我从一个令人羡慕的位置一下子跌入了社会的最底层。
感谢我的父母亲,是他们在我人生最困难的时候仍然是一如既往地那么爱着我,尽管他们也不理解我的离奇举动的原因,他们却早就看到了儿子的彷徨、苦闷,也看出了我的不幸。凭借他们对儿子的爱和了解,他们还是默默地接受了我辞职的现实,一方面终日为我担心,另一方面还忍受着家庭周围人投来的异样目光。
我失去了一切,除了自由。
飘泊
为了谋生,我到了深圳这个当时中国最开放的经济特区,原来指望能找到一份新的工作重新开始平静的生活。但是事与愿违,我在深圳碰到的却是更多的复杂社会景象,当时深圳最火爆的生意有两个:一是房地产,二是炒股票。这两样我都是门外汉。这两样都需要初期有资金投入,加上投机取巧的本事 —— 恰巧这两样东西我都没有: 如果我有资金就不用去深圳淘金,如果我会投机钻营就不会混到辞职的地步了。
我曾经设想利用我的语言特长,试图在深圳找到一份工作,但是我遇到的老板或者业主有两大类,一是来自内地的投资者,再就是几个来自香港的商人,他们大都以贸易和制造业为主,除了做转手贸易外,需要的是来自四川和湖南等地廉价的罐装劳动力。在朋友的介绍下,我去过几个高档涉外星级宾馆应聘做管理人员,但是我觉得这些工作并不适合我做。最后我带着遗憾离开了深圳回到武汉家中。
在深圳期间,我并没有学习泛系,但是我看到了社会系统的复杂和不规则,我看到了在不公平的社会系统下的弱势群体的遭遇,我看到了知识在势利的商人眼里毫不值钱的窘迫和尴尬。
1992 年时,原来的苏联已经不复存在。在苏联解体之前,中苏关系就已经开始解冻,俄罗斯独立之后,由于原苏联地区日用百货奇缺,俄罗斯开始市场化改革,中俄贸易开始急剧升温,我到过北京,北京街上成群结队的倒爷告诉我俄罗斯那里有巨大的市场需求,我决定到莫斯科去碰碰运气。经过几番周折,使出了浑身解数,动用了所有可以利用的社会关系,我终于搞到了出国护照,怀着对未来美好的憧憬踏上了异国之旅。
触“网”
路上经过的千辛万苦,我终于到了莫斯科。这不是我第一次来莫斯科,早在 1989 年苏联解体之前我就来过。我原来计划先找到几个认识的俄罗斯商人,进行合作,但是后来的事情发展表明,这是一个错误的计划,这些俄罗斯商人与我在深圳见到的商人没有任何两样,他们贪婪、奸诈,甚至有过之而无不及,而且他们天性多疑,大国沙文主义思想严重,在他们的眼中,中国人是与吉卜塞人一样的劣等民族,邋遢、没有文化修养,没有信用。再加上俄罗斯的新闻媒体的过分渲染和误导,在普通的俄罗斯老百姓眼里,中国的经济改革很成功,所有来俄罗斯的中国人都是暴发户,有些俄罗斯人开始针对在俄罗斯的中国人进行等刑事犯罪活动。 在高峰时期,仅在莫斯科的中国人就达到八万人之多。经常听说有中国人在莫斯科被谋财害命。我也有过被轻微的经历,凭我一个人单枪匹马,想闯出一条生路来,无疑是梦想。
不过,我的异国生涯也不光是只有梦魇,我也有极幸运的地方。我的房东是无线电物理研究所的高级专家,他家中的藏书丰富,正是在他家中,我第一次看到了《苏联数学百科全书》。通过这套砖头式的大部头著作,我看到了数学理论的高楼大厦群落是何等的雄伟壮观,他教了我不少数学知识。 通过他,我还接触了不少俄罗斯的学者,他们都是学术功底扎实的人,其中有过叫伊万诺夫的先生,是我房东的同事,在卫星通信领域是行家里手,我与他曾经工作过一段时间处理航天体轨道误差计算的问题。有一天,他告诉我,莫斯科将在国际展览中心举办一次规模空前的通信与网络技术展览,他们的研究所也会参加,并邀请我也去看看。
这是我第一次参加通信技术方面的展览会,时间应该是在 1994 年 4 月左右。俄罗斯人对通信技术的研究是非常深入而卓越的,此前无线电物理研究所里面就有大量的技术专家被欧洲宇航局高薪买走了,这从一个方面说明他们的技术水平是非常尖端的。我参观了他们展出的设备,给我印象非常深刻。
展览会上还来了大量的外国通信公司和计算机公司展出各种新技术、新设备。由于我学习过德语,因此我与一家德国公司的工作人员谈上了,他向我介绍了他们推出的计算机网络产品和天线系统,告诉我究竟什么是 Email。这是我第二次听说什么叫电子邮件和计算机网络。(第一次是从美国的未来学家奈斯比特在《大趋势》中介绍的内容得知的,但是,我被这本书误导了,因为作者说过,电子邮件只是高科技,不具有传真的高情感,所以他说电子邮件不会真正流行起来 —— 我听说他后来还写过几本未来学的书,但我再也没有读过,也不知他后来是怎样自圆其说的。)
德国人告诉我,现在他可以分文不取将我的信件发往世界各地,我觉得他像是生活在另一个世界里的人,因为他所说的听起来都像是神话 —— 当时我所知道的主要通信手段除了电话,就是传真(Fax)和电传(Telex)。两者的费用都是非常高昂的,电传的技术基于每秒五十波特率的电传打字机技术,只能传输纯英文字符,按照数据的传输时间计费,与今天的高速激光打印机相比, 电传机的打印速度真是慢得像蜗牛爬行一样,因为打印是靠机械装置完成的。传真则可以传输黑白图文,费用与电话一样,从中国打电话到莫斯科一分钟当时是人民币二十多块钱。 每次打电话至少需要讲上十分钟,一次通话下来怎么说也要花掉两三百元钱,而可怜的父母亲一个月的收入加起来才不到几百块钱。因此我与父母的联系主要是通过普通的航空邮件进行,只有在重大的节假日才使用电话。
航空信件最快也要花 15 到 20 天的时间才能到达。 莫斯科的邮政系统运转效率非常低下,航空信件花一个月的时间才收到也是常见的事情。尽管中俄已经是友好邻邦,当然没有烽火连三月的局面,但是家书的确是值万金的。小时候我就能背诵古诗“慈母手中线,游子身上衣”的诗句,但是我却是在异国他乡才得到对这句诗的最深刻的体会和最准确的理解 —— 有时候,我一看到身上穿着母亲编织的毛衣,思家之情油然而生,我多么想时时通通电话,问侯一下他们啊。通信是人与人之间沟通思想必不可少的技术,但是昂贵的电话却根本满足不了人们的需要。(后来电信部门纷纷大幅度减低国际电话费率,可以想象他们当初的垄断利润是多么高。)
当时这家公司的电子邮件是通过专门租用的卫星线路从莫斯科投递到德国的,再从德国的计算机主机上进入 Internet 进行投递。我好奇地问他,中国有没有这样的计算机网络,因为我在国内时从来没有听说过有这样的服务。 他告诉我,他的公司与中国之间直接的卫星网络连接没有,但是中国科学院有计算机节点连接在 Internet 上,因为他曾经听说有人在德国收到过来自中国的电子邮件,所以他可以肯定中国应该有这样的网络。
突然间,我觉得世界全变了样,我有一种感觉,似乎我得到了一切,并不仅仅是因为 Email 是免费的,而是我找到了我生命中最宝贵的东西 —— 与他人的交往时不受任何约束的一种真正的平等。而在此之前的我是一无所有的,我生活在一个缺乏信息资源、几乎与外界隔离的黑洞中,我渴望拥有这份平等。我应该回国去建设这样的计算机网络,让网络为人人服务,让人人都拥有这份平等。
走出混沌
1995 年我离开俄罗斯回到了武汉,开始实施我的网络建设计划。我高兴,我曾经到过俄罗斯,那里我遇到了世界一流的科学家和工程师,我从他们那儿学到了一些东西;我高兴,我离开了那里,俄罗斯社会充满了欺诈、歧视和混乱,我因此失掉了一些宝贵的青春时光。
由于我以前提出过各种各样的计划,不是行不通,就是无疾而终,因此这一次父母亲开始时都坚决反对我组建公司搞什么数据通信的业务。他们担心我再次遭到人生道路上的失败,他们希望我回到普通打工者的轨道上去。
但是,我不甘心就这么放弃我的计划,我苦口婆心地说服了父母亲支持我建立一个公司,最终他们还是心软了下来,被我说服了,但是他们始终以一种将信将疑的心态看着我,他们不相信我的公司能够在市场上成功。这也难怪,在 1995 年前,国内主流新闻媒体上从来没有出现过什么关于 Internet 的报道,你又如何让他们一下子相信我能去运作一个他们从来没有看到过的东西去获得成功呢?
1995 年时,国内的市场环境开始有所好转,注册公司不像以前那么困难了,而且当时《公司法》之类的法律也出现了,尽管注册公司还受很多约束,但是,毕竟它是一件平民百姓们也可以操作的事情了。注册公司需要有“三师”的资历,也就是高级工程师、经济师和会计师。经济师和会计师我很快就物色到了,工程师需要找好几个,我给吴教授打了电话,希望他能支持。吴教授很爽快地答应了,并提供了有关证件。
经过一番艰难的准备,公司终于在 1995 年 5 月 12 日成立了,说实话,除了缺乏资金外,这个公司是“三无”企业:既无自己的场地,又无产品,也没有任何技术储备。老板和员工总共加起来只有一个,那就是我自己。但是这个公司有一样东西属于另类,那就是对构建未来理想信息社会的坚定信念。正是这种坚定的信念,使我克服了前进道路上数不清的困难,将公司一直经营到今天。
公司开张后,我开始构思应该怎样开展业务。我想第一步要做的就是自己应该上网,自己先成为网络用户,不然你如何向其他人展示网络的作用和力量呢? 正是基于这样的考虑,我与中国科学院网络中心进行联系,成为他们的用户。当时他们主要向北京的单位提供网络接入服务,在北京的用户可以拨打他们提供的电话号码,以终端用户的方式进入网络,我主要的时间在武汉,因此如果以长途电话入网,一个月下来电话费用将非常高,我开始琢磨是否有其他办法来解决这个问题。
答案是有的,就是通过 X.25 分组交换网络。中国科学院网络中心已经租用了电信部门 CHINAPAC 的两条 X.25 专线,速度为 9.6Kbps, 因此如果我能够在武汉能够找到电信部门的 X.25 的接入点,就可以不用拨打长途电话号码从武汉连接到中国科学院网络中心的互联网主机上。
当然,我当时得到的这些结论都是从书本上得到的,实际结果如何,我是无从得知的。 无论如何,我得有一台计算机,没有计算机,什么都无从谈起。我妹妹借给了我一万五千元买了第一台真正属于我自己的电脑。永远应该谢谢我妹妹,因为她的工资也很微薄,这笔钱她积攒了多年,是准备用于出嫁的钱。我答应一定将公司的第一笔收入用来归还她。
我在研究这些遇到的问题时,接触到了拓扑学,这门数学学科是专门从连通性的角度研究广义距离的理论。不理解拓扑学,就很难深入理解计算机网络的工作原理,就很难理解为什么只需拨打一个市内电话,就可以让电脑把一个文件传递到国外去,因此在 1995 年夏天我整天阅读拓扑学,也正是在那段时间,我又重新拾起久违的数学书籍,开始钻研起来。我记得每天都呆在家里的阳台上,一边晒太阳,一边读数学书,累了就弹弹吉他,吹吹口琴,有一段时间我总是吹奏俄罗斯名曲《三套车》以释放和缓解心中的压力,因为歌中唱道:“小伙子,你为什么忧愁,总是低着你的头 ……” 诗言志,歌永言。沉重压抑的旋律正是我那时候心境的写照。故以后只要我吹这只曲子,我父母亲就知道我遇到了不愉快的事情,他们也就让我一人独处,不来打扰我。
正是有了这段时间的寂寞和孤独,使我真正能够沉下心来学习数学。我在这段时间里除了复习集合论方面的知识之外,还非常仔细地阅读了长达两千多页的《世界数学家思想方法》3 ,这本书收录了古今中外的一百位具有伟大原创性的大数学家和数学大师,分别介绍了他们的生平事迹、数学上的辉煌成就,以及他们取得的数学成就背后使用到的思想方法论。尽管这本书还存在一些不足,但是总体上说是一部极优秀著作,不亚于著名的数学史学家莫里斯·克莱因(Morris Kline) 所著《古今数学思想》(Mathematical Thought From Ancient To Modern Times)。因为它通俗易懂,将数学家的思想方法论介绍得比较全面、比较清楚,所以它实际上帮助我建立了关于数学这门科学的框架和背景,一切开始逐渐地变得清晰起来。
漫漫求索路
电话里的泛系课堂
我从来没有坐在大学的数学系里接受过一天的正规训练(尽管我曾经渴望过有这样的机会),吴教授当然明白我是没有数学家们所应有的基本功的。因此我们的数学课的形式采用了一种非常奇特的方式来进行。 我的家位于武汉西郊的东西湖区吴家山,离吴教授居住的武昌东边的鲁巷乘公共汽车约有四个小时的路程。每一次我遇到了疑难问题,我就通过打电话请教吴教授,因为他是唯一能帮助我的老师。
我猜想传统的大学数学课堂里无疑是满黑板的数学符号和公式,从概念定义,定理的提出和证明,到结论与应用等。但是我们基本上没有这样做,虽然吴教授本人是研究数学出身的,数学是泛系理论的一个重要来源,但是他后面的泛系研究工作内容远远地超出了传统数学的范围,所以泛系理论不等于就是数学理论,泛系理论通过创建泛系数学给未来的数学发展提出了一条方向,尽管这一方向现在还不被一些传统的数学工作者看好或者接受。
我们的数学课一般是在电话里进行的,我可以在任何时间打电话给吴教授请教问题,先打他办公室的电话,如果不在,就打到他家里。我已经记不清这样的电话交谈在那段时间进行了多少次,总之,我缴纳的电话费用是非常高的。回想起来,每一次交谈的时间至少有半个小时,短的时候也有一刻钟,有时长达几个小时。
要想在这么一篇不长的文章中说明什么泛系理论是很困难的,因为有大量的背景材料需要事先介绍,而且这些背景材料就是吴学谋教授作为科学家的修养、或者一位伟大思想家的丰富内心世界的一个极为重要的组成部分。 历史上有很多伟大的科学家, 例如数学家维纳, 曾经感叹写清这些背景是何等地困难,维纳本人就花了整整一本书的篇幅,才基本讲清楚《控制论》的主要原理,而且如果事先不认真阅读他的自传的话,恐怕没有几个人能够真正理解控制论的深邃思想。我想准确地介绍泛系理论时也不会例外。
例如,泛系理论中的泛系数学是建立在现代数学基础上的,而对现代数学作全面介绍读物本来就不多,屈指可数的是在半个世纪前,由苏联的老一辈数学家完成的精采尝试:他们组织了现代数学各个分支的学术带头人撰写出了经典著作《数学:它的内容、方法和意义》,中文版的篇幅就长达一千多页,但是读者要真正理解这本伟大的著作,还是需要花费巨多的时间独立思考。一个人如果没有独立思考的精神,要准确理解泛系理论,乃至其他任何一门科学理论,那都是不可能的。
我学习泛系数学的心得体会
我们涉及的内容很广泛,以哲学和数学问题为主,其他的主题也有过深入的讨论。我觉得他是一个现代的亚里斯多德百科全书式的学者。因为无论我提出什么样的问题,他总是能够立即提供非常深入浅出的回答,当时我并没有做笔记(当时我觉得那样就反而束缚了我的谈话思路),但是吴教授有随时随地写笔记的习惯,俗话说得好:“好记性不如烂笔头”。 真可惜当时没有作笔记,也因为条件所限,没有电话录音,现在让我回忆每一次谈了什么细节已经不可能了。归纳起来, 我们曾深入讨论过以下主题:
(一) 离散数学。
按照一般正规数学教科书的划分,离散数学包含集合论、数理逻辑、代数结构、组合数学、图论等几个分支学科。这几门学科是吴教授对我重点指导过的学科,对我后来从事计算机软件开发工作帮助极大,因为离散数学是计算科学的基础。
集合论是我最先开始学习的部分,也是延续时间最长的一个学科。刚开始时我们只涉及到朴素集合论,但是后来转入到公理集合论,这一转向迫使我静下心来研究数理逻辑,因为公理集合论大量使用了逻辑学提供的工具和方法。集合论涉及到了对无穷的看法,实无穷与潜无穷之间的关系,连续统问题是著名的希尔伯特 23 个数学问题中的第一问题。要理解这一问题又迫使我去研究哲学上的问题,研究历史上的大哲学家们、大数学家们对无穷的认识看法。
我记得苏联的生理学家巴甫洛夫说过,“学习应该循序渐进”,从我向吴教授学习数学的过程中,我再次体会到了这一句话的重要性。
一个根本的问题在于怎样看待选择公理。总体上看,吴教授对于实无穷与潜无穷作过深入思考,他同意希尔伯特的看法,即不能像直觉主义者那样放弃排中律对数学进行大砍大杀式的改造, 同时他提出了相对主义的观点来看待两者之间的关系,通俗地讲,他允许在一定的程度或者范围内存在两者之间的悖论,只要这个程度或者范围是我们可以观察和控制的。这一点与二十世纪初期形式主义者、逻辑主义者和直觉主义者三大流派之间非此即彼、水火不相容的立场是相距甚远的。从泛系的角度出发,这三种流派均可以转化为在不同泛系哲学空间中“基砖”来存在,可以使用它们去组建新的哲学网络、搭建新的哲学体系。
近年来,特别是二十世纪六十年代在美国数学家科恩(Paul Cohen)将力迫法引入集合论研究后,数学界出现了对非标准集合论研究的热潮,也就是在采用其他公理后再来考察集合论本身,一个已经讨论得比较多的话题是决定公理的使用。在采用决定公理后,系统又出现了主体和客体合一的有趣局面,而传统数学的哲学基础是要求主体和客体分离的。当然还有其他公理,例如马丁公理,因此如何在泛系的框架下,重新进行主体和客体的分离,哪怕是有条件的相对分离,都是具有重大理论价值的成果,它将引发其他领域里(例如量子物理)的一系列的强烈“地震”。 这方面的研究,只要泛系统队伍中有人肯下工夫深入去做,是大有希望做出成绩来的,甚至可以拿菲尔兹大奖。我已经感觉到,集合论的研究已经出现了类似当年非欧几何出现前期的局面,几何系统有三种,三种都是符合逻辑的。类似的,逻辑上独立的集合论系统除了 ZFC 或者 GB 之外,可能也有多种,它们都有各自适用的领域。
逻辑学方面,我们讨论较多的是罗素的观点。罗素曾经试图将数学还原成为逻辑,但是最终没有成功,而且也永远不可能成功。 他的工作表明数学和逻辑两门学科尽管相互密切联系,但是毕竟不能相互替代,数学不能还原为逻辑,逻辑也不能还原为数学。
布劳威尔的直觉主义观点重视构造,不能实际构造出来的东西在直觉主义者看来都是不可接受的。 这一流派的学者不承认实无穷, 只接受潜无穷。有趣的是, 计算机科学迄今的发展受到这一流派的影响最深。
希尔伯特在元数学、证明论、公理系统理论方面的成就卓著,特别是他关于公理系统应该满足完备性、相容性和独立性要求的观点给我影响很大。
吴教授曾经向我指出,公理的方法的应用是具有一定范围的,不能将公理方法到处套用。例如许多人文科学领域使用公理系统就可能根本行不通。这又引导我去阅读许多人文学者的著作,例如法国的卢梭关于平等和民主的理论,孟德斯鸠的法学理论,康德的权利科学理论,黑格尔的美学理论,等等。这些理论对我后来正确理解自由的概念和意义很有帮助。
我在长期的学习和交往中逐渐认识到,吴学谋教授是具有深刻哲学思想的数学家,他是泛系理论、电磁介质动力学等价论和逼近转化论等多种理论的创建人。他在长达半个多世纪不间断的学术研究中,创造了大量世界一流的原创性工作。在数学领域,他在函数论方面具有非凡而精湛的造诣,据我后来整理他的材料时的发现,仅他发表的数学定理多达 800 多个,前后超越了维纳、康托诺维奇等四十余位国际一流的数学家和学者的成就,而且其中的相当部分的成就是让人非常吃惊的,例如对泰勒级数理论(泰勒余项定理是数学分析的三大基本定理之一)的推广,对维纳和帕雷在调和级数与富里哀变换上的超越(复数域上的富里哀变换是控制论创始人维纳在数学上最杰出的工作,而维纳是国际公认的二十世纪一流的数学家),等等,都是具有深刻思想方法论意义的。他独自创立的“逼近转化论”是他后期创建“泛系理论”的起点。对于逼近的意义,伟大的英国哲学家和数学家罗素曾经提到过它的重要性: “所有精确的科学都受到逼近的思想所支配”。 所有关于非线性的科学研究无疑也受到了非线性逼近思想的渗透和影响,而系统,特别是复杂的系统,其表象往往是非线性的,因此逼近转化论研究中产生的思想、方法、模型工具在处理复杂系统时的巨大作用就可表现无遗了,这对于发展现代的高新技术的各个方面都会产生深远的影响,尽管国内数学界对它的重大意义还完全不了解。
最可贵的是,他不仅仅是一位传统意义上的数学家,因为他后来又跳出了传统的纯数学的框框和约束,创立了伟大的泛系理论。这样,在泛系理论的框架下,诞生了伟大的泛系数学。
我们知道,十七世纪是数学界的英雄世纪,原因在于古典的数学分析创立后,我们有了特定的工具来处理极限,处理微分和积分,从而得到大量的精确的结果来“显运转、度生克”。而泛系理论开启了新一轮英雄世纪的大幕,因为她在新的历史高度,特别是在二十世纪数学界的伟大成就的基础上,扬弃了西方哲学,再对源自中国古代哲学中的关于变化的思想提出了全新的、系统的理论框架和一批具体的数学理法。我完全可以预料,二十一世纪数学发展的最前沿的阵地将回到中国来。
从广义系统的观点出发,泛系数学中关于关系和联系的思想,发轫于逼近转化论中的广义转化的思想,以及源自数学中的广义对称的思想,在泛系理论中得到了有机的结合与高度统一。我们可以利用泛系理论的思想方法论“一以贯之”地处理数学中的百科千题。我把他开创的泛系数学称为是二十世纪继逻辑主义学派、形式主义学派、直觉主义学派和布尔巴基学派的结构主义学派之后的第五大数学流派。如果泛系数学今后在形式和研究结果再丰满一些,就可以让中国真正迈入数学强国之门,跻身于德国、法国、俄罗斯、英、美等世界数学大国之林。
(二) 数论。
我学习数论的动机很奇特。 我的一位朋友是研究数论的,有一次,他邀请我到他家去作客,为了能够与他能有更多的谈话内容,我需要对数论的轮廓做一个大致的了解。
数论被称为是数学王冠上的明珠,可见它在数学学科群落中的基础性地位。数论的研究对象为素数,也就是只能被自然数 1 和这个数自身能够整除的自然数。德国数学家克罗内克尔说过这样的话:“只有自然数是上帝创造的,其他的数都是人为的。” 这句话有一定的道理,它道出了自然数在整个数系中的基础地位。因为素数不能再分割成为其他自然数,而其他的自然数(数学术语称为“合数”)都可以由素数来构建,因此素数又被称为自然数的基砖。
数论是数学中最古老的学科之一,也是发展得非常成熟的一门学科,特别是在电子计算机出现后,由于计算工具的革命性进步,数论研究更是得到了飞速的发展,每年都有数不清的论文发表。同余的概念在数论研究中是最为基础性的概念,只要理解了同余的概念,就等于抓住了数论这头难以驯服的野牛的牛鼻子。
在吴教授给我讲授了数论的基础知识之后,我到了朋友家,在交谈之中,他们发现他们遇到了一个知音,尽管他们的研究课题已经非常艰深,例如对“黎曼-zeta”函数的研究新进展, 但是我问明白几个关键的内容之后,他们研究的脉络便一目了然了。我还对他们的研究提出了自己的一套看法,令他们眼界大开。朋友最后提出了一个令我难以回答的问题 —— “您学了几年的数论?” 要知道,前后我学习数论的时间没有超过两天,包括吴教授对我指点的那一刻钟。
这次的数论学习历程并没有就此停止,因为后来我发现计算科学中的很多“加密—解密”算法就与数论密切相关。这些算法具体内容不尽相同,但是有一个共性,就是利用了一个简单的原理,将几个素数拼装成为一个新的数非常容易,但反过来将一个数分解成为素数的组合,而组合中的素数排列恰好就是几个原来的素数排列却不容易,特别是当待分解的数的位数非常高的时候,计算便出现组合爆炸,计算量非常庞大, 于是出现了所谓 “单向街道”的说法。 只要在计算的可行性、计算时间和计算成本等几个方面或者非常难、或者非常长、或者非常高,那么,这种加密和解密的原理就有可能发展成为实用的 “加密—解密”算法,可以在计算机系统的安全性方面派上大的用场。至今我还保留着对数论的兴趣。
(三) 泛积原理。
泛积是泛系数学中的一个重要的概念,因为它是如此有趣,所以我花了大量的时间来揣摩它的来龙去脉。要理解泛积的概念,首先可以设想聚类。所谓聚类,可以简单地设想为分类,分类是人人皆熟悉的概念,幼儿园的小朋友都知道怎样将四个苹果分成两组,每组两个。所以分类也可以视为是在对集合做“除法”。
除法是乘法的一种逆运算,在各种不同类型的数系中,不是所有的数都能自由做除法的(即使在像实数系这样的数系里,数也不能被零来除),不是所有的数系下的运算都同时满足结合律、交换律和分配律的,有些数系上做传统意义上的除法运算就不可能,原因在于传统的除法定义太严格。
泛系理论提出“形影局整两根本,生成系统泛对称”,生动地点明了形影关系和局整关系是两大最基本的关系,如果能够运用它们对除法的定义本身进行调整,在一定范围内解除一些约束(通过应用扩形和/或缩影、广扩形和/或精缩影等),那么,除法就可以进行了。 如果除法可以进行,那么它的逆运算,也就是乘法的结果称为泛积。
泛系研究表明:可以利用泛积的原理人造出形形色色的数系来。这一方面我曾经接触过熊锡金教授创造的超复数系统,在这个数系中,两个超复数在一定的条件下就可以进行除法运算。 尽管这一人造的数系目前还没有发现任何实际的用途,但是数学家不必等待物理学家。这一充满美感的数学理论的价值可以从数学理论体系本身来评价,就像复数本身刚出现时,谁也搞不清楚它的用途,但是谁又可以否认复数今天的如此广泛的用途和价值呢?
对除法调整的方法,或者说规则系统,是泛积原理应该研究的重点,泛系理论已经提供了丰富的理法。这一来源于传统拓扑学的商空间与积空间的思想,经过升华扬弃后,统一了人对数系的认识,有了泛积原理之后,人对数系规律的看法从必然王国跃进了自由王国。
泛系数学对于局整关系和形影关系的理解非常妙,它把局整关系视为是对集合的加法和减法,把形影关系视为是对集合的乘法和除法,局整关系和形影关系就是“基本粒子”,这一见解直接超越了罗素的工作,因为罗素毕生工作中最主要的部分就是试图以逻辑统一数学,即以原子性的逻辑命题来尝试,但是他失败了。而吴学谋教授的局整关系和形影关系作为基本粒子,构造出对集合的加、减、乘、除,加上泛导和泛极,共六则运算,可以成功地统一现代数学的分析、 几何(包括拓扑)、 代数、概率等各个大分支。
泛系数学把对关系运算规则本身的运算统一在泛导的概念之下,从而在历史的新高度下统一了自牛顿和莱布尼茨提出微积分以来,经过欧拉和拉格朗日系统整理和推广的古典变分原理,使古典变分原理演变成为了成熟的泛系变分原理,从而以系统而普适的、数学形式确切的、可以形式化操作的三兼顾的方式升华了传统辨证法中的对立统一律、度是质与量的统一律、否定之否定律。现代数学的各个主要流派的工作的实质和成就在泛系数学的框架下都是非常清晰的。
(四) 泛系算子。
上面提到的对加、减、乘、除法规则的调整,以及所涉及到的关系的运算规则,泛导,是我后来提出武汉纲领、创建泛系尺度论和泛系维数论的前提,泛系研究在这一方面的研究成果颇丰,泛系算子是其中比较突出的一个。
纵观数学的发展史,数学经历了从常量到变量、从变量到关系、又从关系到关系的系统几个层次的发展。 从关系的角度看待数学对象是现代数学的显著特征,泛系数学则另辟奚径,着力于建立关系系统的框架,并力求在这一框架下可以做到对数学对象的相互转化。
泛系理论对关系系统的构建在方法论方面是有鲜明特色的。形形色色的关系的划分起来只有两大类,即等价关系与相容关系,就像世界上的形形色色的人只有男人和女人一样。但是理解这些简单的概念,我却费了很多周折,除了花大量时间研究集合论方面的内容外,最终我是在吴教授的办公室里得到他的指点之后才理解清楚的。一个系统中的关系,无论多么复杂,都可以利用关系的系统来描述,至于采用什么形式来描述,则可以具体情况具体分析,可以文字枚举,可以利用矩阵来穷尽,还可以利用图论中的图来演示,这些只是关系系统的不同表达方式而已。
泛系算子共两大类,一类是将一个普通的关系转化为相容关系,即相容算子,人类可以辨异同,靠的就是对相容关系的运筹;另一类是将一个普通的关系转化为等价关系,即等价算子。一个关系系统经过泛系算子的操作之后,便显示出新的集散性质,可以得到新的泛系聚类。吴教授曾经亲自动手给我进行过演示,直观的图形立即让我明白了什么是“物以类聚、人以群分”的道理。 对关系进行各种相容化或者等价化的运算,可以刻画出不同尺度下的边界,从而是模与拟的关系,现象与存在关系,内在与表象的关系,等等,全部都可以用一个统一的方式,在一个相当可靠的基础上,通过泛系网络来运筹。
经过多年的思考,我终于开始意识到吴教授工作的重大意义了 —— 他实际上创建了一套动态的观察和控制的窗口系统,依靠这套窗口系统,你可以随意地对你的观察对象从各个不同的方向进行观察。打个比方,就像让你坐在中央电视台发射塔顶上的旋转餐厅里从不同的角度去观察城市的全貌一样。
当然这只是一种简单的理解,实际上的意义还远不止如此,通过对系统的关系运算,在集合的集散之间,可以对系统进行非常复杂的分析,这样一来,就可以得到各种不同类型的分析结果,如果再次对分析结果结合其他条件进行综合,那么就完全有可能得到不同条件下,对系统进行各种操作所需要的“成本”,正是在这里,价值观进入了系统理论,有了这样的操作,在行动之前先作泛系运筹,避免做不利的行动,而去争取得到好的结果,而这不正是对人的“趋利避害”本能的提升吗?! 如果真的能做到这一点,那么至少从某种程度上可以保证,人的智能就可以被“放大”。我终于在认识吴教授近六年之后得到了我原来问题的答案的一些轮廓了。
各种不同类型的专家系统实际上都可以视为在不同的泛系框架下进行这样或者那样的泛系量化和泛系聚类操作。
经济学家已经提出的各种经济理论现在完全可以在这一框架下重新认识。特别地,我对科斯的交易成本理论与吴教授进行过较长时间的讨论。在泛系的框架下看,科斯的交易成本的提出充其量还只能算万里长征的第一步,我们无意去贬低科斯的经济学理论的重大价值,他的发现的重要价值已经自有公论, 但是就理论的完备性而言,科斯定理离建立系统的经济学理论体系还相距甚远。科斯的交易成本使我们拥有了建房的基砖,但是真正的经济学大厦还没有搭建起来。我在“论尺度(泛系尺度论)”的写作中,对泛系经济学这方面的研究开了一个头,这方面如果有泛系学友深入去做,其价值将完全是可以与得诺贝尔大奖的研究相提并论的。
(五) 重新认识分析数学的价值。
在泛系的框架下,传统数学分析理论的价值得到了质的提升。数学分析经过三百多年的发展,已经取得了辉煌的成就,特别是在工程技术领域,成就更加突出。但是,我们也该清醒地看到,数学分析在社会科学领域的成功还非常有限。除了建立数学模型遇到的困难之外,还有一个问题就是数学分析若不加改造而作为一个工具本身是否适合在这些模型下的研究的问题。
将传统的数学分析与其他数学学科的杂交形成的新学科早就已经有很多成功先例,例如鲁宾逊(A. Robinson)将模型论引入数学分析,让莱布尼兹的单子的概念又堂而皇之地重返数学分析,创建了非标准分析理论就是一例。鲁宾逊的非标准分析从某种意义上推翻了罗素对莱布尼兹单子论哲学的非难,得到了包括哥德尔(K. Gödel)在内的数学大师的认可。
泛系理论的对传统分析数学的工作可以说是独树一帜的。改造的重点在于来自于引入了泛导的概念。所谓泛导,就是广义的导数,而导数是数学分析中最基本的概念之一,它建立在数系、连续、极限等概念的基础上。从根本上讲,导数是在数学变量的相互运动中来刻画关系的。正如一些哲学家所说的,它将辩证法引入了数学。
泛系对导数的理解大大地突破了这一认识水平,除了照顾和保留传统数学分析对导数的观念之外,它将广义除法的概念和泛积原理与导数结合了起来,从而将对导数的认识提到了一个崭新的高度。根据上面讲过的广义除法的原理,既然导数可以被视为是进行除法运算,因此泛导的运算就不一定非要限定在同一数系中进行。当然这里不便展开说明,我只想强调的是,经过泛系的改造,特别是泛导的引入,数学分析的应用面被大大地拓宽了。它的成功引入,使得我们对于复杂系统进行数学分析成为可能。例如,从泛导的概念出发,分析数学和组合数学可以完美地统一起来,正是在这里,数学内部的两大群落,以及其他分支完成了历史上在新的高度上的大统一。 正是因为有了这种新的统一,源自传统的数学分析的方法论的应用价值被大大地提升了,像分形与分维等这样一些使传统数学很棘手的问题现在也有可能利用数学分析工具来处理。
关于哲学的思考
泛系可以视为是一种元哲学。它的突出特点表现在建立哲学流派的框架上。在泛系哲学空间的框架下,什么唯物与唯心的对立不再是研究和争论的重点,取而代之的是,各个哲学流派之间的相互关系是什么。泛系,就像在泛系数学中一样,再次扮演了观控窗口系统的角色。它使得我们认识世界的出发点和窗口不只一个,而且利用泛系哲学框架,不同的窗口之间的转化关系还可以清晰地表示出来。辩证唯物主义中的物质运动的联系观在泛系哲学里可以活生生地体现出来。
泛系理论框架还可以进行递归,生成所谓框架的框架的系统,也就是关于元哲学的哲学,等等。 带着这样的观点,我在吴教授的指导下,重新研究了中国古代哲学家、古代希腊哲学流派、笛卡尔、莱布尼兹、庞加莱、希尔伯特、哥德尔、怀特海、罗素、维纳、冯·诺伊曼等人的哲学思想,大大地超出了思辩性思维所能达到的水平,并且反过来提高了思辩能力,其中的一些思考结果收录进入了本书内篇的“论尺度(泛系尺度论)”一章中。
泛系与人体科学
我曾经梦想当上一名中医大夫,继承祖传家业。因此我研读过《内经》。而祖国的医学理论体系刚好是泛系理论的来源之一,据吴教授自己说,他曾从《内经》里面得到过很多灵感和启发。
《内经》中的医学理论是极具中国特色的,从理论的系统性的角度讲,它至今仍然遥遥领先于发源于西方以解剖为方法论基础的医学体系。正因为如此,我与吴教授之间有大量的共同语言,也使我在学习泛系理论时有了似曾相识的感觉。泛系研究队伍里有同志发表过一些人体科学的文章,这里就不一一列举了。
小波分析是现代应用数学中迅速发展起来的一个分支,长期以来,中医的观控和诊断手段难以从现代科学的角度解释,但是我认为小波分析和小波变换理论的成熟,则可望使这一局面改观了。参见本书杂篇中“脉象新解”一章的内容。
泛系与孙子兵法
兵者,诡道也。由于我们生活在一个以利益交换为基础的社会里,利益的冲突往往导致战争的出现,而围绕战争的兵法理论以及各种各样的谋略学层出不穷。泛系对兵法做过深入研究,特别是对于孙子兵法中的数与术的关系的研究最为精彩。泛系将各种相对不变的因素划归到“数”里面,相当与我们平常所说的硬件系统,而将谋略,战略等因素划归到“术”中,相当于我们平常所说的软件系统。
由于商场如战场,因此兵法中的许多谋略可以应用到商场上,创造出巨大的商业价值来。
探索计算科学与泛系的关系
由于我的公司经营数据通信业务,很多专业知识与计算机和计算机网络密切相关,因此我从 1995 年年底开始认真学习编写程序,成了一名程序员。我本人在大学里没有学习过计算科学课程,因此基本上可以说是零起点,或者讲是半路出家。因工作所迫,我必须成为这方面的专家,为了这个目的,我付出了惊人的代价。
我首先试图学习 C 语言,因为 C 是开发系统程序常用的编程语言。C 语言本身很小,规则不算太复杂,但是 C 语言有一个特别让初学者感到困难的地方,那就是指针的广泛运用,对于没有硬件经验的人来说,学习 C 语言的指针就如同梦魇一般。
虽然我从 1995 年就开始学习 C 语言,但是真正能够熟练地使用它,却是在 1998 年以后的事情了。应该说 C 是功能强大的语言,而指针是它能量的源泉。我费了很大的工夫才意识到 C 指针的本质可以通过泛积原理,配合局整关系和形影关系来认识,C 指针变量是储存变量地址的变量,由于本质上编程中的一切东西都可以放到计算机内存中,因此指针实际上可以指向一切东西。一旦理解了指针的本质,那么 C 就是一门可爱的语言了,因为你可以直接去操作一些硬件。为了详细解释这一原理,我创作了《C 指针编程的艺术》一书。4
1996 年时,我还学习了汇编语言, 通过对汇编语言的学习,我真正了解到了计算机内部的工作原理。有了 C 语言的汇编语言的基础后,我开始学习计算机操作系统。由于 MS-Windows 之类的操作系统不提供程序的源代码,因此后来我选择了 GNU/Linux 系统作为学习的工具。在学习操作系统的过程中,我发现泛系的概念可以到处应用,操作系统本身就是一套完整的竞分规范,即对操作系统上的软件和硬件资源进行分配,竞分者就是各个进程。整个关于操作系统的课程可以视为学习泛系理论的一个极好实例。
我还掌握了 Lisp 语言(包括 Common Lisp 和 Scheme 两者,以及 GNU Emacs 内嵌的 Emacs Lisp),但是这却是后来的事情了。
我自学生时代开始有写日记的习惯,在这一探索过程中,我详细地记录了自己经历的学习路径和遇到的挫折,以及克服困难的办法,这些关于自己进步的原始素材为自己后来的“黑客道”教学打下了坚实的基础。
初试网络的威力
助人进入天堂岛
1996 年的一天,我去吴教授家里拜访他。谈话间,他提起了美国的林益教授邀请他参加在巴哈马举办的生命系统科学大会。他正在犹豫是否参加,我鼓动他去,因为机会难得,最终他同意赴会。
由于当时电信部门的 ChinaNet 还没有建立起来,因此,我与美国的联系的 Email 都是通过中国科学院网络中心的机器完成的,也就是我在武汉拨通 X.25 的接入点,(数据通信术语称为 PAD),然后在 X.25 网络里面二次呼叫中国科学院网络中心的互联网( Internet )主机,登录成功后成为终端用户,然后在使用 Kermit 协议将邮件从北京的主机上的邮箱下载到我武汉家中的计算机中。虽然这一过程今天看起来很麻烦,但是当年对我却是唯一经济上可以忍受的与国外通信的方法。
经过好几轮 Email 的来来往往,吴教授赴巴哈马开会的事情基本上明确了,美国方面也将全部文件发给了吴教授,吴教授在得到这些文件之后便开始办理漫长的申请手续。
办理出国手续的过程中,吴教授遇到了很多麻烦和阻力。其中一个是临近开会的日子,北京的领导部门说他的邀请函有问题,无法批复,要求外方提供更加详细的函件云云,这无疑给吴教授是当头一棒。时间已经非常紧迫了,哪里还有时间这么反复折腾呢?
无奈和绝望中的吴教授打电话给我,说明了情况,因为我以前也办理过出国手续,知道其中的鬼名堂,所以我在这方面的心理要比可怜的吴教授结实的多,我一边劝他先不要着急,一方面立即帮助他通过Internet与美国的会议组织者联系,希望他们能够立即发来新的邀请函件。碰巧的是,这一天我刚安装好传真机,将传真机接到了电话线上,我也想试一试传真机的效果。
晚上十点半钟左右,电话铃声响了起来,我连忙从床上跳起来,将传真机切换到接收状态,一会儿的工夫,将近三页文件哗哗地打印出来了,其中就有吴教授急切盼望的那份重写的邀请函。我连忙给吴教授打电话,告诉了他传真件到了。
这是一份具有特别重要的意义的传真件,说它重要,并不仅仅是因为它第二天帮助吴教授顺利地办妥了出国手续,而是邀请函里面对吴教授评价的措辞颇耐人寻味,函件中说,他们邀请吴教授去参加会议,是因为他们知道他在数学和系统科学方面的深厚造诣而闻名于世。他们知道美国权威的《数学评论》专业杂志上就发表过吴教授的论文。我当时想,一个国内不被学术界认可的学者在国际上却有那么大的影响,难道说我们的学术界对学术研究活动的评级和评价体系就没有出现了偏差吗?为什么一个普通学者出国开一次国际学术会议竟然是这么困难呢?
吴教授还有一个大问题,他出国的经费不足,因此,他希望我能够帮助他解决。可是当时的我实在是囊中羞涩、爱莫能助,只能如实告诉他我没有钱借给他,但是我给他指出了一条办法,就是出找他所里的领导,请求帮助。吴教授是个学者,极要面子的,从来没有给他所里的领导添过麻烦,但是事到如今,也只有这样一线生机了。
后来,所领导考虑吴教授这么一位元老人物,自所里成立以来,怎么说即使没有功劳也是有苦劳的,因此破例给他借了钱,让他上了路。
最后一件事就是飞机票,中国没有直飞巴哈马的航班,只能在美国中转前往,中国民航只能飞到美国西部的旧金山或者洛衫矶,或者飞到东部的纽约,无法到美国南部的迈阿密,因此最好是乘美国联航的飞机。于是我在北京又帮吴教授找到了美国联航的售票处,落实了航班和航程,由于他这次的会议地点离机场距离还相当远,因此必须在他到达后让会议的组委会派人去接他,所以我特别地抄下了美联航售票员提供的电传确认表,并将该航程表在北京利用 Email 通知了会议组织者,告诉他们务必去接他。
由于中国当时与巴哈马没有正式外交关系,所以当时我不清楚他能否入境巴哈马。但是为了不再让这个可怜的老人再在路上胡思乱想,我也就没有说什么了。后来一切正常,我收到了他从巴哈马天堂岛发来的电子邮件。
他回国后,我极力主张他将这次去巴哈马的全过程写下来,因为这次是一次极为难得的经历。在我的怂恿下,他后来真的写出了他的这段难忘的经历,而且还将这篇文章收录进了他的《万悖痴梦》一书中,成为了该书最为精彩耐读的章节之一。
自由软件
那段时间,因为有了互联网这个工具,我开始经常上网去寻找信息资源,以让我的公司有稳定的业务开展。当时的互联网的网络规模还不大,但是可以使用的资源却实在不少。一天,我留意到有个人在发行一个新的操作系统,他声称是不向用户收任何许可证费用的,而且提供操作系统的全部源代码。这个系统就是 Slackware Linux,后来我才知道准确的名称应该叫 Slackware GNU/Linux,因为它是 GNU 系统的一个发行版本。
全部系统需要三十张 1.44MB 的软盘,我于是开始下载它。这一过程花了三天三夜才完成。因为我的调制解调器(是电信局卖给我的,不买它,他们就不让你入网)只有 2.4kbps。X.25 网络的速度本来就慢(因为要对每一个分组数据包作纠错检查,有错误的分组包要重发),而且当时武汉市的市话网络还没有完全数字化,网络通话质量时好时坏,下载时如果时间太长,连接就断了,又得从头来,非常麻烦。
最后我终于得到了 Slackware 中的全部软件包,但是没有用户手册,只有区区几个简单的、但却无比折腾人的自述文件,这个系统实际上根本无法立即投入使用,于是我开始自己琢磨到底应该怎样才能安装上这套系统。这一黑暗中的摸索过程花费了整整三个月才完成。不用说我当时在安装成功的那一刻是多么地高兴了!
发行 SuSE
Slackware 安装困难,自己使用倒无所谓,但是用这样的系统去搞发行是不行的,因为我无法想象其他人也会有我这样的耐心去学习它。我开始在网上寻找有无更好的发行版本,将安装、配置之类的问题解决好。
后来答案找到了: 德国的 SuSE 公司发行的版本解决了这个问题,他们的方法很独特,就是另外设计了一个控制整个系统软件资源的工具,称为“YaST”(Yet another Setup Tool),用户可以通过它解决安装和配置上的问题。
我觉得这个发行版本是一个较好的版本,但是系统足有三张 CD-ROM,因此依靠我的低速网络连接去下载太昂贵了,而且即使下载了也还要去压制 CD-ROM,制作 CD-ROM 需要先制做母盘,价格也不菲,少量的销售肯定是要赔本的,不如进口 CD-ROM 直接卖好了。 于是我通过网络与 SuSE 公司联系, 告诉他们我有兴趣发行它。 SuSE 公司当时就已经开始进行海外发行业务,这个公司的总部在德国,中国用户却需要同他们的美国分部联系。好在几经周折,最后还是与 SuSE 确定了发行合同。5
在签定了合同之后,根据合同,我应该购买一批软件试销。我又遇到了一连串的麻烦事,首先因为汇往美国的金额为三千美元,超过了两千美元就算大额汇款,中国银行的工作人员让我出示公司是否具有进出口的许可证,我在外贸公司工作过,没有想到过了这么些年了,外汇管制依然这么严格,因此没有办法,我不以公司的名义汇款,改成以个人的名义汇,但是必须分成两次,每次一千五百美元,银行的收费费率很奇怪,每次有一个基本费用,加上按照金额收取的手续费,因此我实际上多付出一次的基本费用。
我向美国的卖家发出了 Email,通知他们钱已经汇出,请他们发货。一个月后,武汉邮局通知我去提货,我按照通知来到上海路邮局提货,邮局人员却让我去找海关的人员来检查,于是到了海关那里,里面坐着一个女士,我进门的时候正对着镜子梳妆打扮,见我进门,忙问我有何事。我说邮局请海关人员去验货,于是她没好气地让我等着,大约过了一个小时,她回来了,说你的货物是光盘,要按照音像制品征收高额关税,我解释说来的邮件里是自由软件,不是游戏或者电影片。一听说是什么软件,她连忙又说,进口软件需要技术进口许可证。我一听就愣了,这种自由软件可以从网络上自由下载,为什么还要技术进口许可证?
这位女士望了一下我,觉得我不像是社会上那种调皮捣蛋的人,于是又给上级领导打电话,要求再来一个人协助检查,又过了一个小时,来了一个身着制服的官员,胖胖的脸,大腹便便,说货已经看过了,让我写保证书,保证这里面的东西不是盗版的商业软件,保证不是游戏和电影片,并且仍然要按照音像制品收税。最后没有办法,只得按照他的指示行事,写了保证书,缴纳了关税。谁让你干这门生意呢?
垄断的通信业
从技术上讲,GNU/Linux 与 UNIX 操作系统具有相同或者相似的用户界面,因此对于想学习 UNIX 操作系统又付不起钱的人,GNU/Linux是一个极好的选择。 UNIX 是一个多用户、多任务的系统,GNU/Linux 克隆了它,而且具有和它完全一样的健壮的网络功能,拿它来建网络服务器和主机是很理想的,它符合我当时的网络建设计划要求。
我想将公司发展成为一家网络服务提供商,需要申请数据专线,但是电信部门却开出了天价,一条速度并不高的专线,除了高昂的初装费用,每个月还需要缴纳高昂的月租! 高高的门槛表明他们自己想独家经营这项业务。对于这一问题,我当时没有任何办法的 —— 要么被他们痛宰,要么就休想干这一行。他们为什么这么厉害?答案似乎只有一个:他们是一个政企不分的垄断部门。
过了很长时间,我读到了美国的本杰明·富兰克林的文章:
All governments are more or less combinations against people... and as rulers have no more virtue than the ruled... the power of government can only be kept within its constituted bounds by the display of a power equal to itself, the collected sentiment of the people.
--- Benjamin Franklin Bache, in a Philadelphia Aurora editorial, 1794
[“所有的政府,或多或少,总是反人民的组合......而作为统治者,他们并不比被统治者具备更多的美德......要将政府的权力限制在宪法规定的范围内,只有一个办法,靠另一股和政府同样强大的力量 —— 也就是全体民意的集合。”]
富兰克林在这篇文章中表达出的观点,给我带来了巨大的启发,我认为他实际上已经隐含地提供了自由软件如何打破通信垄断的诀窍,我后来一直关注 Wi-Fi (Wireless Fidelity)无线互助网络的发展,Wi-Fi 网络在理论上不需要什么通信公司的介入,因为人人都可以让自己的 Wi-Fi 设备成为通信信号交换的枢纽,但是与建立在 UUCP 之类的存储转发服务相比,Wi-Fi 技术可以做到实时通信。我相信这种以用户利益为基本出发点、 而不是以控制用户为经营手段和前提、以通信公司的垄断利益为基本出发点的新一代通信技术,将是这些垄断的通信公司的掘墓人。 6
坚果中的爪哇
Java in a Nutshell
由于一时无法进入数据通信市场向公众提供服务,因此我原来花了很多时间考虑和准备的建立网络的理想无法立即实现,但是公司还得照样经营下去,因此我经常泡在网上,试图寻找新的商业发展机会。
互联网上有一个很好的工具,就是已经对主题分门别类的新闻组,即 USENET。但是中科院网络中心担心用户乱发政治性的意见通过网络到处传播,害怕承担政治责任,封掉了 News 服务,所以我只能利用其他工具来查找信息。 1996-1997年时,万维网(World Wide Web, 即 WWW)还不像今天这样流行,而且浏览 WWW 靠的是 Lynx, 这是一个基于文本的浏览器,很多现在的网友可能从来没有见过它,Lynx工作在 HTTP 协议之上,它内含有一个很简单的 HTML 文档解析器。当时的 Web 网站并不是像现在这么多,我收索信息的主要靠 Gopher,这是一种基于菜单式的文本检索软件,它工作在 ftp 协议之上, Gopher 很简单,它只是将用户的检索请求转换成为 FTP 的文件提取命令从网络远程的主机上获得文件的拷贝并显示我的屏幕上。
一天,我进入了一个 Gopher 站点,这个站点存储了 USENET 的 News 的档案,里面有关于编程语言的档案,于是我将它拷贝下来,这个文件很长,我花了两天的时间才读完,里面提到了美国的 Sun Microsystems 公司开发了一种新的语言,名字叫 Java。
爪哇(Java)是印度尼西亚的一个大的岛屿,因为风光旖旎而闻名于世,成为旅游胜地。但是, Java 语言除了名称与爪哇岛相同之外,其他东西与爪哇岛风马牛不相及。那篇文章还有相当的篇幅介绍它的新特性,说它是下一代的网络语言,特别是 Web 上的编程语言,可是使用它来设计网络上的动画片,这门语言设计得很像 C 语言,但是取消了指针;它又像 C++ 一样面向对象的,却比 C++ 来得简单,甚至可以用它来编写操作系统等。
单凭这么一些只言片语的介绍是无法掌握这门语言的全貌的,我需要更加详细的文档资料,于是我又上网查找有关的文档资料和介绍 Java 的书籍,当时系统全面介绍 Java 的书并不多见, 但我还是发现了一本书叫 “Java in a Nutshell”,书名照字面直译出来就是“坚果中的爪哇”的意思(实际上意思是对 Java 编程一个深入浅出的介绍),网上对它的评价不错。
书的作者是 David Flanagan,他毕业于麻省理工学院(MIT)。我知道这是世界一流的名牌大学,许多革命性的技术都产生于那里,我们泛系学友队伍中也有人在那里获得过数学博士的学位。我写信给美国的朋友让他们买一本书来给我看看。
过了一个月,英文原版图书到了。我很高兴,便静下心来仔细阅读它。Java 的设计思想是卓越的,尽管 Java 程序的运行速度可能赶不上编译型的 C 程序,但是对于网络应用,速度并不是最突出的问题,网络应用程序最突出的问题在于计算机之间的协同性如何,因为网络上的计算机基本上是异构的,也就是说,它们往往来自不同的厂家,体系结构上的差异很大。一个平台上开发的程序以前往往不能直接在其他平台上运行,移植的工作量往往随着程序代码的长度的上升变得非常庞大。现在 Java 似乎可以解决这个问题,只要你在计算机上安装了 JVM(Java 虚拟机,Java Virtual Machine),那么程序只要写一次就行了,它可以在任何计算机上运行。
Java 虚拟机本身是采用标准的 ANSI C 编写的,因此, Java 与 C 之间有清晰的接口,系统程序员可以采用 C 编写底层的模块,通过两种语言之间的接口,传递到 Java 虚拟机的运行环境中去运行,而采用 Java 编写应用程序时,由于有了大量的类库,因此应用程序的开发时间与采用 C 编写相比可以大大得以缩短,对于熟练的 C 程序员而言,学习和掌握 Java 不是太困难的事情。
Java 的规范是公开的,我意识到 Java 在试图创造一个前所未有的计算平台,这个平台可能会使用户摆脱掉微软强加的约束。在读完了这本书之后,我想将它翻译出来,让更多的人认识它的价值。于是,我开始试图获得这本书的版权。
这本书的作者已经将版权转让给 O'Reilly 出版社,因此需要同 O'Reilly 公司联系购买版权的事宜。当时的 O'Reilly 公司规模不大,但是已经出版了很多开放系统方面的好书。这个公司准备向海外扩展。在一个朋友的资助下,我最终买到了这本书的中文版本的著作权。
时间已经到了 1996 年的夏天,武汉是全国的三大火炉之一,夏天酷热无比,整个夏天我都坐在计算机旁汗流夹背地翻译这本书。 整整三个月后,翻译完成了。应该承认我从翻译过程中学会了很多东西,翻译的过程就是一个向作者学习的过程,因为你要准确地表达作者的作品内容,就必须先透过文字清晰全面地理解作者的原意是什么。 我以前读过严复翻译过的作品,严复采用的是意译法,翻译几段后在译文中加入了自己的评论,严复的中文和英文功底都是当时无出其右的,他的翻译是名副其实的再创造,所以他的译作今天我们读起来仍然觉得价值巨大,特别是他提出的“信、达、雅”的翻译原则更是后人推崇的金科玉律。
翻译科技作品,准确当然是第一要著,想做到这一点就非常不容易,因为科技作品需要译者对专业知识非常了解,至少是半个技术方面的专家。译作是给中国读者看的,所以中文的表达必须流畅,很多翻译作品由于拙劣的翻译,让读者实在难读难懂,还不如去阅读原文,以至翻译的目的没有到达。
通过这一次真刀真枪的翻译,我开始明白了一个道理,科技翻译这一行当的门槛非常高,绝对不是随随便便找一个会外语的人就可以干好的。除了外语水平要过关之外,专业技术上要精通,中文表达水平要一流,而且更重要的一点就是要有大量的时间投入,这样才有可能沉下心来仔细对翻译作品进行精雕细刻,使之完善。
我很高兴地看到 Java 与我们泛系的思维有很多相似之处,我告诉了吴教授,并希望他注意这一新的技术,并要求他写一篇评论文章。吴教授真的写了一篇文章,这篇文章含有很多关于语言学的新思想,原来准备将这篇文章作为导读列入到书中去,但是后来 O'Reilly 不同意,因此没有发表。
翻译完成后,就要将书排版。为了排版这本书,我费尽了心机。在这之前,我在学习数学时知道了有 TEX 这个工具并且学会了它的用法, 因此我先是尝试利用 TEX 来排版这本书7, TEX 是美国斯坦福大学的高德纳(Prof. Donald Knuth)教授发明的专门排版数学论文和书籍的工具,这个工具有一个特点,就是只利用可以阅读的 ASCII 字符来描述各式各样的数学符号、表达式和公式和正文。例如,泛系的代表性表达式,粲泛系“B \subset An × W”, 就可以被 TEX 用 ASCII 字符描述成为 $B \subset A ^n \times W$。 这里表达式中所有字符都是 ASCII 字符,以反斜线开始的字符串称为“控制序列”(Control Sequences),也就是 TEX 的格式化指令。 ASCII 字符集是几乎任何计算机系统上都支持的编码格式,因此使用 TEX 排版的数学论文具有非常广泛的平台支持。
最初的 TEX 系统本质上是一个用 Pascal 语言编写的一个编译器,这个格式化工具将含有 TEX 控制序列的文本文件编译成为 DVI 文件,而这种 .dvi 文件格式与硬件无关,因此,只要具有了相应的设备驱动程序,利用 TEX 排版的文件可以在任何打印机上输出,成为便于阅读的纸媒体版本。
TEX 系统是属于公用领域的软件包,也就是任何人都可以免费地使用它而不用向高德纳教授缴纳任何软件的许可证费用。在我下载的 Slackware 和发行的 SuSE GNU/Linux 软件包中都附带有 TEX。
TEX 自己有一套字体设计工具,叫 METAFONT,高德纳教授自己利用 METAFONT 已经设计了几种漂亮的英文字体和许多数学符号,因此用 TEX 排版出来的论文或者图书质量是非常高的。 但是, TEX 对中文的支持较差,主要原因是没有高质量的中文字库。最终我还是放弃了使用 TEX 来排版这本书。尽管这样,我一直在抽时间学习它、使用它、钻研它。我当时根本没有想到它竟然成了我开创事业第二春的工具和起点,当然这是后话了。
没有办法,只有去使用 MS-Word 来排版,回想起来这真是一项枯燥乏味的工作,因为书的篇幅有将近 500 页,因此每次改动一个地方,就可能造成所有的页码从头设置,段落的分段需要重新调整。
还有另一大令人头痛的问题,原书中有许多插图,O'Reilly 在收到我支付的版税后提供了利用 Macintosh 计算机制作的高质量的图形文件,但是我当时没有昂贵的 Macintosh 计算机,因此在我的 PC 上无法读出这些文件。后来通过一位朋友终于找到了某个大的设计院内有一从事地图测绘的制作室,他们那里有 Macintosh 计算机和输出设备。我带着光盘到了那里,但是他们告诉我,我的 PC 已经排好的文件在他们的 Macintosh上无法制作,需要重新排版! 我的天,我花了将近一个月的心血眼看就要白费了。我拒绝这样做,只要他们制作封面和有插图的内页。
在这次折腾中,我从他们那里学到了一个新的知识,那就是 PostScript 技术。他们不无自豪地告诉我,他们购买了德国生产的 Agfa 发排机,并且专门安排了一间很大的屋子放置它,任何外人都不能进去摸它。这台机器可以生成印刷彩色地图,报纸,杂志等许多漂亮的印刷品所需要的胶片。Agfa 发排机可以将苹果电脑制作的 PS 文件输出到胶片上,分辨率非常高。Agfa 的品牌我是见过的,在国外时,我就用过 Agfa 牌子的胶卷照相。我刚开始时听不懂他们说的 PS 文件是什么,后来他们告诉我 PS 文件就是 PostScript 文件。
突然间,我想起来了,在我的 PC 上的 Slackware GNU/Linux 上不是也有一个叫“鬼”什么的程序可以显示 PostScript 吗?我带着疑问回到家里打开计算机,试了试,果然不出所料,这个“鬼”什么的程序叫 Ghostscript,其实它是一组程序,其中一个叫 Ghostview 的子程序可以显示 PS 文件,还能显示 .eps 格式的图形,即一种封装的 PostScript 文件。
PostScript 本身是一种基于堆栈的页面描述语言,使用 PostScript 语言可以描述三次贝济埃(Bézier)曲线,而贝济埃(也有人称之为贝塞尔)曲线我在大学里学习机械制图时就接触过,它可以光滑地逼近英文字母或者汉字笔划等图形的轮廓。PostScript 语言采用矢量技术描述图形,因此 PS 文件与图形的尺寸大小无关,只与图形本身的复杂程度有关。 PS 文件是 ASCII 文本文件,Ghostscript 负责将这种文本文件解释成为控制硬件绘制点阵图的指令(印刷术语称为“栅格化”,也就是泛系中将精缩影进行赋形的技术),而 Ghostview 负责将这些硬件指令转换为在 X Window 系统上点阵的输出显示出来。Agfa 发排机的工作原理也是这样,只是它的输出不是在计算机的显示器上,而是在透明的胶片上,而且分辨率非常高(所以就非常贵)。
从理论上讲,只要有了高质量的汉字字库,那么就可以在 Ghostscript 字典堆栈中插入字库, 而得到汉字的页面输出。将汉字字形封装后,又可以作为“盒子”( Box )被 TEX 系统使用,从而在我 PC 的 GNU/Linux 系统上也可以制作出与在 Macintosh 上一样高质量的 PS 文件来,这样不用购买昂贵的 Macintosh 计算机就可以搞排版了。我后来的研究表明,的确可以这样做,而且我们还可以做得更好!
我将封面设计的图案传真给了 O'Reilly 公司,原以为一切顺利,但是第二天得到的答复却是需要重新设计封面,因为他们公司有自己的商标和风格,他们要求我“必须遵守”他们的设计风格。
我感到奇怪,因为在我们的合同中并没有这些条款,更加奇怪的是,同我签合同的 T 先生在美国西部的加州,而 T 却让我将封面设计传给美国东部麻省的办公室,我真不明白这个公司内部是一套什么样的工作机制。
不管怎样,在几轮反复之后,封面设计的问题总算搞定了。接下来要将书印刷出来,我开始找印刷厂联系,可是印刷厂却让我去找出版社的人来交涉。我感到奇怪,我已经购买了书的版权,版权是属于我所有了,出版书是我自己的事情,为什么要将一个与我跟印刷厂毫不相干的国内出版社绞合进来。
原来,所有的印刷厂都受到新闻出版局的管辖,印刷厂当时被认为属于新闻出版系统的一个环节,而新闻出版在中国被认定是特殊的行业,党的喉舌,必须垄断经营。
我的天!我感到万分沮丧,因为我又一次进入了一个不自由的行业。沮丧之余,我疑窦丛生,难道出版这么一本纯属技术类的书也会威胁到党的声誉和危及政府的统治吗?我们宪法中规定的公民言论自由、出版自由的权利应该怎样体现和保护呢?
带着这些问题,我到了有关新闻出版部门,试图让他们同意我出版这本书,我很耐心地向他们详细介绍了这门技术的价值和这本书的价值,希望他们同意让印刷厂出版。可是官员们只是摇头,他们对我解释的技术毫无兴趣,他们也解释不清楚什么权利与自由的问题,说如果我不找所谓“正规的”出版社出版,像我这样搞下去就是非法出版活动,他们要处罚。我问他们如何处罚,一个官员说处两倍的罚款,另一个官员说要处以五倍的罚款。
我实在忍耐不住了,冲着官员们高声咆哮起来:“这件事我干定了,你们罚吧!” 官员们被我镇住了,他们压根没有想到我这样一介文弱书生竟敢在他们的办公室里“无理取闹”,平常一贯处尊养优的官员们一下子手足无措,面面相觑,我“砰!”的一声关上了门离开了。
我是个意志坚定的人,一旦我认定的事情我是不达目的不罢休的,最终我找到了一个规模小的印刷厂将书印刷出来。在这个印刷厂的车间里,我与印刷工人师傅们一起经历了从制版到装订的全部印刷生产流程。
因为这是一本没有经过所谓“官方批准”而出版印刷品,所以没有被视为所谓“出版资源”的书号,没有书号,就不能进入“正规”的图书流通市场,也就没有大的销路,不过这并没有影响我在为别人讲授 Java 课程时作为辅导材料来发行它。
奥莱理登陆中国
书印好之后,按照合同,我寄了几本样书给 O'Reilly 公司,这是这家公司的第一本中文书,因此成了该公司历史上具有纪念意义的文物。那段时间,他们也不时收到来自国内一些出版社的购买版权的函件,这时 O'Reilly 公司刚刚卖掉了一个软件产品给 AOL(美国在线),得到了一大笔钱,开始走上了向海外市场急剧扩张的道路。最终他们派 T 来北京考察市场。
我在北京如约见到了 T,T 有斯拉夫人的血统,长得人高马大,很英俊潇洒,性格乐观豁达。他了解了一些情况,并汇报给总部,以决定下一步如何行动。
不久,O'Reilly 决定在中国拓展业务,并要求我提供帮助,作为一种善意表示,他们邀请我到马来西亚的吉隆坡参加 INET'97。费了很多周折,我到了吉隆坡,这次大会的规模比我在莫斯科参加的那次通信展览会的规模大多了,可见国外的信息技术的发展是一日千里的,展览会上见不到一家来自中国的公司,可见中国人在信息技术领域已经大大落后了。 会上我见到了O'Reilly 公司的老板 Tim O'Reilly 以及他们当地的合作伙伴林先生(林先生是华侨,对人非常友善)。在会上给我印象最深的东西并不网络技术本身,而是信用卡,很多开会的人到了展览会上,都拿信用卡购买 O'Reilly 的图书,非常方便,甚至来自不发达非洲国家的黑人顾客也在使用信用卡。也有一些人使用现金购买,但是人数不太多。我回忆起了在国内办理 SuSE GNU/Linux 软件包汇款时的情景,相比之下,国内金融机构的服务实在令人不敢恭维。
这次在吉隆坡,我在与 Tim O'Reilly 谈话时表明了我的观点,网络技术仍然太难使用了,为了更多的人使用上网络,网络工具必须简单直观,O'Reilly 公司以前是以出版 UNIX 和 X 图书出名的,但是我的话可能给 Tim 留下了一些印象,后来他回去之后不久,O'Reilly 公司出版了 MS-Windows 平台上的网络图书,但是推广应用 MS-Windows 上的网络技术却并不是我当时的意思。
不管怎样,O'Reilly 公司最终决定要开拓中国市场,公司派了高级主管 D 和 B,加上 T 三人一行到北京与我谈判合作。 临走前,父亲叮嘱我遇事要三思而后行,根据他的判断,美国人这次来是有备而来的,我应该做好充分的准备。我根据孙子兵法制订了我的预期目标,并分析了对方可能会提出的方案与我的对策。
这是我第一次见到 D 和 B。 D 是英国移民,一口的伦敦腔,长相非常像前苏联的克格勃头子克留奇科夫,带着眼镜,笑容可掬下面透露这一种令人难以言状的城府很深的阴森。我预感碰到了一个难以对付的对手。
果然,D 和 B 在会谈时坐在一旁很少开口说话,一切由 T 来表达,而且每次离开谈判桌后总是撇下 T 到外面去透透空气,一起嘀嘀咕咕。我无从知道他们说些什么,反正我只要表达清楚我的想法即可。
最后一次会谈,D 开口了,说 O'Reilly 公司要聘用我,支付工资,我觉得 D 终于开始跟我讨价还价,而不像是在谈公司之间的合作。但是我还是平心静气地对他说,我公司愿意帮助 O'Reilly 公司在中国开展业务,但是我公司现在发行 SuSE 的收入要远大于您的开价,因此,我个人决定不加入 O'Reilly 公司。
T 一听就急了,因为他好不容易才物色到我这么一个合适的伙伴,而且我也去吉隆坡见过他的老板,老板也认可了。现在一下就谈蹦了,他以后的工作无法开展,于是 T 拉着 D 离开了我进入了咖啡厅,只剩下 B 与我谈话 。
B 开始和稀泥,一会尔, T 回来了,要单独与我谈,他提出了他的看法,说一切还没有开始,但是他希望我能与他们合作。我想了一下,将我的预期计划改了一个说法,说原来我之所以愿意帮助 O'Reilly 公司开拓业务,正是因为你 T 提出过一个方案,现在我没有看到这个方案会执行,因此让他去与 D 商量,重新考虑原来他提的方案。
最后,在 T 的劝说下,D 同意了这个方案,我们达成了协议,由我负责帮助他们开拓中国市场。这次谈判最后以在北京前门烤鸭店的两只烤鸭被我们消灭而告终。
回想起来,我这次之所以达到了目的,除了过硬的心理素质折服了对方之外,还因为我使用泛系兵法的指导准确地摸到了对方的底牌:他们想在中国开展年营业额在上千万元之上的业务,而我的脑袋里装着他们通向这座金山的清晰路线图。没有我,他们无法轻松进入这个市场。
难入出版界
国内出版界是一个垄断的行业,垄断就意味着封闭。有一大批才能平庸的特权阶层的人被这套垄断出版制度养着,寄生在出版业内。他们的份量在开放的市场中是不堪一击的,所以,他们拼命地维护着这套垄断制度。
这个制度下,最大的受害者中当属作者首当其冲,为了出版著作,一些作者被迫与出版社签定类似“卖身契”一般的不平等合同,被迫将著作的著作权转让给出版社。我也知道,鲜有作者能够去查阅出版社的帐目,调查究竟有多少拷贝卖出。出版社的情况也糟糕,因为很多出版社没有自己的发行渠道,依靠新华书店这种主渠道销售图书,而新华书店在与出版社结帐时,也总是做不到将销售情况的明细告诉出版社。
总之,因为不自由,出版界里存在的问题非常多,充满了恩恩怨怨和矛盾。
与中央电大的合作
由于我很清楚国外的出版社一下子是无法直接从事出版活动的,所以必须要与国内的出版社合作。以前我为学员提供 Java 培训的服务经历告诉我,教育培训是一个新兴市场,义务教育之上的高等教育作为一个产业迟早是要面向市场搞产业化的。因为中国的学生数量庞大,这一市场的潜力无疑是巨大的。 在与新华书店的接触中,我了解到的情况也肯定了这一看法,因为新华书店的收入构成中,教材发行的收入所占的比重很大,而且相对很稳定。
要想迅速发展培训业务,与教育机构的合作是一条有效途径,而且中国有这么一个机构,那就是分布全国各地的广播电视大学。从道理上讲,这种合作符合现代远程教育的发展方向。
通过一系列供求索交的活动,我们终于与中央广播电视大学达成了合作协议。此前,我也像我承诺的那样,帮助 O'Reilly 成立了他们的中国公司,而且给它取了一个好听的中文名字:奥莱理。
为了推广奥莱理的品牌,我细心策划了一系列的市场推广活动,包括各类推广介绍会、展览会、技术演示会等,其中特别值得一提的是在中央电大制作的电视教学节目,根据电大的同志讲,它已经成为电大电视教学课件库中的精品之作。我则通过这套教学节目的制作,发现了自己在教学方面具有过人的潜质,为自己后来的“黑客道”教学树立了信心。
结识理查德·斯托曼
焦点时刻
1999年10月,吴教授受香港大学的邀请去讲学,需要将护照和入港通行证让我从北京捎回武汉。
在此之前,我组织人力和物力翻译了奥莱理出版的《开源软件文集》一书,正如书名中提到的,它收录了软件领域的一些精英们的文章,在当年国际 IT 界造成了很大影响,在此之前我发行 Slackware 和 SuSE 时,我早就听说过其中的作者之一 —— 理查德·斯托曼院士(RMS) 8的大名和他开发的自由软件,以及自由软件基金会(FSF)。碰巧当时南京的一次国际性学术会议邀请他到南京做演讲,因为我翻译过他的文章,因此我想先去南京会他,然后从南京回武汉。
从那篇翻译的文章中我得知,斯托曼院士早年也有辞职下海的经历,也有过艰难痛苦人生抉择的遭遇,他的经历极具传奇色彩,从他的那篇文章里可见一斑。那篇文章写得非常好,不过其深刻思想远远非一般的人一下子就能理解透彻的。尽管我和另外一位朋友在翻译时非常卖力,译稿历数次修改,后来在出版之前还交他指定的五位海外华人审读并通过,但是坦白地讲,我也还有一些问题没有真正地搞清楚,想当面请教他。
自由软件的特点在于它提供了软件的所有源代码,而且允许用户自由地运行、拷贝、复制发行和修改程序。在这一游戏规则下,大众争论最为激烈的一点就是,软件公司如何靠自由软件生存?这也是我最想问他的一个问题。
为了见到 RMS,头天我就到了南京等他,住进了他将下榻的同一宾馆。晚上他很晚才从上海飞到南京,我在电话里首次听到了他的声音,典型的纽约口音,声音非常宏亮清晰。电话中他约我第二天上午先去听另一位会议主讲人的演讲,然后会面后回他房间里去谈话。
1999 年 10 月 30 日上午 9:30 左右,我进入了会议的大堂,当时正好是中科院的钟锡昌研究员在讲解他的 HOPEN 操作系统。 RMS 就坐在观众席的第一排,他一头长发,身着蓝黄黑条纹相间的 T—恤衫。我一进去就发现了他。几乎是在同时,他也回过头来,注意到了我,在钟锡昌研究员作报告的过程中他几次回头看我,似乎是暗示我,他已经注意到我了。在报告中间暂停休息时, RMS 快步地朝我走过来,一手拉着我就走。
进入他的房间后,我刚坐下来,想跟他寒喧几句,不料他却将一条板凳挪动到房间的空调下,光着脚上去想调节温度,这时我才看到他一直没有穿鞋。他示意让我过去帮助他,那家宾馆是一个中日合资企业修建的,空调是进口的,但是我们费了很长时间,就是无法将室内温度调整到他希望的温度。 我想找宾馆的服务员来调节,RMS 却拒绝了。 最后我们放弃了努力。
他的房间很零乱,行李和衣物等散落在床上和地上,笔记本电脑旁边有一大袋巧可力糖果,每当写程序或者电子邮件兴奋时,一颗颗巧克力便被送入嘴中。他自己带来了一个两米长的大气垫放在床上,他说晚上就睡在气垫上面。如果没有房子住,找个安静的地方睡在地板上也行,这是他年青时因为经常开夜车编写程序无法回家睡觉而养成的习惯。我感到很新奇,也到气垫上去躺了一下,果然很舒服。
在此之前,我曾经同他讨论过为他写一本传记,因此我们正式谈话也就从这里开始。我开始提问,问他的过去,他的生活,自由软件的历史,对圈内外其他人的评价等,渐渐地,我发现斯托曼具有无穷的人格魅力,特别是当我了解到他当时辞掉 MIT 人工智能实验室职务去开发 GNU 工程自由软件的细节时,他便将自己的经历娓娓道出,也唤醒了我自己当年辞职而得自由的回忆,“同是天涯自由人,相逢何必曾相识?!” 我们一下子成了好朋友。
处于争论旋涡中心的自由软件哲学
英文中的 “free software” 这一术语经常被人误解,因为“free” 一词在英语中有两个含意: 一个是“自由”,另一个是“免费”。 RMS 告诉我,他年青时学过一年的汉语,所以他知道这个词的中译文应该是“自由”,而且很高兴我的译文中是这么译的。
另外一个经常被误解的地方就是自由软件的版权不像 TEX 系统算法的版权那样属于“公用领域”(Public Domain)内,而是有现行著作权法所定义的版权的,它的版权许可证称为 Copyleft,其条款也是根据现代的著作权法建立,但是版权保护侧重点不同于专有软件。专有软件公司拿软件的 Copyright (版权所有,或者说“版权属右”)来保护出版商的权益, 而自由软件使用 Copyleft (“版权属左”) 来保护用户的权益。
正因为自由软件也拥有版权,而且任何人都得到了作者的许可,可以在市场上按照任何价格以 Copyleft 的规则(作为发行者必须承担的义务)来销售自由软件。Copyleft 有多种形式,例如 GNU GPL 就是其中之一。
“版权属左”规则下的自由软件有两个特点特别引人注目:一是必须提供软件的全部源代码,二是自由软件不附带任何质量保证。 前面一点可以为其他人从源代码中得到程序的开发思路从而修改完善软件提供前提,后面一点为软件的开发人员从自由软件的开发业务中得到回报创造了条件。 因为软件作为复杂的产品,并非人人皆有本事或者能力从软件的源代码中反推出软件原作者的心思,而无论设计多么精巧的软件,用户使用软件时总会产生大大小小这样或者那样的问题需要帮助,所以,除了销售软件的拷贝之外,软件的作者还可以在用户要求提供技术服务时向用户收费 —— 我恍然大悟,头脑中的疙瘩一下子就解开了!
理想与信念
但是,自由软件商业模式在 RMS 看来只是一个小问题,根本不值得投入太多的关心,因为世界上的功力深厚的程序员永远是一种市场上的稀缺资源,这类人才永远不会失业。
RMS 关注的问题在于用户是否拥有自由,即人的权利。因此当我让他在《开源软件文集》上签名时,他拒绝了,因为推广开源软件的人将软件的实用性置于自由之上,是与他的理想格格不入的。正是为了实现自己的自由理想,他从 1984 年离开 MIT 人工智能实验室以来的十多年里,没有任何薪水、自己没有房子、没有自己的汽车,单身一人过着苦行僧般的生活,这在美国是常人难以忍耐的。唯一支撑他的就是对自由追求的信念 —— 我面对的不是一个普通的名人,而是一位来自理想国度的圣者。这位先知启蒙了我对自由的认识,我开始真正觉悟了。
告别时,RMS 说他明年还可能来中国,希望能再次见到我。
下午我离开了南京市,准备飞回武汉,但是到了南京机场后,飞机还没有来。也许是我的运气不好,在我的记忆当中,我几次乘坐这家航空公司的航班,总是不顺利,不是飞机调配未到,就是飞机要加油或者检修,不能按时起飞。
我之所以选择这家航空公司的航班,就是因为它的航班飞机将降落在王家墩机场,在汉口的市中心,离我家更近,这样可以省掉从天河机场到市内的时间和交通费用,早点回家将护照和证件交给吴教授,没想到弄巧成拙。等到晚上八点,天色已经漆黑一片了,飞机才来,是双螺旋浆的运七支线飞机,噪音很大(后来我听说武汉航空公司的有一驾飞机失事了,可能失事的飞机就是那架运七型飞机)。从那以后我再也不想乘坐武汉航空公司的班机了。
到武汉家中时,吴教授和我父母正在焦急地一起等着我回来,时钟已经指向晚上十二点,真是漫长的一天。但是我丝毫不觉得疲惫,因为我当天的经历的东西太多,心境根本无法一下子安静下来。
奥莱理变奏曲
序曲:两类美国人。
与 RMS 告别之后,他的形象和说的话一直萦绕在我脑海中。他的传奇半生和思想你很难用一句话说清楚,因为他的工作介于几个领域之上,他不仅是天才的程序设计大师,而且利用他的才能去构建他的自由软件工程,并且能够长期不懈地努力实现他的理想。他怪异的性格掩盖不住他对真理执着追求的流露。尽管他的哲学思想当前还没有得到全社会的公认,但是我敢肯定他是一个可以入史争鸣数百年的人物。
在美国本土,商业圈一度对 RMS 是相当敌视的,因为RMS 制定的游戏规则判处了很多专有软件公司的死刑或者死缓。当我回到北京后,奥莱理的 D 又一次到了北京来,当他见到 RMS 的照片时面如灰色,良久之后才说 RMS 是一个“野人”。这也难怪,这些商人眼中只有利润,他们才不管什么自由、社会、原则呢。
这段时间工作非常繁忙,经常通宵达旦地赶奥莱理制定的出版进度。为了保持头脑清醒,我在业余时间开始做一些与计算机无关的事情。我一直爱好读历史书,这段时间便开始研究《史记》。司马迁的这部巨著被鲁迅先生称为“史家之绝唱、无韵之离骚”。上中学语文课时我学过一些节选自《史记》的古文,这些经典范文当时都是可以背诵的,但是我从来没有机会系统地读过全书。
经过这段时间的阅读,给我触动最大的就是《太史公自述》和《报任安书》,以前我大概地知道他的生平事迹,但是这次阅读原文后却有全新的感受,一种对理想与信念力量的新认识。司马迁之所以能够在逆境中完成这部宏篇巨著,除了他自身的家庭环境、知识积累等因素之外,关键还是靠伟大信念的支撑,他探究过生命的构成:
“凡人所生者神也,所托者形也。神大用则竭,形大劳则敝,形神离则死。死者不可复生,离者不可复反,故圣人重之。由是观之,神者生之本也,形者生之局也。不先定其神,而曰‘我有以治天下’,何由哉?”
我开始认识到,对于人而言,时空中的感性世界只是一个幻觉,一个人只有通过精神与道德的经常训练,才能学着活在唯一真实的永恒世界里。读完这本书之后,我觉得司马迁仍然还活着,因为他的精神还在。我还认识到,正是因为我们民族有这些珍贵的历史遗产,才使得我们在世界民族之林中占有重要地位,这也是我们中国人与当今世界上的列强周旋与竞争的信心来源。
变奏一:风起萧墙乎?
不客气地讲,D 是一个伪君子,我曾经在开始时让他下不了台,虽然后来他被 T 说服而暂时妥协过。我想既然我们双方已经达成协议,这件事就已经过去了,不值得再去想它。可是 D 不这样想,他心中仍然是看不惯我,这一点后来我逐渐觉察到了,而且我觉察到了一个更大的圈套。
D 这个人的斑斑劣迹,我是有所耳闻的,在公司扩张的过程中,D 可以说为了自己的利益是不择手段。尽管奥莱理在法国、日本、台湾等地都有子公司或者办公室,后来却都由 D 和 B 收归自己的势力范围内。尽管这些国家和地区之间的差异很大,但他所使用过的管理伎俩却如出一辙: 先是让 T 出面扫清障碍,物色一个合适人选,然后利用这个人拼命工作,一旦公司规模上来,便将这个人一脚踢开,换上自己的心腹,达到自己彻底控制公司的目的。
对中国分公司的情况也是这样,D 在前期从不对我直接发表任何意见,一切通过 T 来发号施令。 在来北京几次后,他发现公司的 C 很听话,于是把 C 邀请到美国本部去,名曰岗位培训,我不明白翻译的工作需要什么样的岗位培训,如果说需要培训,也应该是我在中国找机会为 C 培训。C 后来负责市场开拓方面的工作,但是美国的那一套做法不能照搬到中国来,因为中美两国之间市场情况差异实在太大。
C 从美国受训回来之后变化很大,一下子像变成了另一个人似的,以前 C 说话非常谦虚,在公司内部颇得人缘。但从美国回来之后说话的口吻一如自己就是奥莱理的总老板了。我感到 D 与 C 之间一定有名堂。
由于找到了C,D 逐渐开始与我直接交锋了,这时 T 最窝囊,因为中国市场是由他直接负责的,现在却什么也不能说,什么也不能做,而且 D 与我之间的问题都变成了 T 的错。
变奏二:无处不用间
本来公司是一个公共场合,大家有相同的目的才走到一起来,为了实现共同的目标,面对市场的竞争,公司创造力、产品的生产销售和工作效率是最根本的东西,一切管理的措施都应该为优化这些要素服务, IT 行业的公司尤其应该注重效率,因为这个市场变化得实在太快了。遗憾的是,不是每一个公司都清楚地认识到这一点。有些管理者将对人的控制摆在了一个特殊的位置,他们认为只要控制了人,就可以控制一切。但是人是公司里最活性的要素,管理人主要应该靠制度,而不是依靠个人之间的远近关系。
D 就是持后一种态度的人。为了控制公司,他利用 C 向他事无巨细地汇报,北京这边白天发生的任何事情乃至细节,都源源不断地在晚上通过 C 到达了美国总部,于是我除了要应付市场方面的工作外,不得不开始应付来自公司内部的麻烦事,而这正好是我最不擅长处理的事情。
我从头安装 Slackware GNU/Linux 的经历使我成了经验丰富的系统管理员。为了利用网络推广奥莱理的产品和服务,我亲手管理着公司的 Internet 主机和上面的 Web 网站。系统管理员经常要备份数据,一天晚上,我工作到深夜,作为最后一项任务,我开始备份网络系统主机上的数据,我发现邮件服务器上还有人登录上来收发信件,我感到奇怪:这么晚了,还有谁工作?是不是有其他骇客在利用邮件服务攻击我们的网站? 骇客们的一些惯用技巧我是了如指掌的,Sendmail 是一个非常复杂的软件包,它工作在 25 号端口上,以往就有过骇客利用 Sendmail 中的安全漏洞攻击系统。经过阅读系统日志文件,我发现是 C 在工作,而且邮件服务器的日志文件显示邮件发向 D!
我一下子明白了 C 为什么变化这么大!C 是黑夜角落里的耳目。为了搞清楚公司内部还有哪些耳目,我将此事告诉了公司中的 C',看看美国方面会有何反应。果然,C' 也是耳目之一。 几天后,T 发给了我一份措词强硬的电子邮件,说系统管理员查看用户的邮件在美国是侵犯人权法律云云,因此以后不许这样做。去你的美国人权法律吧,你们白天派人暗中监视我的行动时,把我的人权放到哪里去了?从那时起,除了为同胞们感到悲哀之外,我觉得与这群美国人的合作失去了任何价值和意义。
变奏三:克隆与决裂
由于我的出色工作,奥莱理在中国市场上已经取得很大成功,许多原来不知道它的读者,通过我组织完成的一系列图书了解了它的价值,市场上的反应很好。 D 是知道这些的,他开始露出了狐狸的尾巴,跳出来急于要控制公司的一切,与我的矛盾也加剧了。天底下没有不散的宴席,我开始寻思出路。
软件含有程序和文档两部分,没有文档的软件显然不完整,因为用户无法知道怎样操作使用程序。奥莱理公司出名很大程度上是出版了很多自由软件的书,这些著作写得深入浅出,很得读者喜爱。 但是在与 RMS 谈过之后,我发现一个问题,尽管自由软件资源已经非常丰富,但是自由软件的自由文档数量相比之下还是太少,而且高质量的著作不多见。 糟糕的是,奥莱理的书几乎全部是专有的,其版权状态与专有软件的许可证没有本质差别。从相当大的程度上讲,奥莱理的成功与其说是它填补了软件文档方面的空缺,不如说是它实际上钻了自由软件社团的空子。
为了推广应用自由软件,这种局面必须改变。中国人可以在这方面发挥自己的聪明才智,摆脱美国专有出版商的控制。
最终,我与奥莱理决裂了,离开了这家专有出版商。
尾声:形式语言与网络出版的结合
从 1997 年 7 月到 2000 年 1 月,我在奥莱理工作了两年半的时间,在付出巨大努力的同时,我也学会了不少东西。客观地讲,奥莱理在早期 Web 的技术发展史上是有较大贡献的,特别是它与其他公司一道提出的 DocBook 规范,已经成为网络出版的事实上的标准之一。 DocBook 是一套 SGML 标记集合,用于给文档的结构和表示打标记,从而分离了文档的内容和表达方式。SGML 是几个 IBM 的研究员制定的一套规范,后来在二十世纪八十年代中期发展成了ISO 标准。 SGML 的实质就是将形式语言引入到信息处理和出版领域,有了形式语言提供的关于信息说明的元数据,信息的检索、查询、分类、重新加工与表现可很容易由计算机来完成。
早期的 Web 将重点放到发展 HTML 上,这是 SGML 的一个子集,但是后来在技术实现过程中,逐渐偏离了SGML 的分离信息的内容与格式的技术方向,而专注于格式的表达。等到 IT 界意识到问题的严重性时,又开始重新改造 Web,这次是使用 XML 规范来进行改造,XML 规范内容非常丰富,但是本质上还是 SGML 的一个子集。
无论如何,SGML/XML 文档最终会以某种形式表达出来,表达的媒体可以是网页、纸媒体、光盘,甚至盲人可以阅读的盲文。如果输出的结果是在纸媒体上,那么我以前钻研过的 TEX、 METAFONT 与 PostScript 等技术都可以派上大用场。
在引入形式语言的概念后,出版的概念发生了质的变化,网络成了一种极好的信息加工、发布和传播的媒体,现在人们把它列为继报刊、广播、电视之后的第四媒体。它对社会的发展已经产生了深远的影响,尽管目前的法律体系还没有准备好进行相应的调整以适应这种技术革命带来的变化。
峰回路转九寨沟
离开了奥莱理之后,重新回到自己的公司经营业务。我知道 IT 市场变幻莫测,反复无常,我想停一下,冷静思考以后的发展方向,随着我的年龄和经历的增长,我少了往日年青人常有的盲目热情,多了成年人应具的理性思考。这是一个自然的过程。
同斯托曼在一起的三个星期
RMS 自从回国之后,一直与我保持着联系,而且正如当时他所说的,他决定 2000 年 5 月再访中国,我当时正构思写作他的传记,因此我要求他安排一下日程,错开一些不太要紧的事情,以便有更多的时间留在中国,我可以挖掘掌握更多的写作素材。
经过讨论, RMS 最终决定给我三个星期的时间。我想天天呆在房间里进行问答式的采访未免太单调了,因此除了安排一些演讲之外,我们想到一些风景区逛逛,在一个轻松的环境里或许可以挖掘到更多的写作素材。
我们决定去四川的九寨沟。我们早就听说那里风光迷人、山水奇佳。我们专门物色到了一位经验丰富的司机和一辆丰田越野车,从成都出发,沿着岷江公路逆水而上。进入松潘境界后,山势雄伟,山峦连延而起伏跌宕,高路入云端。 RMS 大呼过瘾,说如果他以前住在这里开发软件的话,GNU 系统早就完成了。
长海论道
九寨沟风景区的旅游线路可以近似地看成是一个“丫”字形状。我们一共进入九寨沟风景区两次。第一天游了一条分叉线路,第二天到另一条分叉线路,终点是长海。长海并不是海,而据说是在某个冰川时期由于强烈的地震造成的大面积地质沉降,后来周围高山的雪水融化流入而成的一个大的湖泊。水面的颜色随着天上的阳光和云彩飘动而变幻,一步一景,我们亦步亦趋。这样的景色变幻实在迷人,纵使以画海边风景闻名于世的俄罗斯名画家爱瓦佐夫斯基再世,将他所有的画笔、颜料和画布搬来,也未必能穷尽大自然造化的鬼斧神工。后来我们走累了,停下来歇歇脚,开始了一次长谈。
GNU Emacs
RMS 是 GNU Emacs 的原作者,如果从 1975 年 PDP-10 计算机上的那套 TECO 编辑宏算起,到 1986 年 GNU Emacs 第一版正式推出,他断断续续花了十多年的时间才完成,真可谓“十年磨一剑”,因此我打算在他的传记中安排相当大的篇幅介绍这一软件包。
GNU Emacs 是目前公认的最出色的文字编辑器,更准确地说,它是程序员的完整工作环境,因为它几乎无所不能,从写程序、日记、调试、排版、电子邮件,电子表格,到浏览网页, 无所不包。 良好的扩展性来自内置的 Lisp 语言,大多数 GNU Emacs 模块是采用 Lisp 编写的。
Lisp 语言的历史已经很久了,几乎与 Fortran 一样长,而且这两门编程语言至今仍然活跃在软件界。 二十世纪五十年代,计算机科学家先是发明了针对数字计算的 Fortran 语言,后来针对符号计算又发明了 Lisp,Lisp 的发明历史可以说充满传奇色彩。
GNU Emacs 最初是作为一个文本编辑器而设计的,由于文本就是一种符号,因此采用 Lisp 来设计 GNU Emacs 在 RMS 看来是一个相当自然而合理的选择。 Lisp 程序中往往充满了一对对嵌套的小括号,这些嵌套的符号表达式体现着递归。递归是数学上的基本概念之一,从递归理论出发,一切可以计算的函数最终都可以划归为几种基本的递归函数的种种组合,还可以从数学上严格证明,一种叫着 mu 的递归函数与图灵机上的可计算函数是等价的。
从数学理论到计算技术之间还有一段距离,因为计算机只能对数字或者符号进行操作,在冯·诺伊曼体系下的计算机,需要先将程序读入计算机存储起来,然后才能进行计算。在这一过程中,函数的名称与函数过程都是用符号表达的,我们人可以区分,但是计算机却不能。Lisp 语言中的 lambda 函数完成了这一跳,通过引入 lambda 演算理论,在一对对嵌套的括号外表之下的程序是对计算中数据结构与算法的定义和抽象,对抽象的复合,以及将复合的计算对象重新按照简单的对象来计算。这再一次印合了并加深了我对泛积原理的认识,一个是从计算得到的认识,另一个是从系统科学得到的认识。
后来我得知,两者可以找到相同的渊源。Lisp 的发明人约翰·麦卡锡是数学家阿隆佐·丘奇(Alonzo Church)的学生,而丘奇教授是 lambda 函数演算理论的创立者。 Lambda 函数论通过明确形式参数的途径解决了函数名称与函数过程之间语义含糊和歧义的问题。 其实,关于“名”与“实”之间的关系,我国古代的哲学家有大量的精辟见解,公孙龙的“白马非马”之说已经涉及到,庄周对于有与无的哲学见解更是精辟,只是由于时代的局限,他们的睿智不易被现代人所容易地了解罢了。泛系理论在 1976 年提出时也已经研究过这一问题,但是时隔二十几年后我才开始真正明白它们之间的内在联系。
Lisp 在漫长岁月里衍生出来很多版本。其中一个版本 MacLisp 对 RMS 的影响很大,在设计 GNU Emacs 时,RMS 将 Lisp 融入了其中,道理是很自然的: GNU Emacs 本质上是一个文本编辑器,文本就是一种符号,而 Lisp 正好就是针对符号计算发明的。GNU Emacs 中的 Lisp 称为 Emacs Lisp。它比大多数其他的 Lisp 版本都简单。
1994 年, 众多 Lisp 版本又得到了相当的统一,统一之后的版本称为 Common Lisp,它是工业标准。Common Lisp 功能非常强大,当然也很复杂 —— 仅仅语言的规范就长达千页以上,它含有非常丰富的库,包括面向对象的 CLOS。
Scheme 语言是 Lisp 的一个现代变种,诞生于 1975 年,出生地点也是在 MIT。 Scheme 语言的规范很短,总共只有 50 页,甚至连 Common Lisp 规范的索引的长度都不到,但是却被称为是现代编程语言王国的皇后。它与以前和以后的 Lisp 实现版本都存在一些差异。但是却易学易用,自由软件基金会有一个叫 Guile 的语言,实际上就是 Scheme 的一个实现版本。
Scheme 是“恰尾递归”(proper tail recursive)的,因此递归论提供的方法论在 Scheme 中实现起来非常容易。 Scheme 可归纳为函数型编程语言,因为可以通过 lambda 表达式来构造用户自定义函数,这些用户自定义函数与语言本身提供的函数的地位是相同的。
Scheme 又提供了强大的宏计算功能,因此程序员可以使用宏来定制出符合自己要求的控制结构,这样所有的计算可以通过递归论中给出的函数构造方法来以一种统一而连贯的方式来构造。
可以通过编写宏来实现面向对象的计算。因此 Scheme 又可以看作是一种面向对象的语言,C++ 中在 C 基础上费了牛劲才搞出来的面向对象的概念可在 Scheme 中轻而易举地实现,代价只是编写几个区区的宏而已。
最妙的是,Scheme 中程序和数据都采用 lambda 表达式来形式地表达,因此你可以把一段程序当作一种普通的数据来传递,反之亦然,数据在特定的环境下可以转化为程序来执行。C 语言当然也可以通过返回指向函数的指针来达到同样的目的,然而,C 的这一机制是在编译时完成的,而 Scheme 则是在程序运行时完成的。
Scheme 解释器在求值时一般采用了应用序,然而 Scheme 与 Lisp 一样提供了高阶算子,这使得表达算法时异常高效,不难理解,为什么那么多的人工智能程序是采用 Lisp 开发的。
计算中对函数对参数求值时的顺序在 Scheme 中也是一种数据(正式的说法是一种 Scheme 对象),其中的“连续”(Continuation)可以由程序员当作数据保存起来,然后在后面的计算中反复使用它,即类似一种软中断的机制,这在 Scheme 中称为“当前连续”(call/cc),当前连续就是一种普通的 Scheme 对象。
因此综合运用当前连续和尾递归等基本工具,可以实现许多功能强大的机制,例如动态风、发动机,面向对象编程(通过特定的宏实现的发动机,Scheme 还可以实现消息传递机制),等等,并利用它们编写出多进程或者多线程的程序,乃至整个操作系统。 Scheme 是从原子性的工具出发,构建复杂程序的极好的编程模型。
RMS 对编程语言的精辟见解,后来我都收录进入了《Learning the GNU Operating System》一书和其他文章中。他对我后来设计“明”操作系统所产生的影响是巨大的,参见本书内篇中的“‘明’操作系统的设计思想”一章。
Lisp 语言程序员经常说,SGML 技术只是符号表达式的另一种“更丑陋”的实现方式。此话不假,因为早在二十世纪五十年代,Lisp 就已经将形式语言符号计算引入进了计算科学界。Lisp (或者 Scheme 语言)可以非常容易地处理 XML 文档的解析。
科学精神
纵观人类科学发展的历史,科学精神的作用是贯穿始终的。怀疑是科学创新和发展的源动力之一。科学精神提倡怀疑,不怀疑已有的陈规和定论,科学家们难以提出新的观点,也就不会有新的实践活动,科学就难以得到发展和进步。科学的重大发现或者进展往往是通过对实事的仔细观察和理性严密推演得出的。
自由软件鼓励创新,自由软件的创新机制来自对所提供的源代码的怀疑 —— 如果你对程序的功能不满意,就可以察看程序的源代码,修改之中的代码,从而得到更好的功能。 从这个意义上说,开展自由软件运动可以说是向世人普及科学精神的最好方式之一。任何人都可以自由地自行检查程序的源代码,动手来改进程序。
信息的不对称性
公开了程序的源代码,程序对用户就是透明的了(相比之下,专有软件的源代码是密而不宣的)。但是,源代码透明并不等于任何人马上就能理解代码的含义,要理解源代码的含义还需要大量的思维劳动。
编写程序这个行当可以说是一门工程技术,就像其他类型工程师的工作一样,但是,对于具有创造性的软件,编写程序的过程却更像是搞艺术创作。毫无疑问,软件作者首先必须要懂大量的知识,这一点与艺人表演一样,“台上一分钟,台下十年功”。成为一位合格的程序员,需要具有很多方面的基础知识和技能,这些知识和技能的积累都不是一蹴而就的,需要多年的时间,具体多长则因人而异。
软件作者在编写程序时,精力必须高度集中,很难在一个不安静的环境下写出高质量的软件来。这一点与艺术家们的工作很相似。刘勰在《文心雕龙》中就说过:“文之思也,其神远矣。故寂然凝虑,思接千载,悄焉动容,视通万里…… 故思理为妙,神与物游……” 程序员和作家的工作实质是很相近的,作家的写作结果就是就是文学作品中的文字, 程序员的创作结果就是程序中的源代码,两者都是狂练狂写出来的,我很少听说过某某著名作家是大学的文学系培养出来的,他们清一色都是通过写作成长起来的。同理,程序员也是通过编程实践的千锤百炼成长起来的。
在源代码从程序员的头脑写到文件的过程中,大量的信息是无法表达的,经验丰富的程序员会写很好的代码注释,但是即使加上了这些注释,还是远远赶不上程序员头脑中思想过的全部信息量,因此代码中含有的信息只是全部信息量的极少部分。当然如果连源代码这个媒介都不存在(像专有软件那样),那就什么都谈不上了 —— 信息量为零!
这正好是泛系理论可以大有作为的地方,因为只要具有足够的“智能基砖”和正确方法论的导引,人的智能可以放大,从源代码保存的少量信息量中反演出作者原来创作时的思路来。即使反演的结果含有的信息量还是比不上原作者的信息量,但是由于信息的冗余性存在,只要能够达到理解的目的,这种反演就算成功,反演就有巨大的价值。 如果反演可以推出比原作者头脑中更多的有价值的信息量来,那就是高级的人工智能技术了。
长海湖畔的沙滩上留下了脚印一串串, 我们离开了九寨沟。 这一行使我得知了 RMS 心中的很多想法,尽管他本人并不认为他当年设计那些伟大的程序时采用了什么特别的方法论。 但我想,如果他当年的创作思绪能作为规律在他的传记中揭示出来,那就有可能催生一批(而不只是一个)像他这样的天才程序大师来。
从观网看自由软件
心理认知距离的度量
一旦明确了信息在软件作者与软件用户之间的不对称性,那么如何打破作者与用户之间的这种不平衡,以达到信息量或者知识的对称(对知识的共享)呢?或者说,如何让用户以及其他开发人员理解原作者的软件,从而更好地使用以及完善软件呢?
泛系泛系,泛化之系。连网之络,开发之器。参证之轴,
律化之机。观控之法,联想之翼。一篑之助,点睛之笔。
泛系是研究泛关系、泛转化与泛对称的理论,它已为求得系统之间的泛对称性指出了方向:首先必须研究清楚构成智能基砖是哪些东西,这些智能基砖之间可以形成哪些泛关系,以及泛关系之间的转化规律是什么。在搞明白这些问题的基础上,就可以开始度量心理认知距离的大小或者长短。通过对心理认知距离的度量,就可以确定学习和理解的工作量,从而为用户指明填平不对称性的鸿沟需要实施哪些可以具体操作的步骤。
9 软件工具
GNU 工程的一个伟大之处在于,它构建了一个完整的操作系统,而正是在这个完整的操作系统中,从文本编辑器(Emacs)、编译器(GCC)、调试器(GDB)、库函数(GNU C Lib)、词法分析器(Flex)、句法分析器(Bison)、项目管理器(Make)、版本管理系统(CVS)、联机文档系统(Texinfo)等等,它提供了应有尽有的自由的软件开发工具。有了这些工具类的自由软件和开发环境,创作新的自由软件就有了真正实用的基砖。
泛对称的艺术
我通过探索 GNU 系统得出了结论:编程是泛对称的艺术。
在软件开发过程中,泛对称的例子是随处可见的。 GNU Emacs 中的少量 C 模块与大量 Lisp 模块就是一种泛对称关系。C 是编译型的语言,运行效率高,但是开发的速度慢;Lisp 是解释型的语言,扩展性好,但是效率上与 C 相比则显得不高。斯托曼的一个天才构想就是利用 C 编写直接与硬件作用的模块,例如屏幕显示模块,而涉及文本编辑的模块则几乎统统用 Lisp 语言编写,而且将 C 模块代码的函数名写得像 Lisp 的函数名,所以你不仔细研究模块内部的细节,单从函数名上是很难区分它们两者的,而这正是作者的目的,它巧妙地处理了子模块之间的异同关系,在满足效率的同时,也充分保证了系统应该具备的扩展性。
GNU 的编译器 GCC 和操作系统内核中也大量存在类似的泛对称技术。推而广之,由于计算机最终是为人服务的,各种程序实际上都是直接或间接地在硬件系统与人之间构建泛对称。
10 从观网看自由
除了技术的自由,自由软件运动明确提出它的目的在于改革社会。在自由软件的游戏规则中,数学上的递归得到了彻底的使用,递归的威力让专有软件出版商们胆战心惊,他们惶恐地将自由软件的游戏规则斥之为具有“传染性的病毒”。
软件的许可证是一种实施权利的形式。自由软件许可证背后的哲学思想来自于对自由与平等人权所作的深入的理性思考。我花费了相当多的时间来琢磨它。
古往今来,人类社会总是处在不断的动荡不安之中,太平盛世的日子总是屈指可数的。偏见与歧视、傲慢与强权,一切的根源最终都可以看作是人与人之间,或者社会里的一个群体与另一群体之间的不平等造成的。
中华文明有长达五千多年文字可考的历史,在世界史上,中国以两千年跨度的封建社会为显著特点,尽管朝代更迭多次,但是封建社会的结构却出奇地稳定,专制的封建社会压抑民主和自由,结果是尽管在人类文明发源后的一个相当长的时期内中国的科学技术领先于西方,但是近代的科学与技术的革新大多却是出现在西方。由于生产力水平的差距的存在,西方社会的文明已经领先于东方,这是一个客观事实。
为了赶超西方的文明,就有必要探索西方文明赖以兴起的平等与自由的理念。当然,追求平等与自由的理念在中国自古就有之,自近代以来,一直有大量的学者探索和比较中西方对平等和自由理解的差异和相通之处,并提出了各种见解。在这些探索的结论中,我认为至今仍以严复的论述最为精彩:
“夫自由一言,真中国历古圣贤之所深畏,而从未尝立以为教者也。彼西人之言曰:唯天生民,各具赋畀,得自由者乃为全受。故人人各得自由,国国各得自由,第务令毋相侵损而已。侵人自由者,斯为逆天理,贼人道。其杀人伤人及盗蚀人财物,皆侵人自由之极致也。故侵人自由,虽国君不能,而其刑禁章条,要皆为此设耳。 中国理道与西法自由最相似者,曰恕,曰洁矩。然谓之相似则可,谓之真同则大不可也。何则?中国恕与洁矩,专以待人及物而言。而西人之自由,则于及物之中,而实寓所以存我者也。自由既异,于是群异丛然以生。粗举一二言之:则如中国最重三纲,而西人首明平等;中国亲亲,而西人尚贤;中国以孝治天下,而西人以公治天下;中国尊主,而西人隆民;中国贵一道而同风,而西人喜党居而州处;中国多忌讳,而西人众讥评。其于财用也,中国重节流,而西人重开源,中国追淳朴,而西人求欢虞。其接物也,中国美谦屈,而西人务发舒;中国尚节文,而西人乐简易。其于为学也,中国夸多识,而西人重新知。其于灾祸也,中国委天数,而西人恃人力。若斯之伦,举有与中国之理相抗,以并存于两间,而吾实未感区分其优绌也。”
严复的西学,“苟扼要而谈,不外学术则去伪存真,于刑政则屈私以为公”。他是中国历史上第一位明确提倡科学与民主的学者,他晚年面对社会上强大的封建势力而生的退缩立场与复古无损于他的一生学术思想的光辉。
在欧洲文艺复兴特别是法国大革命之后,人类理性思维能力逐渐成熟,终于发展了可以驾驭自身发展规律的相当完整科学体系。我们不能苛求严复,因为他的时代集合论还没有在理性思维体系中取得公认的基础性地位,而今天我们可以利用这个理性思维工具清楚地认识到,平等的概念可以使用数学中的等价关系概念来精确刻画。对于社会系统,以自反性、对称性和传递性定义的等价关系是指在集合(社会)中的每一个元素(个体)都处在一个同等的地位上,特权的清除依赖于每一个个体对社会中其他个体一视同仁的尊重,在这种理想的社会中,个体享受自由的权利与与个体尊重他人义务是同时存在的,它们两者使得自由具有天生的两重性。在具有等价关系的社会系统中,无论如何进行聚类,得到的群体或者个体都具有相同的自由度 —— 等价关系是正确理解人权的理性思维工具。
要想使整个社会系统中的每个个体相等地具有相同的权利和义务,递归的实施是最有效的手段之一。因为在这种社会动力学系统中,递归能保证系统中普遍的等价关系的建立和存在。以“版权属左”(Copyleft)为基础建立的自由软件的游戏规则,巧妙地使用了递归的力量,以期达到在社会中普及自由之目的。
东山再起
“一、百、万”工程(MNM Project)
2001 年 3 月 5 日,我发起了“一、百、万”工程。尽管发起这一工程的导火索有某种偶然的成份,但是工程的提出只是迟早的事情,因为我对自由的涵义和价值已经理解得相当清楚。以前的曲折经历告诉我,没有自由,特别是缺乏对自由进行保证的一整套制度,想取得成功只是一种幻想。自由关系着所有人的福址。一个人的商业成功可能满足他或她一时的欲望,但是却无法保证实现社会的普遍繁荣。社会系统里的大量“人为与门”的存在,极大地束缚了生产力的发展和社会的进步,浪费了巨大的资源,是造成社会系统的显克和灾变的根源。 要想清除这些不合理的人为与门,一个有效的办法就是通过向社会灌输自由的理念,让全体社会成员都能理解自由的重要性并能捍卫之。当社会里自由的观念深入人心得到普及时,一切制约生产力发展的“人为与门”都会在它面前土崩瓦解。
尽管我不是职业政治家,无法通过官僚体系了实施我的理想,但是我们现在正进入信息社会,在信息社会里,借助技术和网络的力量,传播自由的理念要比以往任何时候都来得容易。网络,特别是人与人之间的网络,是铲除各种“人为与门”的有力武器。
注意,这里的“一、百、万”不是指数字的一百万,所以有“‘一、百、万’不是一百万”的诙谐说法(MNM's Not a Million), 正好印合了黑客界对 GNU 工程的递归命名法则 (GNU's Not UNIX) 的传统。 实际上,“一、百、万”工程是下面三个方面工作的简称:
“一”字工程是指创建一个研究院,也就是“自由软件中国研究院”。
几个泛系学友曾经建立过武汉泛系工程研究所,我曾经试图将这一研究所改造成自由软件中国研究院,但是不是所有的泛系学友都理解我提倡的自由观念及其意义,他们不想改变原来的章程,因此我只好另起炉灶,自己动手与 RMS 一起来组建自由软件中国研究院。
尽管目前组建自由软件中国研究院还面临许多问题,例如,作为一个在民间成立的科学研究组织,它在法律上它无法得到《捐赠法》的有效保护;作为一个社会公益事业性质的组织(—— 它开发的自由软件人人都可以自由使用),它无法享受到像 FSF 在美国得到的税收政策(在美国,FSF 是免税的,而且捐赠人向 FSF 的捐赠可以从捐赠人或者捐赠企业的所得税中扣除),但是这些困难都不是我们停止向社会传播自由的理由。
工程启动后,它即着手建设一系列的工程,这里是项目的一个简要清单:
(一) 开发高质量的矢量汉字字库。
汉字字库的设计是排版服务时所必需的。汉字字库无疑是中国人使用计算机时必须拥有的东西。遗憾的是,中国现在没有一种真正自由意义上的汉字字库,无论是终端上的点阵字库,还是高质量的用于印刷的矢量字库。
“一、百、万”工程将开发高质量的汉字字库。
PostScript 技术已经是一项非常成熟的技术,前面提到过,自由软件基金会已有工具软件支持它。尽管 ISO 有 SPDL 语言规范(ISO/IEC 10180),但是很遗憾, ISO 标准是专有的(很多人可能还没有意识到这一点),而且 SPDL 没有得到工业界的广泛支持。因此我们迄今只支持 PostScript 技术。但是按照西文字库的设计方法来设计矢量汉字字库,实践中还有不少问题有待解决。这一工程项目的难度除了要熟悉厚厚的 PostScript 语言规范各种细节之外,关键在于工作量十分庞大,因为汉字的数量很多,仅仅 GB2312-80 就有 6,763 个汉字。而且对于实用的印刷系统而言,仅有一种字体是远远不够的,需要至少四种不同的字体才能基本满足实际需要。
我根据长期学习数学的背景和经历,在汉字字库的设计技术上另辟奚径,独立发明或者发展了在小波分析和小波变换的基础上设计汉字字库的新方法,这一方法从根本上改变了汉字字库设计的技术的落后局面。详细情况,可以参读本书杂篇中“小波变换与汉字字库的设计”一章。
另外,我长期研究了汉语的特点,从汉语理解出发,综合性地研究了语言理解的规律,并提出了一个泛系语言学模型,对“计算机理解语言的实质是什么”的问题有了一个新的研究方向,详见本书杂篇中“语言理解中的泛系概念”一章。
(二) 新的操作系统
我们目前面临的计算机工业的危机主要表现在缺乏自己的智力水平可以把握的平台上,包括硬件平台和软件平台两者。冰冻三尺,非一日之寒。 对于软件平台中的最底层,中国人在开发操作系统的道路上,因为犹豫不决和决策失误浪费了很多时间,走了大量的弯路(在我看来根本原因是缺乏对自由的理解)。由于长时间没有硬件平台的直接支持,自己又不重视基础研究的投入,也不重视技术开发力量的储备,人才的流失严重,因此在短期内开发出一个成熟的操作系统是相当难的。
由于网络化的信息时代操作系统作为平台的重要性日见突出,因此,“一、百、万”工程知难而上,决定自己开发自由的操作系统, 其技术路线是复活 Lisp Machine,也就是将编程语言扩展成为一个完整的操作系统。
新的操作系统称为“明”(MING/OS),这个名称来自一位朋友的推荐 (MING Is Not GNU)。它是面向未来新的芯片体系开始设计的全新操作系统,即以基于堆栈的芯片为默认平台,采用“元内核”(Meta-kernel) 的体系,按照 GNU GPL 发布。它追求出色的实时反应速度,内置的健壮网络功能,以及支持图形用户界面等一大堆技术性能。
除了元内核的基本特性,“明”系统的另一大特色是在操作系统层次上可以保证免受病毒程序或者恶意攻击程序的破坏,因为我在泛系原理的指导下,受到俄罗斯学者的研究开发工作的启发,建立了什么是“安全的计算机系统”的完整的数学模型和计算模型。11 由于它在数学研究上的前沿性和成熟性,特别我的尺度论的成功应用,我自以为这项研究工作的学术价值完全可以与任何一位获得图灵奖得主的工作相媲美。
(三) Scheme 实现版本
Lisp Machine 在二十世纪八十年代曾经颇为风光过一阵,它曾经是黑客们的掌上明珠,后来因为市场和技术等原因,从操作系统家族中消失了。
影响 Lisp Machine 普及的技术原因在于 Lisp 语言环境的运行速度不彰,Lisp 语言有一种内存垃圾自动回收机制,早期计算机上的内存是非常昂贵的,计算机系统上内存容量是很少的,属于计算机系统上最稀缺的资源。Lisp 在实现时考虑到了这一点,它将程序运行过程中产生的所有不再使用的内存清理干净后重新投入计算,在内存垃圾回收时,Lisp 语言解释器往往不得不暂停下来等待新的可重用的内存,因此速度上受到很大影响。
但是, Lisp 语言设计机制中的内存垃圾自动回收(Garbage Collector, GC)本身却是一项非常出色的技巧,它本身并没有什么错。编译型的语言,例如 C 或者 Pascal,需要程序员自己来管理内存的分配和回收,因此编程效率低下,而且容易出错。现代的许多语言都在模仿 Lisp 的内存垃圾回收机制,例如 Java 语言中就有从 Lisp 借鉴过来的类似内存垃圾自动回收机制。
由于电子学工艺的飞速发展,今天的计算机内存部件成本已经大大下降了,而且内存垃圾回收的算法也有了巨大的改进,因此通过采用动态的垃圾自动回收技术,即一边运行程序(而不是让程序运行暂停或者进程挂起),一边回收垃圾,Lisp 的运行速度可以大幅度提高。因此,现在很少听到对 Lisp 运行速度的抱怨声了。
当然,还有一些技术可以提高计算速度,例如,将基本的直接与硬件交互的模块,采用汇编语言编写,成为可以直接执行的原子函数进入 Lisp 的 REPL (即“阅读 -> 求值 -> 打印”的循环),由于内存部件的低成本,因此基于堆栈的芯片上已经集成了大量的存储器,算法可以使用硬件而不是单纯靠软件来实施,因此计算机运算速度可以大幅度提高,而且程序小巧而紧凑。
但是,正如前面提到的,标准的 Common Lisp 太庞大,“一、百、万”工程将采用自由的 Scheme 实现版本来开发操作系统,复活 Lisp Machine。我将针对最高的 Scheme 规范版本(R5RS),加上一些自己的扩展特性,来开发自己的 Scheme 实现版本。我的 Scheme 实现版本中有大量的原子函数采用一种我发明的称为 ANA (而非 C 的)编译型语言编写,这种语言吸纳并综合了 Fortran、APL 和 Forth 三门编程语言各自的优点,并加入了对安全性的支持,详情可参见本书杂篇中有关内容。
(四) 桌面工作环境
当今任何主流的操作系统上都有图形用户界面(GUI),GUI 以一种直观的方式为计算机用户提供了观控框架,绝大多数计算机用户喜欢在这样的环境下工作。
自由软件社团广泛地采用了原创自 MIT 的 X Window System,目前几乎清一色地在 X Window 系统上加入自己的图形界面元素构成一个完整的桌面环境,GNU 系统上是 GNOME (基于 GTK,一种以 C 语言开发的库)和 KDE (基于 Qt,一种以 C++ 开发的类库)。GNOME 的设计思想卓越,它采用了 CORBA 技术,将面向对象的编程技术和分布式计算结合在了桌面环境中。KDE 则是建立在 Qt 这一 C++ 类库基础上的桌面环境,而面向对象的思想是很适合具有图形用户界面的应用程序开发的。
无论是 GNOME 还是 KDE,它们都工作在底层的 X Window 系统之上。 X 最初提供了两种等价的库,一种是现在通用的以 C 编写的 Xlib; 还有一种是现在几乎废弃的 CLX,即利用 Common Lisp 编写的 X 库。这两种库都实现了对 X 协议的支持。“一、百、万” 工程将在 CLX 的基础上,利用 Scheme 来改造 X。
得到的图形控件集合称为“自由秋千”。它对传统的“模式-视图-控制”机制作了改进,采用了类似 Java Swing 中采用的面向对象的方法来设计各种图形用户界面需要的控件集。详细情况可参读本书杂篇中“自由秋千的实现”一章。
这一改造的目的不仅仅是得到一个可以使用的类似于 X 的窗口系统,而且有更高的技术目标 —— 它要将基于操作系统的桌面设计得像一个 Web 浏览器, 将分布式的 Web 带入操作系统的桌面,从而得到一种新的泛对称。在这一桌面环境下,任何对象无论它在本机上,还是在网络远程的什么地方,均可利用桌面对计算进行观控。观控是建立在符号表达式传输协议(Symbolic Expression Transmission Protocol, SETP)的基础上的。集成的环境称为 NeoTEX,它试图综合 TEX 的排版算法、符号表达式的计算思想和类似 PostScript 技术的表达形式。 大量的泛系概念将采用进入这一桌面环境的设计中,详细情况可参考本书杂篇中“符号表达式传输协议的实现”和“NeoTEX:三合一的浏览器的设计”两章。
“百”字工程就是要创作几百本自由的计算机文档,并把它们当作图书出版。
“一、百、万”工程将采用现代先进的出版技术来创作自由的计算机文档。我已经对 TEI 规范投入了相当的时间进行研究。TEI 是一套基于 SGML/XML 的规范,其支持的文档类型比 DocBook 更加丰富(例如 TEI 规范定义了诗歌、字典、小说等文档类型),在国际学术界得到了相当广泛的认可和支持。
采用 TEI 编写的自由文档可以存放在数据库里,针对不同的输出要求,对 TEI 文档进行解析和格式化,就可以得到不同的输出结果。一旦有了高质量的自由汉字字库开发成功,我们就可以开始出版自己的中文文档。这些文档既可以从网上自由传播,又可以作为纸媒体印刷出来销售,为工程积累开发资金。
“百龄影徂,千载心在”。只要有一批高质量的计算机文档,那么我们的工程就会后继有人,他们可以在我们的肩膀上继续向上攀登,而不用从头做起。
“万”字工程就是要在中国培养几万名具有创新精神的、可以动手开发自由软件的工程师。
“一、百、万”工程非常庞大,需要大量的人力物力的投入,因此我们希望有大量的软件工程师参加进来。目前这方面的人力资源还远远不够,因此我们要利用我们在心理认知距离的度量中获得的研究成果大力开展培训工作,利用多种手段培养几万名可以动手开发自由软件的人才。只有具备了大量理解了自由涵义的人才,我们的工程才有蓬勃发展的保证。自由软件运动在中国才有成功的希望。
至道在微,变化无穷,孰知其原!……恍惚之数,生于毫厘,毫厘之数,起于度量,千之万之,可以益大,推之大之,其形乃制。
“一、百、万”工程发起的意义绝对不仅仅是像一些人期望的那样创造一些高质量的具有民族品牌的软件,解决我们民族面临的软件危机,而且在于,自由软件运动从此在中国的发展不再是属于一些黑客个人自发的业余爱好,或者几家公司手中的赢利工具,而是变成了一种自觉的行动。这个工程有它完整的宗旨、既定的技术目标,计划纲领和具体行动。它通过技术手段来传播自由的思想和理念,达到创造更加美好社会的目的,它或多或少像是一种柏拉图式的政治,尽管参加工程建设的人将不是来自政府的公务员。
重朔事业的第二春
在 IT 界的 .com 泡沫破裂之前,市场上有大量的 IT 公司幻想着急剧膨胀公司规模,然后上市圈钱,以达到迅速发财致富的成功目的。 我们不打算这样做,因为我们的目的是推广自由,而且是通过泛系理论的指导自觉地创建成功的商业模式来推广自由,这是我的第二次创业。有了以前的正反经验和教训,加上泛系理论已经提供了足够多的方法论供我们采用,这次创业将涉及更宽和更深的范围,工程将集中在研究、出版和培训三个方面展开,这正好是“一、百、万”工程的三个既定发展方向。工程的资金来源主要依靠我们提供的服务:
(一) 出版《自由软件》杂志和自由软件图书
经过一年的努力,我于 2002 年开始出版《自由软件》杂志(free SOFTWARE),这是目前全球第一本关于自由软件的英文杂志,这一杂志得到了自由软件基金会的同行和广大自由软件社团的直接支持。它有电子媒体和纸媒体两个版本,两个版本的杂志都可以自由的拷贝和再发行,电子媒体发表在我的网站上: http://www.rons.net.cn,其纸媒体版本的杂志的销售收入用于支持“一、百、万”工程的建设。
由于在大陆成立出版社存在诸多障碍,我开始思考去其他的国家或者地区发展自己的出版业务,以与国内那些不入流而充满铜臭味的专有出版商保持距离,直接参与同国际出版社的直接竞争。
在我看来, 出版图书和发行软件都是出版活动,都是作者体现权利的方式。根据自己在学习 Scheme 方面的心得体会,我们开始尝试一种与现在所有发行版本不同的 GNU 的发行版,称为 GNU4U。 它是对 GNU Make 内秉的回溯的思想进行提炼之后形成的。详细情况可以参读本书杂篇中“GNU4U:一种新的 GNU 系统发行版”一章。
(二) 排版服务与电子文件
TEX 系统经过多年的发展,已经非常稳定了,我也摸索了多年,对其内部结构已经了如指掌,我在 2000 年组建了中文 TEX 用户俱乐部(CTUG, Chinese TEX User Group)。目前,CTUG 还在成长壮大,我们在 CTUG 的基础上组建了一个排版工作室,《自由软件》杂志的排版任务就是这一工作室承担的。除此之外,它面向世界市场提供高质量的商业性排版服务。
CTUG 已经于 2005 年 8 月在武汉承办了 “TUG 2005 暨国际排版技术大会”,这是自宋朝的毕升发明活字印刷术之后第一次由中国民间举办的关于排版的科学技术国际性会议。 TEX 的影响早已超出了一个科技论文和科技图书排版工具的范围,它本质上是一个编译器,因此熟悉它的设计思想对于掌握计算机科学技术的核心内容是有巨大帮助的,这此会议已经成为中国在印刷技术领域的复兴并赶超国际信息技术的一个新的起点。
另外 TEX 可以直接生成 PDF 文件,理论上也可以生成其他形式语言描述的格式的文件。结合这种自由软件技术,我们可以在生成电子文件时加入数字签名,或者对机密数据进行加密,加密的电子文件可以在互联网上传递,并由合法的收件人进行解密,这种商业模式可以在涉及电子交易的许多方面应用上。这一切都是以自己的数学修养为基础,结合具体的应用背景而开发的,它本身将从某个角度证明自由思想和自由软件的巨大市场价值。
(三) 讲授自由软件课程
实际上,信息不对称的一些原理已经得到经济学家们的广泛认同,2001 年度的诺贝尔经济学奖金就颁发给了三位在这方面研究取得了突出贡献的学者。
应用前面提到的信息不对称的原理,通过对心理认知距离的度量研究,结合自己长期学习和钻研自由软件的亲身体会,我开发了一套冠以 “黑客道”(Hackerdom Training Program, HTP) 的自由软件培训课程,详细情况请参见本书外篇中“黑客道与教育传统的复兴”一章。
这套课程分成三个阶段,分别对应着程序员学习道路上的三个进阶,像围棋运动员具有相应的段位一样,黑客道学员通过学习也可以获得初段、中段和高段选手等九个段位。我们还鼓励全国各地的自由软件爱好者在当地组织“自由软件学习小组” 以及“自由软件运动讲习所”。在条件合适的地方,我们还可开设“黑客道”的特许培训点。
通过学习这一套课程,学生可以在相对较短的时间内掌握自由软件的工作原理,具备动手开发自由软件的能力。我们收取的学费除了支付教员的劳动之外将用于工程的建设。这一系统而全面的多、快、好、省的教学方法推广起来,将彻底改变中国高水平的系统程序员缺乏的面貌。
“春三月,此谓发陈,天地俱生,万物以荣……生而勿杀,予而勿夺,赏而勿罚,此春气之应,养生之道也。”
我们希望所有珍爱自己的自由和权利的人都来关心和支持“一、百、万”工程的建设,共同营建我们自由的春天。
结语
从一个初出茅庐的热血青年,到成长为一个为自由而奋斗的战士,我已走过了十多年的曲折历程,我有幸在这十多年的时间中,得到了两位来自不同领域里的世界级大师的指导和关怀。我不愿将这段难忘的经历封闭起来视为自己私有的财富,而是写出来,希望引起社团里的每一个同志对自由的进行思考,或者从中得到某些启示。
我们生活的时代处在一个信息社会刚刚开始的门槛上,这一时代不同于以往的农业社会、工业社会,信息社会中的社会成员将因技术的飞速发展拥有前所未有巨大的自由,也正是因为如此,这一社会存在的基础 —— 自由 —— 才显示出比以往任何时候与人都更加密切的关系,值得我们去珍视和维护。古往今来,对美好自由的向往是人类永不停歇的追求的源动力,让我在此填词一首来与大家共勉并结束全文:
沁园春·武汉12
淫雨乌蒙,互避龟蛇,楫舸竖横。
望半桥似断,烟渚不见;
大江紧锁,百鸟踪蒸。
白发渔樵,寒风凛冽,觅钓披蓑并篓簦。
沉暮霭,遍江南巷陌,无缝天篷。
搏击赤壁艟艨。
磨钝角、十年得利棱。
忆迷学少年,牛犊勇盛;
得书受训,愚昧生萌。
数论集合,群环及域,戥物皆成度量衡。
还企盼、上华山极顶,舞剑削峰!
版权所有 © 2002,2003,2004,2005,2006 洪峰
第一版初稿于 2002 年 4 月 20 日, 谷雨时分;
2002 年 5 月 12 日, 第一次修改;
2002 年 5 月 16 日, 第二次修改;
2002 年 12月 18 日, 第三次修改;
2003 年 1 月 10 日, 第一版定稿。
2003 年 8 月 27 日,第 1.1 版。
2003 年 12 月 15 日,第 1.2 版。
2004 年 10 月 18 日,第 1.3 版。
2004 年 11 月 12 日,第 1.4 版。
2005 年 1 月 20 日,第 1.5 版。
2006 年 2 月 20 日,第 1.6 版。
依照 GNU Copyleft 许可证的条款,本文可原封不动地拷贝和自由地再发行,但在拷贝和再发行的拷贝中必须原封不动地含有这段版权声明。
1. 我后来得知吴学谋教授是国内研究模糊数学的先驱。 在他的影响下,有四位年青学者先后当选了中国科学院的院士。
2.《集合论》,方嘉琳编著,吉林人民出版社 1982 年出版。方嘉琳教授还有其他一些数学译作, 均颇见功底。
3.《世界数学家思想方法》,解恩泽、徐本顺主编,山东教育出版社 1993 年出版。
4.《C 指针编程的艺术》英文版名称为 “Programming with C P ointers”,MNM Press 出版。现在我的这部著作是“黑客道”培训的三大教材之一。
5. SuSE 至今仍然是最为流行的 GNU/Linux 发行版本之一,在全球社团,特别是欧洲的自由软件社团保持着很大影响,后来被 Novell 公司收购了。
6. 有关这一主题的详细展开超出了本文的范围,有兴趣的读者可阅读本书外篇中“加法、乘法与乘方”一章。
7. 参阅本书《外篇》下部的“排版、印刷和网络出版”一章。
8. 理查德·斯托曼于 2001 年被推选为美国工程院院士,在此之前他是瑞典皇家科学院荣誉院士。
9. 参见本书《外篇》下部的“黑客道与教育传统的复兴”一章。
10. 硬件系统设计技术内部也存在大量的泛对称性,但是这里就不去涉及了,感兴趣的读者可以参考外篇中的“二月春风似剪刀”一章。
11.《“明”操作系统的设计思想》一文的英文版最早发表于 《free SOFTWARE》期刊上。本书《内篇》也收录了根据这篇文章的思想而写作的中文版。
12. 注:下片中的“戥物皆成度量衡”中的“度量衡”应当泛系尺度论解。 “戥”当作精密测量解。