在微软视窗平台上,存在许多应用程序,比如,字处理与电子表格。在这些应用之间,有一位“小天使”(VBA)颇受微软的精心呵护长达二十年之久。为何如此?
昨日,有一位读者多次留言为金山WPS辩护,好似金山的代言人。在“”核高基“培育”外国种“(COM)究竟是谁的责任?”短文的留言中:他这样说:”Workbook对象是在金山公司写的WPS代码里实现的,而不是VBA的代码里实现的。这个对象及相关属性的实现都是基于金山自己的代码“,还说:“VBA中运行的程序应该是通过进程间通信控制WPS的。VBA里看到的WorkBook是对WPS的东西的一个包装。金山写了一个COM组件,这个组件连接了WPS主体与VBA运行环境”,云云。
以上说法的真假,我们暂且不论。对于”Workbook对象是在金山公司写的WPS代码里实现的“的说法,我有点疑问。实际上,工作簿对象(即Workbook)是我们经常需要用到的一个”电子表格对象“,金山是怎么实现的呢?我们不得而知。但是,微软电子表格Excel却交代得很清楚:对象Workbook有108个属性,95个方法,方法SaveCopyAs只是其中的一个而已。方法SaveCopyAs是做什么的呢?方法SaveCopyAs以文件形式保存工作簿在内存中的副本,而不改变该内存空间。仔细想来,使用MSC++编写这个对象的方法至少要用数百条源代码。95个方法,108个属性,需要对少源代码呢?至少几万行源代码。另一方面,金山WPS代码实现(克隆、山寨)的工作簿对象,其运行效率与微软代码实现相比,谁的效率更高一些呢?金山知道视窗操作系统底层的机密吗?
我们先不说微软字处理程序Word,只说微软电子表格Excel。根据初步统计,Excel具有189个对象,属性与方法总计3000有余。据读者反映,金山克隆的电子表格et,运行时会死机。这是什么原因造成的呢?这与金山克隆对象的属性与方法“残缺不全”有关。
这位代言人还说:“VBA中运行的程序应该是通过进程间通信控制WPS的”。这种说法缺乏根据。因为VBA是一种面向对象编程语言,是典型的OOP编程,只能根据OOP的Syntax语法规则进行。至于怎样“通过进程间通信控制WPS(内核)的说法,令人存疑。
至于,金山写了一个COM组件,这个组件连接了WPS主体与VBA运行环境的说法,更为令人不解。微软VBA运行在VBIDE(VB集成开发环境)中,而VBIDE具有16个对象,105个属性与方法,金山何以能够用一个COM组件就”连接了WPS主体与VBA运行环境“?金山WPS的”主体“(或”内核“)究竟是什么?一句话,金山WPS(内核)为何要抓住微软VBA这根救命稻草?VBA是微软的“大宝贝”,仅仅是一个“私有标准”,金山为何如此热衷“遵守”?这与金山今日的当家人张宏江有何种关系?
如今,金山WPS(网络版)已经通过”核高基“重大软件专项的国家级验收,数千万补助费也花了,算是国家认可的“国产”软件产品。为避免将来可能与微软公司产生软件“克隆”纠纷,国家有关部门应当对其程序主体(或系统内核)进行“源代码审查”,并将审查结果公示于众。