关于 OO 及虚拟机的简单认识

putongren 2003-09-16 01:06:35
请大家指正。谢谢。

一、OO

OO 本来是编译器的事儿,是程序高手让编译器能够编译数据与函数的封装及继承等语法,以便提高代码的可读性及复用性。

大的计算机系统复杂性的增加及软件开发量的不断加大使 OO 逐渐成为把事情理清楚、弄简单的好办法,于是各编译工具(包含在开发环境之中)的供应商不断推出 OO 编译器,实现大系统的 OO 理论也迅速发展。然而对于小的应用程序开发,是否 OO 倒没多大区别。

OO 终归是编译器支持的语法,OO 编译之后的结果还是机器指令与对操作系统 API 的调用,所以 OO 支持的语言实际上是编译器在机器指令与操作系统 API 之上定义的语言。进一步,OO 编译器支持的语言就是标准 OO 语言(主要由编译器支持)与操作系统特色 OO 语言(主要由操作系统支持)的累加,有人说其比例是 3 比 7。所以某一种 OO 语言的实现能力主要是由编译器与操作系统 API 共同决定的,当然其配套的 IDE 对程序员的影响也很大。

OO 语法在最终对编译器产生决定性影响后——当然从此对软件开发人员也形成决定性影响,开始对行业产生更大的影响。

OO 思想对操作系统 API 及应用软件的也产生了影响,与编译器支持 OO 的形式是类库不一样,操作系统对 OO 的支持形式主要是组件,类库与组件之间没有任何必然的联系——尽管组件像是类的实例化。这两种开发形式对程序员开发来说没有多大区别——都是在基本 OO 库的基础上制作自己的 OO 库。但是对于 OO 库的应用来说有区别,编译器支持的 OO 只能支持代码库的复用,而操作系统支持的 OO 除此之外还可以支持应用程序、应用系统的复用。另外,操作系统的 API 也开始向 OO 的形式转变——尽管其内部结构变化不大。

二、虚拟机

虚拟机是一个应用程序,为每种操作系统的开发了一个版本,它提供一组标准的 API(有的还提供实时编译器),仿真一个标准的CPU及操作系统的 API 集,在其之上的应用程序可以像运行在一个真实的CPU与操作系统之上一样。虚拟机实际上主要做的是从其自定义的 API 到操作系统 API 之间的“翻译工作”。虚拟机的好处是程序员的程序可以在操作系统之间复用,另一个好处是可以增加操作系统的安全可靠性——相当于又增加了一个系统运行级别。

与 OO 的发展原因相似,大的计算机系统复杂性的增加及应用的不断增加使基于多操作系统的开发要求越来越多,虚拟机及其之上的标准组件库显然是减少开发量、增加复用的好选择。然而对于小的应用程序开发,是否用虚拟机倒没多大区别。

三、OO 与虚拟机

OO 与虚拟机没有必然的联系。基于虚拟机进行设计的编译器供应商如果提供支持 OO 的编译器,那程序员就用 OO 开发;如果提供的不是 OO 编译器而是如 BASIC 编译器,那就用 BASIC 语言进行开发——当然到目前为止这只是一种假设。

OO 与虚拟机的本质是一样的——都是为了复用,所以其二者的结合逐渐成为大型系统的开发的主要模式,进一步引得大的系统供应商竞相把自己的系统向这种模式转移、转变。

四、各种 OO、各种虚拟机之间的竞争

OO 思想不会有竞争的,竞争的是编译器(及其定义的语法)。但编译器主要依赖于虚拟机,所以虚拟机的竞争是主要的。如果虚拟机都是一套标准的模式,那很快就会抹平竞争优势,这是不现实的,所以各虚拟机的性能会迅速提高、组件会迅速增多,但这又与垮操作系统发生冲突。

说到底,OO 编译器、虚拟机都是开发工具,加上底层的操作系统的不同支持,供应商会在平台的广泛适用与高级功能之间不停地进行竞争、平衡,这大概会是未来很长一段时间的主要竞争模式。进一步,整个行业应用程序开发都将向这种模式转变。

五、竞争产生的影响

这次行业变化会像互联网初期的泡沫吗?基本不像,基本是不会回头了。互联网泡沫是外行人来折腾的,但这次是内行人在折腾,而且都是大家伙。

对普通程序员的影响。就算对 OO 及虚拟机再看不顺眼、再深恶痛绝,但跟上游戏规则制订者的变化步伐是无庸置疑的,否则就要被边缘化直至淘汰。实际上这是开发高手引发的革命,对程序开发利远大于弊,程序员最终会受益的。

对操作系统的影响。除非与虚拟机紧密结合,否则操作系统的重要性将逐步降低——垮操作系统的必然。操作系统的许多附加功能将向虚拟机转移——以虚拟机上的组件的形式出现。

这是 IBM 与 Microsoft 的对决吗?本人觉得是的,但别问我谁会赢,高手巨人的竞争是我们这个行业发展的内部动力,我希望竞争能长期保持下去,别再回到 IBM 的垄断时代,或进入到 Microsoft 的彻底垄断时到。
...全文
18 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jim3 2003-09-16
  • 打赏
  • 举报
回复
putongren 2003-09-16
  • 打赏
  • 举报
回复
自己up
carper 2003-09-16
  • 打赏
  • 举报
回复
是呀,现在要赶上潮流,只要不是写底层的开发人员。他的选择就只有两个, java 平台 或者 .net 平台。

好在这两个平台的东西,都特别象。对开发人员来说,从一个平台到另一个平台。 只是语言和具体编程积累的问题。
linday 2003-09-16
  • 打赏
  • 举报
回复
大一统
winux 2003-09-16
  • 打赏
  • 举报
回复
说得有道理

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧