志→目标, 自我提升

王小波:代码与文字间的特立独行

钱魏Way · · 18 次浏览

在当代中国文学史上,王小波的名字如同一颗划过天际的流星——短暂、耀眼,却留下了难以磨灭的轨迹。他被誉为中国近半世纪苦难与荒谬所结晶的天才,其作品以彻底的讽刺与清醒的思考,刺穿了生活的虚伪与荒诞。他唾弃了现代文学中常见的“软”、伤感与谄媚,转而接续了罗素、卡尔维诺一脉的批判精神,并创造性地与中国古代小说的游戏传统相衔接。

然而,许多人或许并不知道,王小波除了作家的身份之外,还曾是一位活跃于中国计算机启蒙时代的程序员,甚至堪称“第一代程序员”中的佼佼者。他的这一面,如同其小说中那些充满奇思妙想的发明,同样闪烁着极客(GEEK)的智慧光芒。

从贸易到统计,从统计到代码

王小波的人生轨迹颇为曲折。他本科在中国人民大学学习贸易,毕业后留校任教,后赴美国匹兹堡大学攻读经济学硕士。有趣的是,他的导师认为他极具写作天赋,甚至鼓励他专心创作,承诺提供生活保障。回国后,他回到人大担任统计学讲师。

正是统计学讲师的工作,将他推向了编程的世界。上世纪90年代初,计算机在国内开始普及,但应用软件极度匮乏。为了处理统计数据和进行分析,王小波不得不自己动手。他先后学习了FORTRAN、汇编语言和C语言,并深入钻研数据结构、算法乃至编译原理。这种“缺什么就造什么”的硬核作风,与当时求伯君等顶尖极客开发中文办公软件的路径如出一辙。

他不仅编写了自用的统计工具,更开发了中文编辑器和输入法。要知道,在当时的软硬件环境下,开发中文处理软件涉及复杂的字库、编码和输入逻辑,是极具挑战性的工作。王小波甚至通过出售自己编写的软件赚取了一些收入,中关村的一些老板曾试图拉他入伙。尽管写代码报酬不菲,但他最终选择了拒绝,因为“写小说也可以赚钱”。

极客精神:从“杀猪式”解题到小说中的奇想

王小波的极客特质,在其早年便已显露。他大学期间从贸易转到化学,又转入数学系。同学形容他解数学题“像杀猪一样,特别来劲”,享受那种一步步攻克难题的快感。这种对逻辑与解决问题的热爱,自然延伸到了编程领域。

他的小说也深深烙印着这种工程师式的想象力。《未来世界》里的王二沉迷于研制永动机;《红拂夜奔》中的李靖,则发明了一台巨大的“开根号机器”,在战场上挥舞杠杆,让敌人“死在根号3下”或“倒在根号5下”。这些荒诞又精妙的设定,若非具备扎实的理工科思维与天马行空的极客精神,绝难构想出来。

书信中的编程生涯:一份珍贵的数字考古记录

王小波与友人(主要是刘晓阳)的大量通信,为我们窥探其编程活动提供了第一手资料。这些信件按时间顺序,勾勒出一位早期开发者在硬件受限、软件贫瘠环境下的探索轨迹:

  • 1988-1990年:需求驱动与工具寻觅。 他急切地寻找能在国内IBM微机上运行的统计软件(如APL、Glim、S语言),因为当时国内“这方面很差”,仅有SPSS可用,而他用FORTRAN编写统计程序并不方便。
  • 1991年:自主开发与优化。 收到严氏中文输入法(0A)后,他受到启发,但坚持“自写的软件自用,感觉是最好的”。他独立开发了具有词组功能(采用B树结构)的输入法,并自豪地认为拼音加四声的方案让写作“声韵铿锵”。他甚至发明了通过调整字模发生器来输出汉字的新方法,以便在西文软件上实现中文窗口。
  • 1992年:技术钻研与硬件焦虑。 他详细阐述了自己用C和汇编编写的输入法软件架构、编译方法(Turbo C),并坦诚地与商业软件(严氏)比较优缺点,在佩服对方图像更新速度的同时,也自豪于自己软件55KB的紧凑性。他渴望升级自己的老式XT机到286,以使用保护模式(protected mode)突破640KB内存限制,从而编辑更长的文件(最终目标是将整部长篇小说调入内存编辑)。信件中充满了对286、386、486芯片技术演进的关注,以及对美国多媒体技术发展的好奇,同时也流露出对高昂硬件价格的无奈(“老婆又不同意”、“这么搞都搞不起”)。
  • 1993年及以后:目标达成与兴趣转移。 他终于购入一台286,成功将软件改造为利用扩展内存,可编辑400KB的长文件,自认“软件写得出神入化”。但与此同时,他也明确表示对微机的兴趣已减弱,因为“写小说也可赚到钱”,重心彻底转向文学创作。在一封未标明年份的信中,他谈及因费用和监控顾虑而未连接互联网,略带反讽地写道:“既然×反对信息时代,我们就不进这个时代罢,有什么法子。所以还是写信好了。”

独立精神与自由思想的跨界实践

王小波的人生角色丰富多彩:下过乡,教过书,留过学,研究过经济,编写过软件,最终以小说家和编剧的身份达到创作巅峰。然而,无论身份如何转换,贯穿其一生的核心是一种鲜明的“独立之精神,自由之思想”。

他的编程活动并非单纯的职业选择或业余爱好,而是这种精神在技术领域的自然延伸:不满足于现状,主动学习创造,用工具解放生产力,并在达到实用目的后,毫不留恋地转向更吸引他的思想战场——文学创作。他的代码,如同他的文字,都是对抗僵化、追求智慧与趣味的产物。

第一代程序员王小波的故事提醒我们,技术的灵魂在于驱动它的人。在那个拓荒年代,他用键盘敲下的不仅是代码,更是一份关于独立思考与创造自由的生动注解。

书信内容

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

  • 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月。你寄来的严氏0A我也收到,还没用。因为一者是3盘要倒,二者我自己写的WK也有重大进展。我也自做了词组功能,是棵B树,我觉得自写的软件自用,感觉是最好的。词组用处不是很大,主要用于定义人地名等专有名词,但是严氏软件对我还是有重大启示,拼音加四声是个极好的主意,写起东西来声韵铿锵,与其他软件大不一样。自写一遍,从分页到编辑键分配,都能合乎自家习惯,不是存心狗尾续貂也。如能见到严氏,可代为致意。
  • 1991年5月。前次寄来软件,上机一试发现非有浮点处理机不能运转。因为缺少软件,国内机器一般不装协处理机,冷不丁撞出您这一件来,搞得不大有办法。
  • 1991年5月。闲着没事搞了个发明。原有中文软件是用线扫描方式出汉字。我做了一个用调整字模发生器方法出汉字的系统,自以为很优越,可惜还未找到用户。用此法可以很容易地在西文软件上出中文窗口,还在SPSS上加了几句骂娘的话。
  • 1991年9月。晓阳托人带来软件,周转很多日才到手里,软盘有些污损,坏一片烂一套,不可用矣。但是十分感念晓阳的好意。去年托人带来的中文软件(严氏By×),我用着尚好,而且又用C语言仿编了一个,程序是我的,拼音字典是人家的,执此招摇撞骗,骗了一些钱。干这个事,熟悉了C语言,都是拜小阳所赐。
  • 1991年9月。不过现在我对微机已无兴趣,因为发现写小说也可赚到钱。
  • 1992年1月。编译程序一盘(有说明书,见shou),源程序一盘。我的音典与严氏同名内容不同。功能上与严氏的近似,但是多了改进拼音字典的功能。按F4后可以把拼音重定义。也可加字,在拼音拣字时,按enter,就进入国标拣字,拣到的字加入字典。这个软件由五个c语言(另有两个头文件)和一个汇编语言文件组成,可用turboc编译,但是汇编部分不必重汇了,可以把汇编文件写成的部分形成的obj(我的磁盘上叫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我只见过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联网,每月也要交七八百的月费,我也没有这么多的钱。既然×反对信息时代,我们就不进这个时代罢,有什么法子。所以还是写信好了。

发表回复

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