“多少?!”奥尔森在电话里面大喊。
“二百个。”范含回答。
“我从哪儿给你找那么多程序员去?!”奥尔森说,“dec也没那么多。”
“那怎么办?”范含说,“我希望年底能交货。”
“用不着那么着急,”奥尔森说,“就算是ibdos,还是后来的ucdos……就深刻的记住了“alt”加数字键是“切换输入法”,全拼、双拼、五笔字型什么的。等到开始用windows的时候,一时间对于“ctrl space”的切换方式很不适应。这种方式是从繁体中文windows照搬过来的,台湾人民也许习惯了,但是比起日本人来说,还是麻烦不少。再说了,原来的alt 数字的方式难道就不麻烦么?
不管那种方式,总是会有些场合引起热键的冲突,这一点正是范含所尽力避免的。归根到底,当初的华人们根本没有选择的余地,你爱用不用,这一点郁闷倒是两岸共同的。现在既然“一朝权在手”,就算为了同胞们着想,范含在这两个键上面也会“便把令来行”。
自然,由于其他工程师全都是美国人,当然无法理解。就算是蓝蓝,现在也都无法领会这种固执的确切含义。并且范含也说不出个所以然来,除了“保留下来,今后肯定有用”之外根本没有其他办法解释。
到头来只好板起脸,拿出“作风简单粗暴”的法宝:“你们就算把ctrl和自然就可以用了吧……呵呵呵……嘿嘿嘿……
-------
开始制定具体的数学函数列表的时候,碰上一点麻烦。
范含的计划里,这一部分都是参考matlab和mathematica的文档。虽然这些东西brom里面都有,不过必须启动应用程序才能看到帮助,单独的文档文件都是放在光盘里面的,不在脑袋里面。
数学程序有一个好处,不做计算的时候消耗的资源并不大,只有启动计算任务之后,才会开始加重负担。比如mathematica,界面就是界面,计算的时候单独启动一个mathematicakernel的进程,这个东西才用来进行真正工作。
所以范含还不至于死机。
即便如此,长时间察看帮助仍然累得很。
光靠吃饭看来是顶不住了,范含只好成天喝糖水。
一般人喝咖啡,喝茶的时候,都是每“cup”咖啡或茶放上几“teaspoon”砂糖。范含不然,开始的时候就是论“pint”或者“quart”喝茶,总是放上好几“ounce”糖。后来发现坚持不住了,就找个大号化学量杯,每“gallon”或者“bushel”白开水放多少“pound”。一天下来,能喝无数“gallon”水,上无数次厕所。半个月下来,范含光白糖就买了好几“shortton”。
等到了详细设计阶段,范含和三十多个学生并肩工作,必须确定每一个数学函数的功能和原型。这时候才最考验人。
整套函数是一个整体,不光每个函数必须有完整的输入输出,并且工作良好;还必须和别的函数配合起来使用,在允许嵌套的情况下仍然可以工作良好。
作为“总设计师”的范含,这会儿就难受了,经常需要同时打开matlab和mathematica,对照着看。
要是一次两次还行,随着工作的进展,两个大块头程序只能成天开着,范含的身体状况越来越差。
“脸红什么?”蓝蓝突然问范含。
“精神焕发……”范含有气无力的回答。
“怎么又黄啦?”蓝蓝逼近一步,接着问。
“哈哈哈哈,防冷涂的蜡……”范含已经迷糊了,全凭条件反射回答问题。
“这么说,你现在感觉还可以喽……哎——!”蓝蓝眼瞅着范含摔倒在地。
-------
范含现在呆在一间病房里面,这里明显的出口是“out”。
“怎么搞的?”ucla数学教授甲问范含,“真是忙到这种地步吗?”
“是啊……”范含低声回答,“进度落后了不少,我正着急呢。”
“那也没必要这么拼命吧?”ucla数学教授乙说,“其实用不着特别的赶进度,晚半年就晚半年。”
“不行啊……”范含低声说,“我的工作是最顶端的,我晚一天,下面不定会晚多少呢……”
“是啊,一点点改进还来得及。”ucla数学教授丙接着说,“其实尽管下了订单,但是我们心里也没有一个特定的目标,只要比现在的机器好用那么一点儿就成。”
“来不及呀……”范含低声说,“按照进度应该在今年圣诞节之前完工……呼……如果用户对于样品没有什么修改意见的话……哈……转过年来立刻正式销售。”
“怎么这么紧?”教授甲大吃一惊,“我以为需要一两年呢?”
“时不我待呀……”范含低声说,“全世界三分之二的数学家还生活在水深火热之中……呼……哪怕能提前一天完工……哈……我们亲爱的数学家们就能提前一天拥有这种强有力的科研工具啊……呼……哈……一想到这里,我就浑身充满干劲啊……”
“你真是……”教授乙感动得热泪盈眶,“在如今这个物欲横流的社会里,像你这样还有一颗赤子之心的人太少了……”
“哪里哪里……”范含低声说,“您过奖了,我只是在****应该干的事而已……”
“你就不用谦虚了,”教授丙说,“现在好好休息就成了。”
“我会好好休息的……”范含低声说,“争取能早点出院,好尽快投身到热火朝天的开发工作当中去……”
“到底是什么毛病啊?”教授甲问玛丽。
“其实没什么,就是血糖过低。”玛丽回答,“范先生现在的身体就像是个黑洞,静脉注射的葡萄糖很快就会被消耗掉,吊瓶都是连续的更换呢。”
“怎么会是这样?”教授乙问。
“仅仅是太累了而已……”范含低声说,同时有意无意的看了旁边的蓝蓝一眼,“方方面面都得照顾到啊……”
“作为过来人,我忍不住要提醒你啊……”教授丙语重心长的对范含说,“虽然说工作生活都要照顾到,但是有时候还是由主次之分的啊……”
“谢谢您的提醒……”范含低声说,“但是……”
“现在你可能觉得,累点儿没什么,挺一挺就过去了。”教授甲语重心长的对范含说,“等你到了我们这把年纪,就会明白身体健康的重要性了……”
“您可能误会了……”范含低声说,“我并没有……”
“你以前的事迹我们大概也了解了一些,”教授乙语重心长的对范含说,“什么事情都要把握一个分寸啊,一旦过度确实是对身体有害的啊……”
“事情……不是这样的……”范含挣扎着说出了一句大实话,“这一段我一直在禁欲,并没有……没有什么过于亲热的举动……”
“噢……”教授丙不好说什么了,“那就……多保重身体吧……”
“谢谢……”范含说。
“咳……”教授甲出门的时候,多看了蓝蓝一眼,摇摇头,“年轻人……”
“咳……”教授乙看了一眼蓝蓝,叹了口气。
“……”教授丙看了一眼蓝蓝,什么也没说。
蓝蓝委屈极了。
-------
本来就没什么大问题,一旦不用工作,加上多打糖水,身体自然就恢复了。
范含躺了两天,出院了。
刚过了一个礼拜,又住院了,接着打吊瓶。
往后每过一个礼拜,范含就歇菜两天。
来医院看望的人倒是络绎不绝,几乎每个人都是先看看蓝蓝,再拍拍范含:“注意身体”。
好不容易,设计阶段过去了。经过无数遍走读,这个方案本身应该没什么问题了。下面的问题就是如何实现它。
这一部分就是那三十多人操心的事了。他们负责把每个数学函数拆成若干fortran函数,写出函数原型。然后再走读几遍,保证没有明显的错误。
这时候范含可以腾出手来写解释器了,不过这个工作也不轻松。
具体流程是这样的:
1,必须首先编出一个词法文件,然后彻底背下来。
2,在脑袋里启动一个记事本,将词法文件的内容输入,另存为“math.l”文件。
3,然后启动flex处理这个文件,生成“.c”文件。
4,将此文件抄出来。
5,必须继续编出一个语法文件,然后彻底背下来。
6,在脑袋里启动一个记事本,将语法文件的内容输入,另存为“math.y”文件。
7,然后启动bison处理这个文件,生成“.c”和“.h”两个文件。
8,将这两个文件抄出来。
9,打开各种库的源代码,把需要的库函数直接抄出来。
10,调试,如果失败,根据情况返回1或5或9。
最令人郁闷的就是“背诵”这一段。
没办法,bram非常不稳定,经常有存储错误出现。
神经细胞毕竟不是晶体管,是靠生物化学效应调节细胞内外电解质浓度保持状态的。单独拿出来一个屁也不是,只有大量神经细胞组合到了一起才行。
人脑的记忆应该说是一种“有损记忆”,比如人脸,比如图像,都是直接找到最突出的特征牢牢记住,具体细节不管了。碰到必须精确到每一个bit的情况,多半不灵。
就是由于这个原因,我们才经常碰到“记错了”的情况。正是由于这种错误的不可避免,我们人类才会有“灵感”、“创造力”之类的天赋存在。
至于“忘了”,那是另外一回事,并不是原来那些存储信息的神经细胞失灵,而是大脑失去了和这些细胞的联系,“通路丢失”,这就是现代神经医学家们的新发现。
不过,要想精确的记住东西,也不是没有办法。
就算是电子产品,也会有错误出现,对付这种错误的办法就是“纠错”。最常见的方式就是“冗余”,多保留几个备份,需要的时候加以对比,少数服从多数。就像拳击比赛需要三个裁判那样。
大脑也一样,只不过这种冗余的规模大得多。每当我们下定决心记住什么东西的时候,靠的就是“背”,冗余会自动产生。
范含这次就到了需要“死记硬背”的时候了,把比起唐诗宋词来毫无美感可言的代码背下来,真是一种折磨。
况且,记忆还分为长期记忆和短期记忆两种。
简单的说,长期记忆就是在下了苦功夫之后记住的东西。除非隔了很长时间,否则这些东西都能随时随地的想起来。
范含并不愿意把这些代码“长期”的记住。倒不是说害怕脑子里多了些垃圾,而是害怕旧版本的干扰。调试程序代码都是这样的,每次的修改很可能仅仅是一个角落的几个字符而已,相差只有一丁点儿而已。真要是全都记住,自己都分不清谁是谁。范含的脑袋毕竟还是肉做的,在记忆力这方面和普通人一样,该记错的就是会记错。经过了几次惨痛的教训之后,范含不得已,只好像周伯通那样,再把这些东西强行忘掉。
至于短期记忆就更简单了,就像我们打电话查电话簿一样。对于不熟悉的号码……看一眼,记住,拨号,唠嗑,挂电话……然后绝对会忘掉。
范含是不得已才用这招的,每次都是争分夺秒,刚记住就拼命的往脑袋里面塞。
在外人看来,就是:
1,先拿张纸盯着,嘴里念念有词。
2,把纸放下,两眼平视前方,进入僵直状态。
3,拿起另一张纸,开始奋笔疾书。
这也太傻了!
短期记忆么,就得全记住。要想一段一段的背,一段一段的塞进脑袋里,那是不可能的。因为不管是“背”还是“塞”,都是用人脑的记忆而已。要不然的话,往往记住后边的,就把前面的忘了,正如狗熊掰棒子一样。
这差事还真不是人干的。
别说打个盹,睡个觉,就是一走神都会玩儿完。
好几次了,蓝蓝给范含的杯子里续水,范含就会半途而废。因此而发作的无名火也不在少数。只不过,范含心里明白人家正是为了自己好,况且自己这种特殊情况根本不是常人能理解的。每次发火之后,都在第一时间就冲过去,搂搂抱抱,亲亲摸摸,好生道歉一番。
就算是到了抄库函数那一段,也不轻松。
虽然说flex比起lex有了改进,那也不过是不用链接词法库“libl.o”罢了,标准库还是要用的。只不过,都是简单的字符串操作,和标准输入输出的那一部分。范含经常在一个根目录下面启动“grep”,然后双手扶桌发呆,等到查询出结果之后再去抄出来。
咳……
-------
到了解释器大概齐能运行了,范含就自己动手改了,不再动用brom了……妈的,这东西倒是一点错误没有,记得结结实实。
差不多就在范含完工的同时,三十多人也搞定了详细设计那个阶段。
所有的函数原型都出来了,彼此之间的依赖性表格也都制定好了,可以确定编写的先后顺序。至于编码,就让别人去填空好了,这时候就到了打工仔们出场的“show-time”了。
这一阶段范含就没什么事儿了,主要就是指挥指挥。
按照安排,打工仔们都是计件付费,每块的工作量早已被那三十多人平均化了。一般来说,完成两件事才算是“一件”。
第一,当然就是填满一个函数体,保证其能够正常运行,通过测试。
第二,就是根据另外一个函数的说明,编写其单元测试代码,保证检查所有可能的输入、输出、各种边界情况等等。这些单元测试代码,就是一个函数“正常运行”的标准。
由于这是头一次大规模全面应用单元测试,范含必须在旁边不停的指导,才能保证这些测试代码本身也是正确的。
由于机器严重缺乏,范含不得不劝导所有人把大量时间花在静态走读检验程序代码上面,只有自己确认无误了,再上机调试。不过这一点并不是不能被接受,毕竟这个时代,还是认为机器运行时间比程序员的时间重要,许多人平时都是这么写程序的。半夜三点钟,进入由一个连的士兵保卫的建筑物,像接受领袖接见那样对当值的计算机管理员点头哈腰,等待他漫不经心的把卡片塞进机器……这是当时普遍的做法。范含曾经听母亲说过,当年她在大学里面,用的就是穿孔纸带,还不是卡片。半夜去上机的时候,经常每转过一个弯就能听到一声大吼“口令”!每个拐弯的口令还不一样,回答稍微慢一点,就能听见拉枪栓的声音。她的一位女同学第一次去上机,就被枪栓声音吓哭了。
总之,到目前为止一切顺利。
大约十二月初,所有工作完成,剩下的就是等硬件人员烧rom,造原型机了。
-------
一九六七年十二月十五日,产品说明会在ucla正式召开。
范含给这台机器命名为“mathstation”,数学工作站的意思,缩写为“ms”。
光是机器的*k内存就装满了两个机柜,这个时代的内存还是磁环,体积特别的大。真正的主机也占满了一个机柜,里面一层一层的全是板子,除了中间一块上面插着一堆芯片组成的处理器之外,剩下的都是rom。所有的rom大约有1mb,这在目前来说相当大了。另外还有一个机柜,里面也是一层一层的板子,只不过上面都是空的,留着以后升级用。
产品演示轰动一时。
具体操作就不用提了,matlab的字符界面方式,见过多少次了,范含看得直打哈欠。
许多外地的数学家都在第一天得到了消息,第二天赶紧订机票飞过来。到了第三天,也就是最后一天,简直是人山人海,就算是专门的数学大会,来的人也没这么齐整过。
预料之中,这些都是预料之中。
想当年,一九八四年,matlab1.0刚推出的时候,不过才实现了几十个函数而已,已经轰动一时了。那会儿的matlab,不过是著名的线性代数函数库eispack和linpack的简单包装而已。虽然用c语言重新改写了核心,也并没有本质的突破。这也难免,无论什么软件的第一个版本多半都会这样。
范含这次的ms不一样,基本上所有的matlab7的主体部分……就是“教育版”也得卖一万多的名为“matlab”的软件……的函数都得到了实现。除了一些三维图形函数,限于技术原因做不到之外,剩下的东西简直是尽善尽美,无懈可击。
虽然,由于内存原因,许多函数算不了太大的矩阵和太复杂的变换,但是范含特意留出了许多外部接口,可以直接连接一些专用硬件。比如有一台专门用来算积分的机器,主要是模拟太阳系行星轨道的。总的看来,这些“历史局限性”根本不是机器本身的原因,许多作为用户的数学家都主动替范含开脱责任。
尤其是,范含还特意强调了,这只是主体部分,还有几十个“工具箱”正在开发中。
作为matlab的一大特色,就是林林总总的工具箱。几乎所有的领域,都有相应的工具箱推出。有的是mathworks公司自己的产品,有的是第三方公司的产品。这些工具箱极大的扩展了matlab的应用范围。
特意留出来的空机箱,就是为了这些工具箱预备的。
虽然目前还没有开发出来,不过范含事先早就准备好了相关文档,几乎所有的工具箱都有简介和函数列表。这对于范含来说是小菜一碟,对于其他人就不一样了,谁都知道,构建一个完整体系的难度有多大。
发布这些文档的作用在于,吊一吊数学家们的胃口。虽然范含嘴上说,完全可以根据需要分别购买,但是心里明白得很,只有公司才会这么干,因为业务领域只有那一块。作为一所学校,什么专业的都有,当然会……一锅端了。
到了说明会结束,主持人对于范含的称呼也从开幕式的“著名作家”改为闭幕式的“知名数学家”了。可以说,范含借此机会混进了学术圈。没想到,当年在学校里下定决心“打死我也不”当数学家的自己,如今“可找到组织了”。
距离圣诞节还有几天,足够各大专业周刊及时调整自己的报道内容了。
不出所料,for包揽了本年度一堆计算机大奖。
本年度最佳产品……for的mathstation。
本年度最佳硬件……for的“f-16”架构(就是68k啦,范含起了这么一个名字,表示for公司16位的处理器)。
本年度最佳软件……for的mathstudio(就是ms烧成rom的配套“软件”)。
本年度最成功项目……for的范含先生领导的ms项目,只有两个多月的时间,完美实现范含先生自己提出的“软件工程”的理论,实在是……@#$%^&
本年度最优秀开发团体……for。
本年度最佳leader……范含先生。
还有许多,一时间都看不过来。
最令人意外的,时代周刊评选的1967年风云人物,当然就是……范含了。这一年幸亏没什么重大历史事件发生,矬子里面拔将军,拔着了。封面照片就是产品说明会上,范含扶着蓝蓝勉强站起,脸色苍白的向观众挥手的镜头。加上内文里面对ucla数学教授甲乙丙以及其他相关人士的采访,更加烘托出了范含那一不怕苦,二不怕死,战天斗地的革命精神。
-------
平安夜了,圣诞节了,范含名利双收,身体也恢复了,于是故态复萌,腆着脸向蓝篮求huan。
“前一阵怎么都不理我?”蓝蓝问,“嗯?”
“那时候身体实在不好么。”范含解释,“你又不是不知道。”
“那你怎么还故意让我背黑锅?”蓝蓝继续拷问,“这一阵子我多委屈你知道么?嗯?”
“知道知道,我太知道了。”范含继续解释,“谁让你名声在外呢?”
“呸!”蓝蓝说,“难道你的名声很好么?为什么别人都怪到我的头上?嗯?”
“不好不好,我简直是道德败坏。”范含说,“本来其他人也都知道的,只不过这次我跟他们事先说了点什么。”
“说什么了?”蓝蓝问,“从实招来!嗯!”
“人家担心我老是不正经,怕影响项目。”范含说,“我就跟他们说,这次不一样,男子汉大丈夫,应该以事业为重,当断则断,挥慧剑斩情丝……不过,呃,红颜祸水嘛,真要是泼到身上我也不想躲开……”
砰!
……
“怎么搞的?”玛丽一边给范含上药一边问,“又让人打了?”
“唔……”范含嘴肿得说不出话。
“我就搞不明白,现在洛杉矶还有谁敢打你?”玛丽接着说,“别说警察,就是地痞流氓碰上你都躲着走,生怕一不小心成了反面主角,千夫所指的滋味可不好受。”
“唔……”范含回头幽怨的看了蓝蓝一眼,那眼神儿,跟第二届“斯蒂克”杯浣熊雕塑大赛优胜作品一模一样。
-------
(第拾伍章完)
(第二弓完)
“二百个。”范含回答。
“我从哪儿给你找那么多程序员去?!”奥尔森说,“dec也没那么多。”
“那怎么办?”范含说,“我希望年底能交货。”
“用不着那么着急,”奥尔森说,“就算是ibdos,还是后来的ucdos……就深刻的记住了“alt”加数字键是“切换输入法”,全拼、双拼、五笔字型什么的。等到开始用windows的时候,一时间对于“ctrl space”的切换方式很不适应。这种方式是从繁体中文windows照搬过来的,台湾人民也许习惯了,但是比起日本人来说,还是麻烦不少。再说了,原来的alt 数字的方式难道就不麻烦么?
不管那种方式,总是会有些场合引起热键的冲突,这一点正是范含所尽力避免的。归根到底,当初的华人们根本没有选择的余地,你爱用不用,这一点郁闷倒是两岸共同的。现在既然“一朝权在手”,就算为了同胞们着想,范含在这两个键上面也会“便把令来行”。
自然,由于其他工程师全都是美国人,当然无法理解。就算是蓝蓝,现在也都无法领会这种固执的确切含义。并且范含也说不出个所以然来,除了“保留下来,今后肯定有用”之外根本没有其他办法解释。
到头来只好板起脸,拿出“作风简单粗暴”的法宝:“你们就算把ctrl和自然就可以用了吧……呵呵呵……嘿嘿嘿……
-------
开始制定具体的数学函数列表的时候,碰上一点麻烦。
范含的计划里,这一部分都是参考matlab和mathematica的文档。虽然这些东西brom里面都有,不过必须启动应用程序才能看到帮助,单独的文档文件都是放在光盘里面的,不在脑袋里面。
数学程序有一个好处,不做计算的时候消耗的资源并不大,只有启动计算任务之后,才会开始加重负担。比如mathematica,界面就是界面,计算的时候单独启动一个mathematicakernel的进程,这个东西才用来进行真正工作。
所以范含还不至于死机。
即便如此,长时间察看帮助仍然累得很。
光靠吃饭看来是顶不住了,范含只好成天喝糖水。
一般人喝咖啡,喝茶的时候,都是每“cup”咖啡或茶放上几“teaspoon”砂糖。范含不然,开始的时候就是论“pint”或者“quart”喝茶,总是放上好几“ounce”糖。后来发现坚持不住了,就找个大号化学量杯,每“gallon”或者“bushel”白开水放多少“pound”。一天下来,能喝无数“gallon”水,上无数次厕所。半个月下来,范含光白糖就买了好几“shortton”。
等到了详细设计阶段,范含和三十多个学生并肩工作,必须确定每一个数学函数的功能和原型。这时候才最考验人。
整套函数是一个整体,不光每个函数必须有完整的输入输出,并且工作良好;还必须和别的函数配合起来使用,在允许嵌套的情况下仍然可以工作良好。
作为“总设计师”的范含,这会儿就难受了,经常需要同时打开matlab和mathematica,对照着看。
要是一次两次还行,随着工作的进展,两个大块头程序只能成天开着,范含的身体状况越来越差。
“脸红什么?”蓝蓝突然问范含。
“精神焕发……”范含有气无力的回答。
“怎么又黄啦?”蓝蓝逼近一步,接着问。
“哈哈哈哈,防冷涂的蜡……”范含已经迷糊了,全凭条件反射回答问题。
“这么说,你现在感觉还可以喽……哎——!”蓝蓝眼瞅着范含摔倒在地。
-------
范含现在呆在一间病房里面,这里明显的出口是“out”。
“怎么搞的?”ucla数学教授甲问范含,“真是忙到这种地步吗?”
“是啊……”范含低声回答,“进度落后了不少,我正着急呢。”
“那也没必要这么拼命吧?”ucla数学教授乙说,“其实用不着特别的赶进度,晚半年就晚半年。”
“不行啊……”范含低声说,“我的工作是最顶端的,我晚一天,下面不定会晚多少呢……”
“是啊,一点点改进还来得及。”ucla数学教授丙接着说,“其实尽管下了订单,但是我们心里也没有一个特定的目标,只要比现在的机器好用那么一点儿就成。”
“来不及呀……”范含低声说,“按照进度应该在今年圣诞节之前完工……呼……如果用户对于样品没有什么修改意见的话……哈……转过年来立刻正式销售。”
“怎么这么紧?”教授甲大吃一惊,“我以为需要一两年呢?”
“时不我待呀……”范含低声说,“全世界三分之二的数学家还生活在水深火热之中……呼……哪怕能提前一天完工……哈……我们亲爱的数学家们就能提前一天拥有这种强有力的科研工具啊……呼……哈……一想到这里,我就浑身充满干劲啊……”
“你真是……”教授乙感动得热泪盈眶,“在如今这个物欲横流的社会里,像你这样还有一颗赤子之心的人太少了……”
“哪里哪里……”范含低声说,“您过奖了,我只是在****应该干的事而已……”
“你就不用谦虚了,”教授丙说,“现在好好休息就成了。”
“我会好好休息的……”范含低声说,“争取能早点出院,好尽快投身到热火朝天的开发工作当中去……”
“到底是什么毛病啊?”教授甲问玛丽。
“其实没什么,就是血糖过低。”玛丽回答,“范先生现在的身体就像是个黑洞,静脉注射的葡萄糖很快就会被消耗掉,吊瓶都是连续的更换呢。”
“怎么会是这样?”教授乙问。
“仅仅是太累了而已……”范含低声说,同时有意无意的看了旁边的蓝蓝一眼,“方方面面都得照顾到啊……”
“作为过来人,我忍不住要提醒你啊……”教授丙语重心长的对范含说,“虽然说工作生活都要照顾到,但是有时候还是由主次之分的啊……”
“谢谢您的提醒……”范含低声说,“但是……”
“现在你可能觉得,累点儿没什么,挺一挺就过去了。”教授甲语重心长的对范含说,“等你到了我们这把年纪,就会明白身体健康的重要性了……”
“您可能误会了……”范含低声说,“我并没有……”
“你以前的事迹我们大概也了解了一些,”教授乙语重心长的对范含说,“什么事情都要把握一个分寸啊,一旦过度确实是对身体有害的啊……”
“事情……不是这样的……”范含挣扎着说出了一句大实话,“这一段我一直在禁欲,并没有……没有什么过于亲热的举动……”
“噢……”教授丙不好说什么了,“那就……多保重身体吧……”
“谢谢……”范含说。
“咳……”教授甲出门的时候,多看了蓝蓝一眼,摇摇头,“年轻人……”
“咳……”教授乙看了一眼蓝蓝,叹了口气。
“……”教授丙看了一眼蓝蓝,什么也没说。
蓝蓝委屈极了。
-------
本来就没什么大问题,一旦不用工作,加上多打糖水,身体自然就恢复了。
范含躺了两天,出院了。
刚过了一个礼拜,又住院了,接着打吊瓶。
往后每过一个礼拜,范含就歇菜两天。
来医院看望的人倒是络绎不绝,几乎每个人都是先看看蓝蓝,再拍拍范含:“注意身体”。
好不容易,设计阶段过去了。经过无数遍走读,这个方案本身应该没什么问题了。下面的问题就是如何实现它。
这一部分就是那三十多人操心的事了。他们负责把每个数学函数拆成若干fortran函数,写出函数原型。然后再走读几遍,保证没有明显的错误。
这时候范含可以腾出手来写解释器了,不过这个工作也不轻松。
具体流程是这样的:
1,必须首先编出一个词法文件,然后彻底背下来。
2,在脑袋里启动一个记事本,将词法文件的内容输入,另存为“math.l”文件。
3,然后启动flex处理这个文件,生成“.c”文件。
4,将此文件抄出来。
5,必须继续编出一个语法文件,然后彻底背下来。
6,在脑袋里启动一个记事本,将语法文件的内容输入,另存为“math.y”文件。
7,然后启动bison处理这个文件,生成“.c”和“.h”两个文件。
8,将这两个文件抄出来。
9,打开各种库的源代码,把需要的库函数直接抄出来。
10,调试,如果失败,根据情况返回1或5或9。
最令人郁闷的就是“背诵”这一段。
没办法,bram非常不稳定,经常有存储错误出现。
神经细胞毕竟不是晶体管,是靠生物化学效应调节细胞内外电解质浓度保持状态的。单独拿出来一个屁也不是,只有大量神经细胞组合到了一起才行。
人脑的记忆应该说是一种“有损记忆”,比如人脸,比如图像,都是直接找到最突出的特征牢牢记住,具体细节不管了。碰到必须精确到每一个bit的情况,多半不灵。
就是由于这个原因,我们才经常碰到“记错了”的情况。正是由于这种错误的不可避免,我们人类才会有“灵感”、“创造力”之类的天赋存在。
至于“忘了”,那是另外一回事,并不是原来那些存储信息的神经细胞失灵,而是大脑失去了和这些细胞的联系,“通路丢失”,这就是现代神经医学家们的新发现。
不过,要想精确的记住东西,也不是没有办法。
就算是电子产品,也会有错误出现,对付这种错误的办法就是“纠错”。最常见的方式就是“冗余”,多保留几个备份,需要的时候加以对比,少数服从多数。就像拳击比赛需要三个裁判那样。
大脑也一样,只不过这种冗余的规模大得多。每当我们下定决心记住什么东西的时候,靠的就是“背”,冗余会自动产生。
范含这次就到了需要“死记硬背”的时候了,把比起唐诗宋词来毫无美感可言的代码背下来,真是一种折磨。
况且,记忆还分为长期记忆和短期记忆两种。
简单的说,长期记忆就是在下了苦功夫之后记住的东西。除非隔了很长时间,否则这些东西都能随时随地的想起来。
范含并不愿意把这些代码“长期”的记住。倒不是说害怕脑子里多了些垃圾,而是害怕旧版本的干扰。调试程序代码都是这样的,每次的修改很可能仅仅是一个角落的几个字符而已,相差只有一丁点儿而已。真要是全都记住,自己都分不清谁是谁。范含的脑袋毕竟还是肉做的,在记忆力这方面和普通人一样,该记错的就是会记错。经过了几次惨痛的教训之后,范含不得已,只好像周伯通那样,再把这些东西强行忘掉。
至于短期记忆就更简单了,就像我们打电话查电话簿一样。对于不熟悉的号码……看一眼,记住,拨号,唠嗑,挂电话……然后绝对会忘掉。
范含是不得已才用这招的,每次都是争分夺秒,刚记住就拼命的往脑袋里面塞。
在外人看来,就是:
1,先拿张纸盯着,嘴里念念有词。
2,把纸放下,两眼平视前方,进入僵直状态。
3,拿起另一张纸,开始奋笔疾书。
这也太傻了!
短期记忆么,就得全记住。要想一段一段的背,一段一段的塞进脑袋里,那是不可能的。因为不管是“背”还是“塞”,都是用人脑的记忆而已。要不然的话,往往记住后边的,就把前面的忘了,正如狗熊掰棒子一样。
这差事还真不是人干的。
别说打个盹,睡个觉,就是一走神都会玩儿完。
好几次了,蓝蓝给范含的杯子里续水,范含就会半途而废。因此而发作的无名火也不在少数。只不过,范含心里明白人家正是为了自己好,况且自己这种特殊情况根本不是常人能理解的。每次发火之后,都在第一时间就冲过去,搂搂抱抱,亲亲摸摸,好生道歉一番。
就算是到了抄库函数那一段,也不轻松。
虽然说flex比起lex有了改进,那也不过是不用链接词法库“libl.o”罢了,标准库还是要用的。只不过,都是简单的字符串操作,和标准输入输出的那一部分。范含经常在一个根目录下面启动“grep”,然后双手扶桌发呆,等到查询出结果之后再去抄出来。
咳……
-------
到了解释器大概齐能运行了,范含就自己动手改了,不再动用brom了……妈的,这东西倒是一点错误没有,记得结结实实。
差不多就在范含完工的同时,三十多人也搞定了详细设计那个阶段。
所有的函数原型都出来了,彼此之间的依赖性表格也都制定好了,可以确定编写的先后顺序。至于编码,就让别人去填空好了,这时候就到了打工仔们出场的“show-time”了。
这一阶段范含就没什么事儿了,主要就是指挥指挥。
按照安排,打工仔们都是计件付费,每块的工作量早已被那三十多人平均化了。一般来说,完成两件事才算是“一件”。
第一,当然就是填满一个函数体,保证其能够正常运行,通过测试。
第二,就是根据另外一个函数的说明,编写其单元测试代码,保证检查所有可能的输入、输出、各种边界情况等等。这些单元测试代码,就是一个函数“正常运行”的标准。
由于这是头一次大规模全面应用单元测试,范含必须在旁边不停的指导,才能保证这些测试代码本身也是正确的。
由于机器严重缺乏,范含不得不劝导所有人把大量时间花在静态走读检验程序代码上面,只有自己确认无误了,再上机调试。不过这一点并不是不能被接受,毕竟这个时代,还是认为机器运行时间比程序员的时间重要,许多人平时都是这么写程序的。半夜三点钟,进入由一个连的士兵保卫的建筑物,像接受领袖接见那样对当值的计算机管理员点头哈腰,等待他漫不经心的把卡片塞进机器……这是当时普遍的做法。范含曾经听母亲说过,当年她在大学里面,用的就是穿孔纸带,还不是卡片。半夜去上机的时候,经常每转过一个弯就能听到一声大吼“口令”!每个拐弯的口令还不一样,回答稍微慢一点,就能听见拉枪栓的声音。她的一位女同学第一次去上机,就被枪栓声音吓哭了。
总之,到目前为止一切顺利。
大约十二月初,所有工作完成,剩下的就是等硬件人员烧rom,造原型机了。
-------
一九六七年十二月十五日,产品说明会在ucla正式召开。
范含给这台机器命名为“mathstation”,数学工作站的意思,缩写为“ms”。
光是机器的*k内存就装满了两个机柜,这个时代的内存还是磁环,体积特别的大。真正的主机也占满了一个机柜,里面一层一层的全是板子,除了中间一块上面插着一堆芯片组成的处理器之外,剩下的都是rom。所有的rom大约有1mb,这在目前来说相当大了。另外还有一个机柜,里面也是一层一层的板子,只不过上面都是空的,留着以后升级用。
产品演示轰动一时。
具体操作就不用提了,matlab的字符界面方式,见过多少次了,范含看得直打哈欠。
许多外地的数学家都在第一天得到了消息,第二天赶紧订机票飞过来。到了第三天,也就是最后一天,简直是人山人海,就算是专门的数学大会,来的人也没这么齐整过。
预料之中,这些都是预料之中。
想当年,一九八四年,matlab1.0刚推出的时候,不过才实现了几十个函数而已,已经轰动一时了。那会儿的matlab,不过是著名的线性代数函数库eispack和linpack的简单包装而已。虽然用c语言重新改写了核心,也并没有本质的突破。这也难免,无论什么软件的第一个版本多半都会这样。
范含这次的ms不一样,基本上所有的matlab7的主体部分……就是“教育版”也得卖一万多的名为“matlab”的软件……的函数都得到了实现。除了一些三维图形函数,限于技术原因做不到之外,剩下的东西简直是尽善尽美,无懈可击。
虽然,由于内存原因,许多函数算不了太大的矩阵和太复杂的变换,但是范含特意留出了许多外部接口,可以直接连接一些专用硬件。比如有一台专门用来算积分的机器,主要是模拟太阳系行星轨道的。总的看来,这些“历史局限性”根本不是机器本身的原因,许多作为用户的数学家都主动替范含开脱责任。
尤其是,范含还特意强调了,这只是主体部分,还有几十个“工具箱”正在开发中。
作为matlab的一大特色,就是林林总总的工具箱。几乎所有的领域,都有相应的工具箱推出。有的是mathworks公司自己的产品,有的是第三方公司的产品。这些工具箱极大的扩展了matlab的应用范围。
特意留出来的空机箱,就是为了这些工具箱预备的。
虽然目前还没有开发出来,不过范含事先早就准备好了相关文档,几乎所有的工具箱都有简介和函数列表。这对于范含来说是小菜一碟,对于其他人就不一样了,谁都知道,构建一个完整体系的难度有多大。
发布这些文档的作用在于,吊一吊数学家们的胃口。虽然范含嘴上说,完全可以根据需要分别购买,但是心里明白得很,只有公司才会这么干,因为业务领域只有那一块。作为一所学校,什么专业的都有,当然会……一锅端了。
到了说明会结束,主持人对于范含的称呼也从开幕式的“著名作家”改为闭幕式的“知名数学家”了。可以说,范含借此机会混进了学术圈。没想到,当年在学校里下定决心“打死我也不”当数学家的自己,如今“可找到组织了”。
距离圣诞节还有几天,足够各大专业周刊及时调整自己的报道内容了。
不出所料,for包揽了本年度一堆计算机大奖。
本年度最佳产品……for的mathstation。
本年度最佳硬件……for的“f-16”架构(就是68k啦,范含起了这么一个名字,表示for公司16位的处理器)。
本年度最佳软件……for的mathstudio(就是ms烧成rom的配套“软件”)。
本年度最成功项目……for的范含先生领导的ms项目,只有两个多月的时间,完美实现范含先生自己提出的“软件工程”的理论,实在是……@#$%^&
本年度最优秀开发团体……for。
本年度最佳leader……范含先生。
还有许多,一时间都看不过来。
最令人意外的,时代周刊评选的1967年风云人物,当然就是……范含了。这一年幸亏没什么重大历史事件发生,矬子里面拔将军,拔着了。封面照片就是产品说明会上,范含扶着蓝蓝勉强站起,脸色苍白的向观众挥手的镜头。加上内文里面对ucla数学教授甲乙丙以及其他相关人士的采访,更加烘托出了范含那一不怕苦,二不怕死,战天斗地的革命精神。
-------
平安夜了,圣诞节了,范含名利双收,身体也恢复了,于是故态复萌,腆着脸向蓝篮求huan。
“前一阵怎么都不理我?”蓝蓝问,“嗯?”
“那时候身体实在不好么。”范含解释,“你又不是不知道。”
“那你怎么还故意让我背黑锅?”蓝蓝继续拷问,“这一阵子我多委屈你知道么?嗯?”
“知道知道,我太知道了。”范含继续解释,“谁让你名声在外呢?”
“呸!”蓝蓝说,“难道你的名声很好么?为什么别人都怪到我的头上?嗯?”
“不好不好,我简直是道德败坏。”范含说,“本来其他人也都知道的,只不过这次我跟他们事先说了点什么。”
“说什么了?”蓝蓝问,“从实招来!嗯!”
“人家担心我老是不正经,怕影响项目。”范含说,“我就跟他们说,这次不一样,男子汉大丈夫,应该以事业为重,当断则断,挥慧剑斩情丝……不过,呃,红颜祸水嘛,真要是泼到身上我也不想躲开……”
砰!
……
“怎么搞的?”玛丽一边给范含上药一边问,“又让人打了?”
“唔……”范含嘴肿得说不出话。
“我就搞不明白,现在洛杉矶还有谁敢打你?”玛丽接着说,“别说警察,就是地痞流氓碰上你都躲着走,生怕一不小心成了反面主角,千夫所指的滋味可不好受。”
“唔……”范含回头幽怨的看了蓝蓝一眼,那眼神儿,跟第二届“斯蒂克”杯浣熊雕塑大赛优胜作品一模一样。
-------
(第拾伍章完)
(第二弓完)