第一代程序员王小波

喜欢读书的人,对王小波都不陌生,他是中国最富创造性的作家之一,他是中国近半世纪的苦难和荒谬所结晶出来的天才,他英年早逝。他的作品对我们生活中所有的荒谬和苦难作出最彻底的反讽刺。他还做了从来没有人想做和做也没才力做到的事:他唾弃中国现代文学那种“软”以及伤感和谄媚的传统,而秉承罗素、伊塔洛·卡尔维诺他们的批判、思考的精神,同时把这个传统和中国古代小说的游戏精神作了一个创造性的衔接。

对于王小波也就读过一本《一只特立独行的猪》,让我对王小波产生兴趣的是在读到《Mac Talk》这本书里写到王小波除了作家的身份外,还是一名程序员,并且是一名很牛的程序员。以下是一些王小波和程序相关的故事。

wangxiaobo

多数人知道王小波是小说家,部分人分不清财经作家吴晓波和小说家王小波是不是一回事儿。却很少有人知道王小波可以算的上中国早期的程序员,在 90 年代初的时候因为国内应用软件缺乏,爱捣鼓东西的王小波利用闲暇时间学习了汇编和C语言,编了中文编辑器和输入法。中文编辑器和输入法任何一个都是大牛级的 GEEK 才会去尝试的东西,比如求伯君。王小波通过卖软件还挣了些钱,当时很多中观村的老板要拉他入伙,当然写代码这种来钱快的活对屌丝王小波还是有吸引力的,所幸他还是拒绝了人家。

王小波一个写小说的为什么沦落(/升级)成了程序员?这还得慢慢说。王小波大学在人大学的是贸易,毕业后在人大当了几年老师。后来去了美国匹茨堡大学读经济的研究生,到那老师跟他说你就是一写作的奇才,以后必能称霸话语文坛。老师又说你在我这什么都不用干了,好吃好住,毕业证照发,抓紧时间写小说。学成归国,王小波接着又回到人大做统计学的讲师。

因为做统计,各种分析工具是必不可少的,以前人手工计算,有了计算机当然最好使用计算机,基本理工科的都知道用 MATLAB 做个毕设和作业是多么重要。所以当时计算机对王小波的工作是相当重要的,但是 90 年的时候,软件相当稀缺,电脑又相当不智能。王小波不得不自己写软件,当然开发软件也不是那么简单,所以他先是学会了 FORTRAN,汇编,C等各种语言,接着又要学习数据结构,算法的相关知识,还有编译原理。

在做出中文编辑器和输入法,解决了自己的需求之后,王小波对写软件的兴趣已经没有多少了。因为他觉得写软件可以赚钱,写小说同样也可以赚钱。处于一个程序员的修养,王小波还是不断地从数据结构和算法来优化这两个软件。93 年的时候,王小波买了一台 286,这在当时是一台奢华无比的机子了,他自己也是这些认为的,高兴得一塌糊涂。不过这台顶配机子还是满足不了王小波的要求,后来他把时间花在了不断地去优化这台机子上面。

王小波可以算的上是个 GEEK。大学学的贸易,后来又学化学,再后来转到了数学系。他的同学形容他解数学题就像杀猪一样,特别来劲,一道一道解决,那感觉可能就像打 CS 拿人头一样爽。不过解多了也觉得没意思。

王小波小说里的男主角基本都是理工男,除了天天意淫还有一些奇怪的想法。其中一些还有自己的发明,比如《未来世界》里的王二是个工程师,整天想着和单位一起研制的永动机,还有《红拂夜奔》里的李靖发明过一个巨大的开跟号机器,在战场上,这台机器运转起来挥舞着杠杆边开跟攻击敌人,有的人死在根号 3 下,有的人倒在了根号 5 下。这些都只有 GEEK 才会想得出来。

王小波干过很多事情,下过乡,考过大学,出过国,学过经济,打过代码,成了小说家,去世的那一年完成了心愿做了编剧。总之不管他干了什么,他身上让我们尊重的还是独立之精神,自由之思想。

以下内容是从王小波和朋友的书信里收集了他所做软件的各种信息,汇集起来,可以了解小波在软件方面的造诣。顺序按照原文的书信顺序,应该也就是时间顺序。

  1988 年 12 月。

回来之前我曾往人大一分校计算机站写过一封信,问他们可要带什么软件,主管的工程师回了封信,我没收到。回来之后人家还提到此事。现在国内软件一面混乱,又逐渐有形成市场之势。首先以年兄学统计这一事实来看,回来做事非有会用的软件不可。Macintosh 根本就没打进中国市场,你非带几个可用的 IBM 微机软件回来不可。至于什么机器上能使倒不必太担心。我这个狗屁计算机室,IBMPS/2 就有二台。AT 机也不少。

SASSPSSStatistx 都有,可代表国内上等一般统计微机房的水平,可就是少了一种宜于作统计的语言。年兄如有 APL (Aprogramminglanguage)之 IBM 微机本,可给我寄 copy 来。我在美还有一个户头,连 manual 复印费一并写支票给你们。Glim 我也没有,如年兄有便人可捎来。邮寄太贵,能省就省吧。

1990 年 1 月。

我现在正给北大社会学所做统计,手上除 SPSS 没有可用的软件,国内这方面很差。我现在会用 FORTRAN,编统计程序不方便。闻兄谈起你们用S语言,不知是否好用。工具书也不知好找不。不管好歹,烦兄找个拷贝给我,要就算了。照我看只要能解决各种矩阵运算就够:当然也要有各种分布函数。反正也是瞎胡混,我就算努把力,少混点吧。

  1990 年 5 月。

晓阳到底也加入了 IBM 的行列。照我看,苹果机还是买不得。因为 IBM-PC 的兼容机队伍庞大。INTEL 又总能推出新一代 CPU,将来还有大发展。买微机钱的投资是大事,时间、精力投资更为巨大,买 386 兼容机是明智之举。 我最近可能调入人大,投奔班长。最近胡思乱想想出了个理论来,还没认真推导,大抵是设立多个 Dummy (两分变量)构成的联合分布,其合计样本点构成一球面,点到点的距离以总误差计算。所以一样本点的对点就是它的否,误差最大。其余的正在想。

  1991 年 2 月。

兄谈及 IBM 中文软件不可用,估计是图像版有问题,可至有 Colormonitor 之机器上一试。Mac 机国内亦有,唯不及美国多也。

1991 年 3 月。

你寄来的严氏 2.0A 我也收到,还没用。因为一者是 3 盘要倒,二者我自己写的 WK 也有重大进展。我也自做了词组功能,是棵B树,我觉得自写的软件自用,感觉是最好的。词组用处不是很大,主要用于定义人地名等专有名词,但是严氏软件对我还是有重大启示,拼音加四声是个极好的主意,写起东西来声韵铿锵,与其他软件大不一样。自写一遍,从分页到编辑键分配,都能合乎自家习惯,不是存心狗尾续貂也。如能见到严氏,可代为致意。

  1991 年 5 月。

前次寄来软件,上机一试发现非有浮点处理机不能运转。因为缺少软件,国内机器一般不装协处理机,冷不丁撞出您这一件来,搞得不大有办法。

  1991 年 5 月。

闲着没事搞了个发明。原有中文软件是用线扫描方式出汉字。我做了一个用调整字模发生器方法出汉字的系统,自以为很优越,可惜还未找到用户。用此法可以很容易地在西文软件上出中文窗口,还在 SPSS 上加了几句骂娘的话。

  1991 年 9 月。

晓阳托人带来软件,周转很多日才到手里,软盘有些污损,坏一片烂一套,不可用矣。但是十分感念晓阳的好意。去年托人带来的中文软件(严氏 By×),我用着尚好,而且又用C语言仿编了一个,程序是我的,拼音字典是人家的,执此招摇撞骗,骗了一些钱。干这个事,熟悉了C语言,都是拜小阳所赐。

 1991 年 9 月。

不过现在我对微机已无兴趣,因为发现写小说也可赚到钱。

 1992 年 1 月。

编译程序一盘(有说明书,见 shou),源程序一盘。我的音典与严氏同名内容不同。功能上与严氏的近似,但是多了改进拼音字典的功能。按 F4 后可以把拼音重定义。也可加字,在拼音拣字时,按 enter,就进入国标拣字,拣到的字加入字典。这个软件由五个c语言(另有两个头文件)和一个汇编语言文件组成,可用 turboc 编译,但是汇编部分不必重汇了,可以把汇编文件写成的部分形成的 obj (我的磁盘上叫 wk5.obj)放到硬盘上,与其它c语言文件分开,用 turboc 的 commandline 编译器编一下,命令如下:tcc-mc-ewka:wk*.ca:wk5.objgraphics.lib 形成 wk.exe,但是必须有 yindian,cclib,egavga.bgi 三文件支持才工作。*.bgi 是图象板参数表,可以包括到*.exe 内的。但是要改改程序。你的机器好。我还用个老掉牙的 XT 机,简直落伍了。

turbo.c 你一定能找到。假如你用过其它c软件,有一点要提醒你,turbo.c 有一种极讨厌的特性,就是你在一个函数内 alloc 的内存,退出该函数时不会自动释放;还有一点也很糟,就是模型问题,在大模型下写的程序,到了小模型上一概不能用,我的程序是在 compact 模型下写的,就不能用 small 来编译,这两条是可以气死人的。

据说可以用 far,near 之类的前缀说明指针,其实是屁用不管。我干了一年多c,得到的结论是微机c还不能使人快乐,有时叫人怀念汇编。

f1 是提示键。我的打印机有汉卡,F5 你恐不能用。这个打印机是人家借给我的,性能非常之好,(美国 amt-525);但是不知能用多久。这个程序我还在修改中。与严氏的软件比,在硬的方面的优点是达到了很好的紧凑性,现在编译后是 55k,扩展余地大。缺点是图象更新没他的快(在我的老爷机上可以看出区别),不知他是怎么搞的,我很佩服。我的图像部分也是汇编写的,反复优化,也达不到他的水平,不得不承认技不如人。另外,磁盘文件的处理,我也写不好。还要请阳公指教。

  1992 年 7 月。

小阳的信又用 MAC 机,看来你的机器不少,可喜可贺。我这一台老 PC/XT,用了六年换不下来,太惭愧,近来老想狠狠心,花几百块买个 286 主板换上,老婆又不同意,真是要命了。 我自编软件又有进展,把一部分程序递归化,出现了很新奇的特征。等我换了 286,就需要能写虚址方式的C语言了,未知晓阳能否找到?

1992 年 9 月。

你给我寄的软件因为是三寸盘,在这里很不通用,所以我也没用。盘上有什么,至今不知。我用C编的软件已经用熟,并做出了各种写小说的工具,别人的软件已不用了。现在主要是写书赚钱。从今年初开始写长篇,首先做了写长篇的专用软件,现在基本调通,开始写了。

1992 年 9 月。

递归论我没学过。我哥哥大概懂一些。我和你说的大概是计算机内的递归算法。我在美国读的书都是关于机器的。有关算法、数据结构等等,全在国内看的,也不知英文叫什么。在C语言里是指在一个函数(相当于其他语言的 subprocedure)内调用同一个函数。一般程序书里都能查到。

所谓保护方式,是指 286protectedmode。因为一般的 IBM 机器,不管是 386,486,只要是 dos 操作系统,实际能操作的内存只是 640K,相当于一个较快的 PC 机。想要用到 640K 以外的e×tendmemory,只有用 pretectmode 才能用上,我打算换 286,还是想用多于 640K 的内存。这就要有比现在的C更好的编程工具。

当然,我也不一定要用到保护方式,有各种 EMS 软件,不过我还是想往多里捞摸,多留一手。MSC 我只见过 5.0 版,7.0 版的性能还不知道。不过我猜现在流行的C应该有这些手段,到这时候了。 我有一段时间很关心 personalcomputer 的发展,属于想玩玩不到过干瘾的那种。这路东西的发展都是由处理机片芯的发展开始。从 8088 到 286,386 看文献就知道快了很多。

从实用的角度来看,286 多了虚存保护,386 又多了很多用户多任务手段。486 据说把 386,387,和 64K 的高速缓存集成到一个片子上,不但整数运算快,浮点也快多了。不过不做科学运算,意义就小了。586 还不知道是个什么东西,想必有惊人之处。不过到了我手上用作文字处理,也是暴殄天物。我有个 286 用用就算行了。太好的东西我也使不出来。 听说美国微机多媒体搞得甚火,微机接电视,音响,vedio 等等。这玩艺听上去倒是蛮有意思的。

  1992 年 10 月。

当时不知道你为什么这么干,原来是机器坏了。居然叫人敲去 150dollars,老兄真是有钱。这种事叫我遇上,肯定自己修了。现在的微机修理都是换线换板,机器一坏,先找块表量量是不是电源坏了。只要不是电源坏,估摸是哪部分不好,就去买块版换上。送出去也是这么修,还要敲你手工钱。我看 150 什么板子都能买来。万一自己故障没找对,就说人家的板子不好,退给他。我的机器里什么牌子的板子都有了,都像你那样挨人敲,还玩得起吗?这么弄,还能有点乐趣。比方说,你爱 486,就去买块 486 主机板,把自己的主机板换下来,这种搞法不怕杂牌水货,坏了再换,反正便宜。我的问题在于这么搞都搞不起。

  1992 年 10 月。

我现在从我哥哥那里弄了一套 TurboC++,软件方面暂时没有问题了。只是 286 还没买,因为听说中国要加入关贸总协定,这类东西要掉价;有钱先买家具。无论如何,我是用不到 486 的,因为要 286 也不是为了追求高速度,主要是要解决内存问题。我现在软件写得出神入化,大概 8088 上能做到的一切,我都做到了。自己觉得该告一段落,去写小说了。

  1992 年 11 月。

先有朋友把你寄来的软盘倒了一下,看看是数字,就没动它。记得原来有一套干这种事的软件,是你给的,但是盘坏过,再也找不到了。今天写了个小程序倒出来,拜读了大作,甚是有趣。

 1993 年 3 月。

我终于下决心买了一台 286,这些日子在改造软件,作了不少汇编工作。其核心是它在虚拟保护方式(virtualaddressprotected)下工作,以便利扩展内存(expandedmemory)。现在终于完全成功,我的软件现在可以编辑 400K 长的文件,可以把一部长篇小说全部调到内存里编写了。只可惜我这个机器还是低级,只有 1MRAM,并且没有硬盘,所以也就到此为止了。这个程序的缺点是太低级,有大量对端口(port)的操作,虽然效率是高的,兼容性不会太好。我的 XT 机给山妻用了,算起来我用那台机器已经七年,就如一位老友,骤然割爱,如心头割肉。

  年份不详。

我们的 pc 机还没有和 Internet 连上。本来中国有几个国内网发展得很快,现在又出了问题,谁要上 Internet,必须到有关部门去登记,留个案底,以备当局监控,很有一点监狱的气味。我还不想找这份麻烦,再说,通过 Chinanet 联网,每月也要交七八百的月费,我也没有这么多的钱。既然×反对信息时代,我们就不进这个时代罢,有什么法子。所以还是写信好了。

附:王小波笔记

本文文字及图片出自 www.biaodianfu.com

余下全文(1/3)
分享这篇文章:

请关注我们:

共有 40 条讨论

  1. 哈哈哈 对这篇文章的反应是好文
  2. Felix 对这篇文章的反应是
  3. eliver  这篇文章, 并对这篇文章的反应是
  4. 张凯涵 对这篇文章的反应是不明觉厉
  5. jin 对这篇文章的反应是不明觉厉
    1. 我现在软件写得出神入化,大概 8088 上能做到的一切,我都做到了。

  6. 坚持の承诺  这篇文章, 并对这篇文章的反应是赞一个
  7. vorale 对这篇文章的反应是不明觉厉
  8. chuenlye 对这篇文章的反应是赞一个
  9. 逸之  这篇文章
  10. 心有戚戚焉……
    晓波是我18开始时的启蒙,持续到30岁,但是他老婆的乱交理论,实在接受不了。
    想当年,网络上追李靖同学的故事,同时追大唐双龙,同时追聂风,网络更新完全不及时,章节全部混乱,时空完全混乱了。

    回到主题,丫90年代末的两篇,实在很有感觉。

  11. 江湖夜雨  这篇文章
  12. nirvana_dds 对这篇文章的反应是
  13. Enid  这篇文章, 并对这篇文章的反应是俺的神呀赞一个
  14. 杜黎明  这篇文章, 并对这篇文章的反应是赞一个好文
  15. rungod 对这篇文章的反应是俺的神呀
  16. 祝付景 对这篇文章的反应是赞一个
  17. pigdragon 对这篇文章的反应是俺的神呀
  18. 洛大人 对这篇文章的反应是赞一个
  19. ll 对这篇文章的反应是俺的神呀
  20. 高明 对这篇文章的反应是
  21. bob Zhang 对这篇文章的反应是俺的神呀
  22. 吴飞  这篇文章
  23. Limao 对这篇文章的反应是赞一个
  24. seenfisher 对这篇文章的反应是俺的神呀
  25. Steven Luo 对这篇文章的反应是俺的神呀
  26. cade 对这篇文章的反应是俺的神呀
  27. luotaiyti 对这篇文章的反应是俺的神呀
  28. zoe 对这篇文章的反应是俺的神呀
  29. 林柿饼 对这篇文章的反应是俺的神呀
  30. 3131dffd 对这篇文章的反应是俺的神呀
  31. 一个喜欢王小波的人 对这篇文章的反应是俺的神呀
  32. 1 对这篇文章的反应是很实用
  33. thinking 对这篇文章的反应是敬佩

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注