用户注册 登录
珍珠湾全球网 返回首页

岳东晓 -- 珍珠湾全球网 ... http://ydx.zzwave.com [收藏] [复制] [分享] [RSS] 岳东晓 -- 珍珠湾全球网

日志

什么才算懂 computer science (2)

热度 2已有 800 次阅读2021-8-22 02:41 |个人分类:计算机|系统分类:科普

记得在北大物理系的时候上过一次计算机课,要使用 Fortran 编程。我中学时只在学校短暂地见到过 BASIC,也怎么没有学。物理实验室老师简单讲了一下,我估计也没有认真听,对 Fortran 自然也是没有什么概念,轮到上机时依样画葫芦的程序就是无法运行,而上机时间就那么一个小时,正式焦头烂额之际,一个北京的女同学过来,帮我调通了,而我也不知其所以然。那个内心的尴尬,自然不用说了。此后在北大也没有再用计算机的机会。现在回顾起来,也会暗骂  Fortran 是最混账的语言。

后来到了明尼苏达大学,大概1991年,上了一门计算机数据结构的课程,教授是刚毕业不久的计算机博士。使用的语言是 C++。这在当时其实是很新的,而我对计算机基本就是空白,也不知深浅就上了。跟我分组一起做 project 的搭档是一个年纪比我大很多的一个公司的美国人工程师,有丰富的 C 语言编程经验。第一堂课我可能只听懂了10%,老美搭档跟我说起 C 我完全也一无所知。当然我不认为这是什么问题,只是买了两本书自行学习。听到第三堂课的时候,我好像突然明白了。做第二个 project 的时候,是一个走迷宫的程序。搭档还是 C 的思路,一堆全局变量,写了巨长的代码,我给他看了一下我写的,简短的 C++,面向对象编程的优雅。相比丑陋的 Fortran, C++ 的优美使我对计算机产生了非常大的兴趣。后来我主要研读的,而且认为必须掌握的是连个东西,一个是 Compiler 一个是操作系统。很快,我开始跟计算机系的博士生一起上课。记得那时候经常深夜在家通过电话拨号上网连到计算机系的工作站上写代码... 现在想起来,明大真的很好,虽然我是物理系的,但是在计算机系学习、使用这些资源都是免费的。我本来准备拿三个学位,因此还在EE系学习,但后来从EE退出了。

1995年初,我还没有毕业,突然收到一个电子邮件,城里的一个初创公司的一个主管在找我。我从未听说过这个公司,不知道他们怎么知道我的。于是去面试了一次,当时他们就说要我加入。我还在犹豫,过了两天我在家,有人按门铃。开门一看是这个公司的帅哥副总,亲自把聘书送过到家里来了,年薪5万美金有余,我对这个热情好生感动,我都没毕业,总不能像诸葛亮那样,让人三顾茅庐吧。而且这个工资在当时的明尼苏达应该是相当不错了。于是我欣然接受了这份工作,开始上班了。白天上班,回家还得写论文, 有时还在网上发表长篇雄文。后来,我问主管你怎么就找到我了。原来是他在USENET上看到我跟人讨论网络与操作系统的问题,认定我是个高手。我当时自然并不知道自己是个高手。高低是一个相对概念,没有比较是不知道的,就像张无忌练了九阳真经,并不知道灭绝师太已经不是对手了。事后想起来,其实当时在USENET讨论的对象应该就是高手。

这个公司是开发一个相当复杂的医疗管理系统,初试用户包括 Mayo Clinic 等医院。我去的任务是将原有的二级系统开发成三级系统。所谓二级系统是 Window PC 直接连到 数据库服务器上,逻辑在PC 端,而且PC用户段必须得有对数据库相当高的权限。其弊端显然,而且软件许可成本高。三级系统就是将大部分逻辑移到服务器,服务端访问数据库,PC端基本只是界面。

当时我们购买了波士顿一个公司的中间件软件。但以我的水平一眼就看出它的IDL compiler 其实是拼凑而成,很多地方甚至是用 sed, awk 进行一些简单的预处理,使用起来存在很多问题。于是我完全从零开始写了一个 IDL compiler,直接生成PC客户端需要的代码。医院系统的数据库与逻辑极为复杂,公司有专门的专业人士负责这部分商务逻辑,数据表数量非常多,一个数据表的列也很多,要手工把这些都转成三级系统工作量相当大。后来我又开发了一个工具,从数据库数据表直接生成 C++ 代码,将工作效率提高了N倍。

当时正是 OJ 案庭审。我还是住在明大的研究生公寓里,有个有线电视频道 Court TV 播放整个庭审的全过程。我就像看篮球赛一样一集不落,着实精彩,要知道OJ可是花了血本请了一流律师。其中一个(还是个配角)就是人称性感女神的卡戴珊的爹(也难怪她也一直努力要考律师执照)。我每晚看完OJ案,第二天就跟同事们津津乐道地分享。有个白人同事非常自信带着对OJ轻蔑的口气说,只要有一个陪审团员说有罪,就得重申,审到他钱耗光为止,他就完了。后来结果出来,大家的震惊可想而知。

后来有次公司请了波士顿那个公司的高级工程师来咨询了两三天,据说价格相当高昂,好像每小时费用以千美元计。他看了一下我写的 compiler 脸色好像有点变了-- 想想也是,他们公司好几十号人,还有计算机教授,这个东东算是核心技术了,我这个比他们的显然更先进。当时服务端每次遇到一个新的请求都是 fork 一个新的进程进行处理,我那个主管问他能不能提前 FORK 若干进程,然后这些进程轮流处理来自客户端的调用。这个中间件不支持这个模式,他弄了半天也没能找到方法。我知道后,写了几行代码就解决了。其实这就是需要对 UNIX 核心有一定的了解,读懂了那本UNIX设计的书就知道怎么做,很简单。但如果不懂系统核心,又没有葫芦可以照样,那是做不出来的。

这时,我发现自己可能真算是高手了。



路过

鸡蛋
2

鲜花

支持

雷人

难过

搞笑

刚表态过的朋友 (2 人)

 

发表评论 评论 (3 个评论)

回复 Wavelet 2021-8-24 10:00
Which Unix system did you use for Mayo Clinic? Solaris, HP 3000/9000, IBM AS/400? Or maybe DEC VAX?
回复 岳东晓 2021-8-24 12:13
Wavelet: Which Unix system did you use for Mayo Clinic? Solaris, HP 3000/9000, IBM AS/400? Or maybe DEC VAX?
AIX
回复 Wavelet 2021-8-24 12:36
岳东晓: AIX
Nice - one of the best.

facelist

您需要登录后才可以评论 登录 | 用户注册

Archiver|手机版|珍珠湾全球网

GMT+8, 2021-10-20 01:52 , Processed in 0.021100 second(s), 9 queries , Apc On.

Powered by Discuz! X2.5

回顶部