Harry 的个人资料Harry's Coffee, Sugar an...照片日志列表 工具 帮助
10月29日

论computer science research和computer practice发展的关系


为什么突然想起了这个话题呢? 源自于刚刚读到的一篇文章,说来自中国的top conference paper 最近几年里有显著的升高,大家都知道在computer science这一领域中,没有人会管你有什么journal paper,top conference是research的真正前沿阵地。因此,根据这一现象 然后作者下了些结论,总体来说就是中国计算机领域的腾飞指日可待了 (http://www.mitbbs.com/article_t/CS/31173093.html)。 对此我也毫无异议,但却并非如此乐观。 最近狄仁杰看得比较多,于是乎,我就产生了从历史的角度去分析一下计算机研究和实用两者向前发展的关系, 并从这个关系入手看一看中国目前到底是什么现状,大家应该以什么心态看待问题。当然,此为一家之言, 并不一定反映出问题的全貌来,欢迎大家comment。

1. 问题描述和简介 (Introduction)

准确来说,计算机领域需要分为科学 (science) 和实践 (practice)两块,科学以研究为主,笼统分为软件科学(software science) 和架构/系统科学 (architecture/system science)。这里我们不讨论硬件设备的发展,这些已经离开computer science范畴,进入人家物理微电子领域去了。 软件科学起源于20世纪前页甚至19世纪晚期的对于逻辑和数学的研究,这两者都广泛影响了程序设计语言 (programming language)的设计和实现,程序的抽象 (abstraction),类型系统 (type system), 以及编译器的产生和发展。另外一方面,如大家所知,计算机架构科学其实并不能称之为科学,因为没有太多的理论包含其中,其多少年的发展不过是在 时间 (time),空间(space),成本(cost) 这一三维坐标系中游走,大部分的研究应该划分到工程领域 (engineering),因为纯粹是在三者之间进行 tradeoff,不断尝试在这个坐标系中寻找更加适合当前情况的优化组合 (i.e.,怎么才能快,小,省)。

当然,与物理数学等纯理论学科不同的事,我们有实践这一块,这是computer science发展的源动力,价值所在,以及研究的最终方向。这个领域之所以在过去几十年中发展这么快 ,就是因为我们的实践范围极为广泛(i.e.,所有人),用户在实践中的正面反馈以及不断产生的新的要求极大的促进了整个计算机届的发展,于是就出现了所谓计算机工业,出现了专门以计算机为业的人 (i.e., 民工)。 当然,研究的不断深入以及越来越多的人投入进来,绝对是因为大量研究成果的实现以及平民化,实践被往前推了,当然反馈给研究,就需要挖掘更加深的东西。 一旦研究不能benefit实践, 研究速度就会放慢,投入就会减少,计算机研究就变成与物理,化学,数学一样的纯理论探索,就会停滞不前。我碰到很多做纯理论,并且很enjoy的人,当然我的理解是在计算机领域里面为了理论而研究理论是没有太大前途的。

2. 计算机发展历史上的研究和实践互相促进
在计算机发展的60年历史中, 研究和实践的关系大概从 1957年Fortran被发明开始,就变得相当的紧密。 当时IBM 为了推销它的一款机器,由John Backus 领衔,设计出这样一个通用的高级命令式语言。 当然,一经推出,大受欢迎,当然这可能也与当时战后的大规模重建有关系。从此之后, 一发不可收拾,各种技术雨后春笋般的出现在各种conference的论文集中,然后又迅速的被应用的新型计算机的设立里面。软件里面类似有 register allocation, concurrent programming, OO, 编译器构造和里面的程序优化,到后面的动态编译和优化,虚拟机等等;系统架构的有系统的容错,各种parallel programming model 的正确性,L1/L2 cache架构,RISC指令集,pipeline,到后面的multicore,speculation,数据库的建立,查询,容错等等等等,最开始的paper都是出现在 OSDI, PLDI, OOPSLA 等会议的论文集或者 Communication of the ACM这个已经作古的杂志中。自己看看这些文章,你会发现这些 idea 都很简单 (至少不太复杂),大部分情况是, 哎,我有了这写东西,可能再要有个那个东西会更好一点,这样“那个东西”就被设计出来了,然后有了"那个东西",还需要下一个,于是乎,就又有了新的东西。 这样几十年的不断更新有了现在的计算机模型。总体来说,从1960年到2000年,研究和实践有着非常紧密地结合,当然主要是在大的公司研究机构像IBM research (那个时候MSR还不存在或刚刚是个小孩),以及top的学校里 (Stanford, MIT, Berkeley),稍微差一点的学校都没有这个能力去进行前沿的计算机研究。 不管在学校还是在公司,研究的都是有用的东西,成果可以立即应用在实践中。

从2000年之后,这个情况有所变化,研究和实践结合的没有以前那么紧密了。为什么,主要原因是 (1) 研究的东西过于复杂。去看看2000年以后的主要会议论文集,你会发现paper不再是present "简单"的idea了。这些idea 通常都非常的复杂和精深, 有着漂亮的外表和缜密的逻辑。这也很自然,因为简单的东西被找完了,无法再发论文了,所以大家要弄一些玄妙的东西,就类似现在拍断案电视剧一样。 不弄得神乎其神,匪夷所思,就已经不能再impress 审稿人/观众了。 但是神乎其神的东西必定不太会发生在实际生活中,所以网上这才有了“骗不了的狄仁杰,杀不死的李元方”这么一说。 复杂和精美的逻辑可以用来训练大脑,但是非常难于实现在计算机实践中,因为人虽然很聪明,但是总还是要承认自己的limit, 太复杂的东西,人脑可以完美的构思出来,但是却无法在自己的限度很好的驾驭它。 (2) internet的传播以及资源的平均化使得广大(中等)学校也有机会参与前端的研究,以至于竞争激烈,只能靠着脑子去想这些(高深莫测)的想法来博取眼球。 (3)这些复杂的东西也许会有用,但是有用的比例显然比不太复杂东西的有用度低很多。 如果以横轴是有效性,纵轴复杂度画一个曲线,这个曲线一定是 先上升,到顶,在下降这样一个趋势,有用的东西永远不可能太过于复杂。

当然这样的研究还是非常有用的,用处在于培养出一大批能够有独立思考能力,强动手能力和逻辑能力的研究人员,这个作用远远大于能作出能在几年内应用的技术来。 这些人员 往往真正发乎其用处的时候是在 离开了其原来的研究,而进入与实用更加接轨的 “不太复杂”的研究中。以前做的东西虽然不能用,可技术在,思维在,应验在。 所以目前计算机研究还是鼓励大家不断发top conference的论文,我向主要作用在于育人而大过出东西了。

这一点通过比较 IBM research 和 Microsoft research 也可以看得出来。 IBM research目前研究的范围相当的实用,只限于自己产品相关的,而MSR貌似还在support一些 fundamental research,可以是非常理论 (我的一个MSR朋友的一个组投了13篇POPL(一个相当理论的会议) submission)没有任何实际意义。但是我不得不说,毕竟姜还是老的辣, IBM走过这么多年,在对于未来发展的眼光方面还是长远很多。 在我看来我们组几乎任何一项研究都能马上转化生产力,但是却不一定能发paper.在这个时候,能够不用发好paper这一世俗的标准来衡量research的质量,可见眼光长远,因为IBM已经意识到这个时代的paper已经不像几十年前那样对实践有那么大的影响力了.再这样做下去,research对于实践的意义在哪里呢?所以 貌似MSR这几年在各个领域的 top conference都胜过了 IBM,可是我真不敢说,这个胜利意味着什么,对公司,对行业,还是对计算机10年后的发展? 

3. 中国目前的现状
目前出自中国的top conference paper多了起来,大概教育部门又要洋洋得意了,官长们又可以做标榜的资本来。可是我宁愿看到这些paper出现在十年前的中国,而不是现在的中国。如果要衡量IT十年二十年里面的发展,我觉得目前来说需要看的是

1.是不是有聪明的人
2.是不是有足够有影响力的企业 (有技术含量的startup目前在中国还不太行得通,山寨可能还行)
3.这些人是不是有部分可以进入这些企业,并且做的是以前的相关工作。 

 如上面论述的,这些paper出现,说明中国有这些聪明的人,他们的逻辑能力和动手能力都不错,但是这些paper里面的技术没有任何现实意义。其次,中国有些有影响力的企业,类似联想,甚至百度都不错。所以第二条也满足。 第三,好像这些发paper得人没有最后进入这些企业做同样的工作的。据我所知,这些人大部分来了美国,少部分人留在了学校,还有些人选择了外企,做和以前毫不相关的事情。对这些人来说,进联想可能更多意味的是丢面子而不是自豪。所以用这部分人的脑力资源去推动中国自主的IT实践发展目前来看是不可能的。这就是为什么我最开始说不那么乐观的原意。

4.总结和展望
当然,有高档会议的论文是好的,这毋庸置疑。但目前的中国问题在于如何利用这部分发了这样paper的人,让他们搞清楚做有用的东西比发这种脸面上的论文要有意义的多,而不是把他们浪费掉,或是让他们永远停留在以发论文为荣的状态。至少现在大部分学校的情况还是SCI至上,论文至上,所以要明白这一点不容易,做到更难。我想,什么时候中国能出一本 类似于design pattern这样的(来自于实践)书,这大概才真正意味着中国有自己的计算机产业了。
</font>