第一代程序员王小波 (送书活动)

681d221612f069b33c3326c54bae21f5.png

整理 : 叶子 | 出品 :OSC开源社区(ID:oschina2013)

文末送书活动,记得看完啊 !

前两天,#王小波逝世25周年#的话题登上热搜,这位英年早逝的天才的过往不由浮现在我脑海。

bf4d1fa945b0a10b00c0c07815538f93.png

说起王小波,喜欢读书的人,对他都不陌生,他是中国最富创造性的作家之一。

但其实,王小波除了作家的身份外,还是一名程序员,并且是一名很牛的程序员!

王小波可以算的上中国早期的程序员,在 90 年代初的时候因为国内应用软件缺乏。

爱捣鼓东西的王小波利用闲暇时间学习了汇编和C语言,编了中文编辑器和输入法。中文编辑器和输入法任何一个都是大牛级的极客才会去尝试的东西,比如求伯君。

王小波通过卖软件还挣了些钱,当时很多中关村的老板要拉他入伙,当然写代码这种来钱快的活对当时的王小波还是有吸引力的,所幸他还是拒绝了人家。

a93544865e19d7633192640bc9271baf.png

王小波一个写小说的为什么成了程序员?

这还得慢慢说。王小波大学在人大学的是贸易,毕业后在人大当了几年老师。后来去了美国匹茨堡大 学读经济的研究生,到那老师跟他说你就是一写作的奇才,以后必能称霸话语文坛。

老师又说你在我这什么都不用干了,好吃好住,毕业证照发,抓紧时间写小说。学成归国,王小波接着又回到人大做统计学的讲师。

因为做统计,各种分析工具是必不可少的,以前人手工计算,有了计算机当然最好使用计算机,基本理工科的都知道用 MATLAB 做个毕设和作业是多么重要。

所以当时计算机对王小波的工作是相当重要的,但是 90 年的时候,软件相当稀缺,电脑又相当不智能。

王小波不得不自己写软件,当然开发软件也不是那么简单,所以他先是学会了 FORTRAN,汇编,C 等各种语言,接着又要学习数据结构,算法的相关知识,还有编译原理。

在做出中文编辑器和输入法软件,解决了自己的需求之后,王小波对写软件的兴趣已经没有多少了。

因为他觉得写软件可以赚钱,写小说同样也可以赚钱。

处于一 个程序员的修养,王小波还是不断地从数据结构和算法来优化这两个软件。

王小波最开始是在 XT 电脑编写软件,这台电脑他用了足足 7 年。

63676aaf66f82e819f2f27b6c9ce9719.png

图源于网络:XT 电脑

然后在 1993 年的时候,王小波换了电脑,买了一台 286 电脑,这在当时是一台奢华无比的机子了,他自己也是这些认为的,高兴得一塌糊涂。

d1ff2f647b74b32930d22ba684defebb.png
图源于网络:286电脑

不过,这台顶配机子还是满足不了王小波的要求,后来他把时间花在了不断地去优化这台机子上面。


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

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 联网,每月也要交七八百的月费,我也没有这么多的钱,所以还是写信好了。

参考资料:

https://www.oschina.net/news/54756/wangxiaobo-first-generation-programmer


不知不觉,王小波已离我们而去 25 年之久,但他诸多精彩的作品以及奋斗精神一直影响着我们。

END•

赠书福利
赠送新书《Spring Boot企业级项目开发实战》共5本,刚刚上架!由「机械工业出版社」赞助提供 ,感兴趣的朋友推荐入手一本。

本书分为10章。第1章介绍Spring、Spring MVC的理论基础,同时搭建Spring开发环境;第2章介绍Spring Boot入门知识,包括Restful API、Jersey、Postman、Swagger2 UI和Lombok等;第3章介绍Spring Data JPA和Validate等;第4章介绍使用Spring Boot进行Web开发的具体方法,另外还会介绍Redis的使用;第5章介绍Spring Security的原理;第6章介绍Spring Boot框架的扩展,包括日志、定时任务、邮件的发送、Web Service和Web Socket等;第7章介绍单元测试、集成测试和性能测试等;第8章介绍Jeecg Boot的功能、环境、配置和源码等;第9章是项目实战,全面展示一个销售管理系统的完整开发过程;第10 章介绍项目的打包、热部署和监控等。

同样这次准备了2种方式抽奖,「随机抽奖、微信群竞拍」这两种方式都可以参与!感谢亲爱的读者们,你们的支持也是我持续更文最大的动力。

 
 
 
 
 
 
 
 
 
 
本次开奖时间为 2022.4.20 20:00
为了避免中奖后失联,提前加我微信号:itcodexy 。
 
 
 
 
 
 
 
 
随机抽奖(2本)

关注公众号:Java技术通 。回复关键词:抽奖,参与!或者直接扫下面二维码参与。

微信群竞拍送书(3本)

 
 
 
 
 
 
 
 
参与方式:加入公众号的读者群,然后在群里竞拍,书籍包邮,价格肯定比商城买的便宜。具体形式,参考上图 。拍卖所得的钱,群友共同享有 !


记得先添加我微信,备注:竞拍加群 。我手动拉大家进群 !

2a21b53f4517dfa6fd914d7b0932a61e.gif

点分享

7b122517126d2f1c0c9e44816592bb90.gif

点点赞

4608605a316e9b677996113c5bfb4d4a.gif

点在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值