中关村的摊主把机箱搬上柜台时,先用袖子擦了擦顶盖的灰。
机器从一家外贸公司淘汰下来,486dx2,主频六十六兆赫兹,八兆内存,四百二十兆硬盘。机箱右侧有一道凹痕,软驱读盘时像咳嗽,显示器边角微微偏色。旁边那台擦得发亮的奔腾机要贵上两千七,马飞连第二眼都没看。
老板开价四千六。
马飞拆开机箱,检查电容和硬盘接口,又让机器连续跑了四十分钟内存测试。
老板起初很有耐心,二十分钟后开始催,说机器出门以后概不退换。马飞没有关测试程序,又从包里拿出一张自带的启动软盘,运行磁盘扫描。
屏幕上很快跳出坏簇。前半段只有三个,越往后越密,最后一共四十二个。老板探头看见数字,伸手就想按复位键,被马飞挡住。
“标签上写的是完好硬盘。”
“二手机哪有一点坏道没有?给你便宜一百。”
“索引文件写到坏区,便宜一百也会把几天的数据一起丢掉。换柜台下面那块同容量的。”
老板的脸沉下来:“你怎么知道下面有?”
“刚才拿螺丝刀时看见的。封条日期比这块晚半年。”
旁边等装机的两名学生也围了过来。老板没再争,把备用硬盘装上。马飞当着他的面重新跑了一遍扫描,又让他在收据背面写明七天内非人为故障可换。
“四千二,带十四点四K调制解调器。”
“那东西单卖六百。”
“硬盘有坏道,电源风扇也该换了。”
老板瞪着他:“你到底做火箭还是修电脑?”
“穷的时候都得会。”
最后成交四千三百元,送两张空白软盘和一根电话延长线。
调制解调器原本不在赠品里。老板把收据递过来时,马飞指了指开着的机箱:“电源风扇轴承响,您不换也行,把那只积压的十四点四K给我。”
“你连积压都看得出来?”
“包装上去年的灰比今年厚。”
老板盯了他半天,骂了一句做火箭的买电脑最麻烦,还是把调制解调器塞进纸箱。临走又追出来,问全文检索做成以后能不能帮他把库存单也查快一点。
马飞在收据背面记下柜台电话。这是他付出四千三百元以后,拿到的第一个潜在客户号码。
搬机器回宿舍那天,赵海帮他抬上三楼。两个人把沉重的显示器放到桌上时,马飞的存款只剩四百多元。
旧书桌承不住显示器,左前腿发出一声轻响。赵海骂着扶住桌面,马飞找来两块废木板垫在下面,又用铁丝把横撑重新扎紧。忙完以后,两个人的手上全是灰,晚饭时间也过了,只能去门口小摊分一碗加了双份面条的汤面。
赵海把碗里的荷包蛋夹给他:“四千多都花了,别明天饿死在机器前面,所里还得给你报工伤。”
马飞把蛋又夹回一半:“你抬显示器,也算项目成本。”
“你真疯了。”赵海喘着气说,“这东西顶你一年工资。”
“所以不能让它闲着。”
电话线从走廊值班室临时接进来,每晚十点后才能使用。马飞向管理员交了押金,答应详细登记通话时长。第一次拨号时,调制解调器发出尖锐而奇怪的握手声,像两台机器隔着黑暗试探彼此。
连接成功: bps。
屏幕上的字符一行行出现。
他没有扑向未来记忆里那些熟悉的算法论文。第一晚只做三件事:测量线路实际吞吐,记录断线频率,下载一份公开目录页。
四十七分钟里断了三次。
值班室门外还有两个人等着给家里打电话。每次线路断开,管理员都敲门提醒他计费表还在走。马飞把第三次断线的时间记完,主动挂断,让排在后面的女工先打。她抱着刚睡着的孩子,只说了三分钟,问老人吃药没有,便把听筒还回来。
“你接吧,孩子一会儿醒。”她说。
马飞重新拨号时,把下载器的第一条需求改成:断线后不得从头计费。
一个不到三十Kb的文件因为每次从头传输,最终耗费了二十多分钟。若照这种方式抓取网页,系统还没建立索引,他就会先被电话费拖垮。
马飞关掉连接,开始写下载器。
他选用c语言,看中的是现有编译器稳定,也能直接管住每一块内存。程序先读取远端文件长度,再把内容分成小段;断线后只请求缺失部分。服务器若不支持分段,就把已经验证的块保留在本地,重新连接时至少避免重复处理。
第一版在凌晨两点编译通过。
第二版解决校验错误。
第三版仍会在电话线路出现短暂噪声时把半截标签当成正文。
马飞没有继续。他必须在七点前睡两个小时,白天还要做喷注器改型计算。
接下来三天,他每天只推进一个最小环节。
文本清洗。
词项记录。
文档编号。
最简单的查询合并。
未来的他知道倒排索引、链接分析、分布式存储会怎样改变搜索,但这台机器不允许宏大。八兆内存扣除系统和编译器,真正留给程序的不到五兆。任何“先全部读进来”的设计都会立刻崩溃。
他把索引切成许多小段,逐段写盘,再在查询时读取必要部分。速度不快,却能运行。
星期四深夜,系统收录了三百一十二份本地资料:研究所允许公开的技术目录、几份高校bbS文章、手工录入的期刊摘要,以及从公开站点下载的少量页面。
马飞输入第一个测试词:“转子振动”。
屏幕停顿三秒,返回九条结果。
第一条是正确的论文摘要。
第二条只有“转子”。
第三条把“振动试验”拆成了两个毫无关系的片段。
第七条是一篇讨论电风扇维修的文章。
马飞看着结果,忍不住笑了。
这些错误一个比一个具体:切分、词距、语料范围,每一项都能单独拿出来改。
他终于有东西可以带去见苏雨桐。
第七条那篇电风扇维修文恰好是赵海抄回来的。赵海被他从上铺叫下来,看完结果,拍着桌子说机器至少知道电风扇也会振动,比他想的强。
“那第一条呢?”马飞问。
赵海看了半天论文摘要:“一个字也看不懂。”
“所以结果对不对,不能只问做程序的人。”
周五傍晚,他把程序、索引和测试语料分别复制到三张软盘。第二张盘在校验时出现错误,他重新格式化,仍不放心,又做了一份纸质文件清单。
出门前,赵海从上铺探出头。
“约会?”
“程序测试。”
“跟谁?”
“一个比程序难糊弄的人。”
计算机房在教学楼四层。马飞提前十分钟到,苏雨桐却已经站在门口。她接过软盘,没有问他用了什么算法,也没有夸他真的做出了东西。
她只问:“有测试日志吗?”
马飞把纸质清单递过去。
苏雨桐翻到最后一页:“只测了你自己知道能搜到的词?”
“目前是。”
“那不叫测试。”她推开机房门,“那叫表演。”
马飞跟着她走进去。
管理员按下墙边的计时器,红色数字从四十开始往下跳。
苏雨桐没有碰他列好的九个测试词。她从书包里取出两页折过的纸,摊在键盘旁,最上面一句是:火箭抖得厉害。
马飞把三张软盘按顺序排好,拉开椅子坐下。