对话:中国软件能不能找到自己的核心技术

 

 对话:中国软件能不能找到自己的核心技术
 
2002-12-13 17:08 /(《程序员》) 

--------------------------------------------------------------------------------

 
  倪光南中国工程院资深院士,联想汉卡研发总工程师,政协委员。

  戴习为原微软高级软件结构师,笔视窗部技术主任、比尔·盖茨访问中国时的私人顾问,曾是微软公司内部最高技术职位的中国人。

  陈榕现任北京科泰世纪公司首席科学家。1992年进入美国微软公司总部工作,先后参加过操作系统、OLE、COM+的研发工作。2000年参加创建北京科泰世纪公司,主持设计了自主版权的“Zyco”中间件Internet操作系统平台。

  主持人:闫辉

  主持人:中国软件公司规模小,产品附加值太低,缺乏在行业具有影响的核心竞争力,在世界软件生态圈中属于那种“打工者”一类。IBM大中华区董事长兼首席执行总裁周伟焜指出,未来IT业的竞争在软件,软件的竞争又在于核心技术,如果没有找到自己的核心软件技术的话,今后将很难在国内软件界立足,更谈不上走出国门了。但如果找到适合自己发展的模式,十年之内,中国将涌现出一批世界级的软件公司。到底中国软件产业能不能找到自己的核心技术呢,我们有幸请到了倪光南院士、戴习为老师和回国创业的科泰世纪首席科学家陈榕一起深入探讨这方面的话题。

  回顾过去几十年的发展

  蒋涛(《程序员》杂志及CSDN网站负责人):今天再次请来戴老师参加对话,还有倪光南老师和科泰世纪的陈榕一起来探讨中国软件核心技术话题。谈到中国软件,好像还没有真正成功的产品化技术。国家这些年投入了巨大的精力去发展,应该说也不是没有机会,但中国软件缺乏核心竞争力是不争的事实。

  倪光南:这个问题我可以先开个头。发展中国软件核心技术不成功的原因有很多,但从IT产业发展过程看,软件产业还是属于应用型产业。我认为,要想真正发展,需要在市场环境下以企业为主体。过去我们国家基本上是以科学研究的形式去做的,这种形式对基础科学比较适合,但对于应用研究,从发达国家的经验看,以企业为主体是比较成功的。现在很多人已经意识到这点并开始行动,这是好现象。

  戴习为:一方面我同意倪老师的观点,同时我也提出另外一种思路,我们过去在国家为研究主体方面也有成功的案例。比如“两弹一星”的研制,当时并没有市场经济,但今天空间技术在国际上拥有一席之地是同这种老模式密切相关的。美国也有很多技术是国家负责,很多好的操作系统都是各个院校最先研制的,而且这些院校仍然在推动操作系统技术的前进。美国科学基金会的运作也属于政府行为,并在技术发展上起了很大的作用。陈榕:我比较同意倪老师的观点。但我认为以前的工作不能定义为失败,因为除了起步晚,很多事情不是技术人员所能左右的。要想成功,首先需要历史的积淀,此外还需要具有一定的团队规模。现在国内的软件公司,不要说赶上微软,规模上百人的都很少。公司达不到一定的规模,就经不起风浪,一遇波动就很容易垮掉。

  倪光南:我认为基础科学要靠大学、科研机构作为主体,工程技术要靠企业作为主体,并在市场环境下发展。对于跨领域、超大型、有重大意义但企业无力承受的项目,可以由国家负责,这在中外都一样。但一般项目没有必要一定靠国家做,反而不如由企业去做,国家提供支持更好。现在很多863计划项目就是由企业在国家的支持下完成的,这两种模式没有矛盾。蒋涛:这让我想起Oracle起步时的故事。当时IBM的专家写出了关系数据库的论文,但关系数据库的产品是由Oracle先开发出来的。不过最初Oracle的几个版本都无法达到所宣传的功能,客户也只有海军和中央情报局。尽管系统无法使用,但这些客户仍然下单购买,这种支持对于后来Oracle的成功作用极其重要。

  陈榕:很多创新的软件技术一般都要做四到五年,而且第一版非常脆弱,要取得一定成功通常要经过三个版本。Windows NT是1989年开始做,直到1993年才发表第一版;.NET在1998年就开始研发,直到今年春天才发布。Dos的3.3是最成熟的版本,Windows的3.1也是最成功的版本。

  尽管某些项目开始可以由国家来支持,但最终还是要靠市场验证,所以不能总指望国家的支持,没有四五年之后通过市场自己站起来的决心是不行的。国内很多院校的研究根本就没有指望出市场成果,尽管有很多博士生的研究题目非常好,但一旦毕业离开之后,新来的人又要重新开始,技术得不到延续发展。再加上院校都各自为战,资源无法整合,无法形成向心力。我们国家能人很多,但要组成一支有信心和耐力、有战斗力的队伍不容易。设想一个需要开发五年的产品,这五年期间,要做到让公司内部的员工理解就非常不容易,更不要说让外部理解了。

  蒋涛:应该说核心技术需要从三个层面上定义:首先是国家和政治利益上的考虑,比如安全问题;另外是从产业上考虑,作为经济支柱的核心技术,如果不做,那就要交钱给其他国家。第三个是技术层面。这方面其他国家的发展策略是什么呢?

  倪光南:软件中涉及很多技术,操作系统是很重要的一项。但我们发展核心技术不是要谈哪个重要,而是哪些缺乏或没有基础。有些人会问:干嘛要去做自己的Office,现在的微软Office不是很好的吗!他们不知道中国需要有自己的Office。同样,我们也需要在操作系统方面做些工作。而应用软件方面的情况就好很多,某些方面还不错。

  对于国家来说,要考虑到安全性,当然不希望被某一种软件或者操作系统所控制,而且产业的利益问题也很重要。现在欧洲的一些国家很重视Linux,应该说,Linux是可用的,现在已经比较成熟,尤其在服务器端占领了相当大的市场。除了服务器端和嵌入式设备之外,我们需要在桌面端下更大力气将Linux做好,首先可以在政府和企业行政领域进行推广,因为他们的应用其实很简单,主要就是Email、浏览器和Office,Linux的上的这些应用程序都已可用,只是个人应用方面还没有足够的软件。

  现在如何去发展软件核心技术

  蒋涛:我们如何在中国软件核心技术方面进行创新呢?

  陈榕:创新需要结合大趋势。比如最近的Web Services,IBM、Sun和微软一起加入Web Services的联合体,所有的大公司,无论是对手还是朋友都加入这个阵营。那我们国内同行能不能认同这个技术发展的趋势。我认为不能说因为微软向这个方向走,我们就认为是骗人的,抵制这个方向。当然我们还要保持一个清醒的头脑,每个公司都不会持完全公正的态度。Sun代表Sun的利益,微软代表微软的利益。这时候,就需要自己有判断力,清醒地判断他们各自的利益在哪里,进而定位自己的路线。计算机技术可以申请专利,产品可以基本无成本复制,因此说软件行业就是很容易产生垄断的行业。如果我们只是照抄某种技术,而没有自己对市场前景的预见能力,失去了国家的支持,是很难站起来的。

  戴习为:的确软件技术发展要创新,也需要自己有判断力。如果决策层失去判断能力,只看到目前市场上的产品,不去关注对方研究机构中的超前技术,就不可能走到别人前面,如果放弃跟踪国外的趋势,更不应该。从另外一个层次上讲,计算机教育也很重要,我已经两年不接触大学了,但两年前,我感觉学校教材很陈旧。

  陈榕:创新不能只抱着学习的态度。计算机是一门人为的科学,计算机就是人造的,第一行程序、第一个磁芯都是人创造出来的,它不像物理、化学属于自然科学。相比起来,计算机科学更是一门工程学科。工程就是在一定条件下,多快好省的完成某项任务,这就决定了工程师肯定会受当时条件限制,比如在8086时代,程序不可能有多线程的概念。所以我们不能把计算机当一门纯科学来看待。

  作为工程师,不知道历史,不知道某种软件当时是如何设计和进行取舍,而是一味的崇拜,就不可能设计出新东西。50多年来图灵机没有变,冯诺依曼机没有变,有没有可能发明新的操作系统?事实上,从Dos到Windows,到现在提出Web Services模式,应用一直在变,环境也不同了,这就给工程师提出了新的挑战,要发明新的东西。

  倪光南:有些人一看到别人创新,内心就会有种抵制情绪。有次我和永中的总经理曹参进行网络聊天,有人问:你会写代码吗?他以为写代码就是一切了,他不知道能够像曹先生这样提出新观点的人才是最缺乏的。曹先生的很多理念都是从实际中得来的,他自己设计过软件,也有失败的教训,对应用了解的很透。他知道这些软件有哪些问题,比如他要做的多维决策,是企业高层决策的需要。能够知道未来的软件如何做,知道要做什么才是更重要的。只有具备了这种创新的精神,别人的失误才可能成为我们的机会。

  蒋涛:这和国内的环境有关系,刚开始做出的产品肯定是有缺点的,但我们要有一种容忍的态度,先看它的优点,再反过来看它的缺点。创新的思想也不是突然迸发出来的,而是一个积累的过程。新技术需要继续前进,也需要有人去挑战它。陈榕现在做的《和欣》操作系统和ezCOM就是非常有创新思想的技术。

  陈榕:其实有些道理并不复杂,作为一个使用者,只会感觉微软的每个产品都很好用。从技术上分析,微软为什么要发明一个新产品,其原因在于上一代产品有根本的缺陷,有一个坎过不去。但到底这个坎是什么,如果不参与这个产品的开发是很难了解的,微软现在为什么要发明新的开发工具,为什么要转向Web Services,因为Windows编程无法满足Web Services的需要了。

  戴习为:陈榕说的很对,有些道理没有多么深奥,但需要站在一个更高的层次上看问题。把某种思想换一个角度,再回头看已经存在的技术,就会有不同的感受。

  陈榕:Web Services是什么,为什么国际上的大公司都向这个方向走,这个转变能提供什么样的机会。我们可以从操作系统演变,编程模式演变和语言演变三个方面来阐述这个问题。

  首先是操作系统的演变。我们说操作系统很重要,这句话不错,但什么是操作系统?八十年代Dos是操作系统,九十年代操作系统是Windows,未来的操作系统是什么,肯定其含义也在逐渐变化。我们不能说操作系统就必须遵从冯诺依曼的理论,必须有管理硬件和内存的功能才是操作系统,实际上,操作系统更多是为了支持应用程序模型。

  最早字符模式下,操作系统就是直接接触硬件,按顺序执行的程序包。应用程序需要操作硬件时就会向操作系统发出指令,如果不需要,程序就自我运行。用户只能被动地根据程序的提示进行输入,整个状况是以程序为中心,驱动用户和操作系统。到图形终端,逐渐走向了用户为主体的方式,由用户驱动程序。接下来发展到Web Services模式,比如网页中有很多不同语言编写的独立模块,这些模块不存在主从关系,那如何控制这些对称的模块呢?任务自然而然的就落到浏览器身上,这时浏览器把所有的程序组织起来的,客观上就起到了操作系统的作用。微软下一代的Windows系统只是作为一个系统相互兼容的手段,到那时,文件系统和Web Services的数据库系统已经统一起来了。网络就是一个大计算机,这也就是“无所不在的计算”的核心思想。

  这样,操作系统各种应用模块要在一个平台上运行,各个模块之间如何调用,如何组织动态的链接,模块之间如何通讯,模块之间的搭线连接这些功能都应该由虚拟机去实现,这样操作系统面临的编程模型有了改变。如何支持这Web Services模型成为了下一代操作系统的核心,也是国际上公认的方向。现在,所有的软件公司都希望从自己擅长的领域出发,占得先机。因此IBM从解决方案扩展,Sun是从应用系统转移,微软从操作系统进军,BEA从中间件涉足。这个系统可以用JAVA做,也可以用C#做,还可以用我们公司的《和欣》系统去实现。

  从编程模式看,程序开发经过了结构化设计,面向对象设计,现在发展到面向Web Services模式。结构化设计只是实现了函数,对象只是实现了模块,构件实现了对象的封装,而Web Services将这些封装的库组成为整体的服务。技术发展到现在,面向对象技术已经走到一个新的里程碑,我们可以用Web Services的思想来重新思考现存的技术,能不能用Webservice的思想来写图形系统、数据库和文件系统?这就是我们ezCOM技术的出发点。

  我们再看编程语言的历史。最广泛使用的面向对象语言是C++,虽然C++的效率很高,但1985年人们对面向对象的理解是有局限性的,不能做动态链接,因此,从根本上讲,C++是一个静态的编译语言,它开发的程序很难达到即插即用,动态组织,几个模块就能拼装成具体应用的程度。尽管C++发明时有局限性,但不代表没有办法改进它,让C++能够表达Java和C#背后的思想,这也是我们发明ezCOM的原因和目的。同时我们把虚拟机做到操作系统当中,效率可以更高,这也代表了未来操作系统发展的方向。

  我们现在做了一个小的OS,做在硬件上,未来的程序可以运行在Windows、Linux和我们的系统上的,而且不需要重新编译,我们并不是来替代Windows的,要不然为什么要这些程序运行在Windows和Linux平台上呢。戴习为:我觉得陈榕刚才讲的非常好。他第一次和我谈OS设计的时候是十年前,我当时就有耳目一新的感觉。姑且先不谈他的对错,有这种思想本身就是极其可贵的,因为他跳出了单纯技术角度看问题的层次,已经到达更高的境界了。这也是我愿意支持他的原因。

  倪光南:遇到像陈榕这样有创造性思维的人,我们要支持,国家更要大力支持。国家需要一批具有长远眼光,看到未来发展方向的人。但是,陈榕现在所做的技术还没有完全达到产品化阶段,他现在是在嵌入式系统上进行推广,一方面完善,验证产品的架构和理念,同时也可以给企业带来一定效益。但对于更大的应用,可能要到几年之后了,所以除了支持他之外,我们还要考虑现实的问题。

  在今后一段时期里,除了面向Web Services的系统之外,传统的操作系统也还是需要的,因为这个替换是逐渐进行的。而且还有很大一种可能,就像当初浏览器本来可以与操作系统无关,但最终人们发现浏览器已经成为了Windows的一部分,所以微软肯定会使得Web Services在Windows的平台上运行的更好,让大家都用微软Windows下的.NET,这样可能在PC上还是Windows的天下。微软还会将其揉和在一起,垄断传统计算机设备。所以对于中国的IT产业,除了要做Web Services,我们还是要提供一个在操作系统上与Windows竞争的对手,现在看,Linux是最现实的。所以我们需要把近期和远期目标结合起来,从现实的角度去看待核心技术的发展。

  蒋涛:要做这些创新技术的话,最终还是要在国际市场上去验证。Linux的成功很大程度上是因为和美国工业界紧密结合在一起。国内的企业要提升自己看问题的角度,不仅要考虑国内的市场,而且要考虑全球市场。

  戴习为:这个我很同意,现在汉王的手写识别做的非常好了,他们已经完全有能力去国外开拓市场,但为什么只把眼光瞄准国内呢?

  陈榕:某些商用软件,比如财务软件可以在中国取得成功不代表他可以在美国取得成功。

  因为美国是国际上最成熟的市场,作为一个纯技术产品,如果不被美国市场认可,不在国外取得成功,肯定是有局限性的。因此假如我们成功了,那肯定是美国在中国之前。因为中国更多的人对我们所做的事情持一种怀疑态度,这我们也能理解,因为之前我们国家从来还没有操作系统成功的先例。

  哪些人才去做核心技术

  蒋涛:戴老师和陈榕都在美国多年,现在选择了回国创业,我们如何来吸引和留住这些人才呢?

  戴习为:1996年以后,我基本上40%的时间都在中国,从最高层到底层,我都接触到了。从大环境上,首先政府要营造一种环境,不能只想明天就挣钱,否则具有竞争力的核心技术是做不出来的。“海归”有基本的生活要求,需要能代表其劳动价值的回报,但这不是最重要的,更重要的是这里有实现其抱负、理想和自身价值的环境。政府已经意识到了这点,但在具体操作上,还没有当年老一辈革命家对待像钱学森这样老“海归”的那种心态,给足够长的周期,并允许其失败。

  倪光南:对于人才问题的解决,我觉得现在这个时期条件非常好。一方面国家对信息化很重视,国内市场也很大。而美国的IT相对低迷,资本市场对这些创新反而不感兴趣。这些人才在美国实现创新很难,但国内可以给他提供一个实现的条件,同时本土的优秀科技人才可以在这些人带领下成长的更快。所以“海归”和国内人才的结合是一个比较好的时机,也是政府应该鼓励的。这方面,陈榕是例子,他和国内来自清华的很多高级技术人员结合的就非常好。

  应该说,陈榕他们已经取得了一定的成功,只是程度的问题,因为他们的系统已经在嵌入式应用了。此外,还有像中芯微系统公司推出的方舟嵌入式CPU、永中Office和中星微电子等,都是“海归”和国内人才结合的很好例子。

  戴习为:“海归”回来能否成功还有一个很重要的因素,那就是能不能本地化,了解和适应国内的市场文化、管理文化、科研文化。

  陈榕:其实“海归”与否并不重要,国内也有很成功的案例。在国内,我很佩服王志东的技术眼光,虽然没有见过他。当时他写的Windows外挂中文平台到那个程度说明其对Windows的理解是很到位的,比如他对hook技术的使用,能把link libraly破译,没有信心是不敢去做的。在商业上,他也成功地运作了网站,现在讲第三代互联网,虽然他发表的文章不多,但我认为王志东从技术方面看说得是最到位的。因此无论是谁只要能做事,国家就应该支持,而不是只支持海归。

  其实中国和国外的软件技术差距没有想像的那样远,不要太悲观。只要看准了方向,慢慢走不要紧,不要害怕失败。现在做的产品能够达到微软97、98年的水平也已经不错了。改革开放之后短短的时间,国家都强大起来了,何况操作系统,何况核心技术呢。我们出国的时候,当时谁能想到现在中国的强大呢!

 
 
 
 发表评论 【责编: 宋云霞】

你可能感兴趣的:(软件行业,软件之外)