Borland有一个梦,程序员的梦
作为一个程序员,我在软件行业已经整整十个年头了。现在,我有幸在北京borland工作,每天面对的是程序员赖以生存的工具软件,个中滋味,自然难以述说。
borland其实是一家小公司,在当前it领域遍地富翁的情形下,在微软、oracle、sun等软件巨头身旁,borland银行里那一亿美元的储备金,真的算不了什么。
但是我知道borland有一个梦,一个程序员的梦。为了这个梦能变成现实,borland的那些天才的程序员终结者们,总在夜以继日地耕耘着键盘,是的,总有一天,梦会成真,程序员们会为之狂悦。
每个公司都有自己的文化,就像每个国家都有自己的信念一样,borland也有自己的底蕴。福勒先生(现任代总裁)说过,要把borland建设成一个像瑞士一样的国家。哦,瑞士,这是个不大的国家,是的,borland只是一个小公司;它以精致的钟表和工具而闻名遐迩,borland曾用一个delphi维持了公司八年;它拥有勤劳聪慧的民众,borland拥有全球最有天分的一群程序员;它在各种艰巨的地形下建造了数不清的人工奇迹,borland打造了一个又一个的极品软件;在瑞士旅游,你不用担心便利性的问题,用borland软件,你无须关心繁琐的细节。最重要的是,瑞士完全中立,borland没有平台。
是的,borland的产品没有平台。这是西蒙先生(borland高级副总裁)给程序员的承诺。这是borland梦想的一部分,可以说已经基本实现。corba中间件产品visibroker屏蔽并连接了不同的平台。软件对象框架产品appserver、软件对象管理产品appcenter、java开发工具jbuilder都运行在jvm之上因而只要java能到的地方,这些产品就能到。数据库产品interbase已经做到了windows、linux、solaris三类平台之上。年底前delphi for linux、明年上半年c++builder for linux将出炉(参照kylix计划)。有什么理由不相信borland能实现自己的承诺呢?
其实borland所指的平台不只是操作系统平台,还包括语言平台,无论是pascal、c++、java,你看到的ide环境都会是同一个面孔,你使用的组件都是类似的架构。除开语言平台,还包括不同的软件对象体系标准。你会发现无论是使用corba,或是java、或是dcom、或是midas,你的对象总能互相通信,你在ide环境中时常会看不到具体标准的痕迹。对了,这就是程序员的梦。在程序员们逻辑的世界里,如何能容忍所有这些平台的束缚呢?我做不到,我一直试图打破一个又一个类似的壁垒,我一直就像在做恶梦,直到我发现borland可能做到。borland有同样的梦想。
想一想,为什么一个独立的软件,不能成为一个对象?自从我们发明了对象这个名词以来,似乎已经有太多的人在用这个招牌来吆喝自己的产品了。事实上他们都是对的,因为每一个独立的软件都是一个货真价实的对象。因为它们独立,所以它们满足对象的最基本条件:封装。至于继承,在新软件中使用旧的代码,是不是继承?还有多形,写一个类似的程序,把它和现在的软件放在一起组成一个组,分别实现不同的功能,是不是多形?对了,只有独立封装才是对象是与不是的标准。有自己的名字,有自己的数据,有自己的方法,为什么不是一个对象?是的,这都是对象。
在程序员们逻辑的世界里,这些对象,那都是活生生的生命啊。那都是他们的将士,时刻听从他们的指挥。可是那些讨厌的操作系统,那些数以万计的语言,那些为某些公司专用的标准,这些所谓的平台,他们扼杀了这些生灵。平台让对象们离开出生的家乡就不能生存,还让他们互相不能认识对方,不能用长勺喂饱别人。
还好软件世界里还有那么多真正的程序员存在,还好在关心对象命运的公司也不止一家。这些公司(至少有800多个吧),他们组成了一个组织叫对象管理组织(omg),他们出了一个标准叫corba。corba认识所有这些对象,这些独立的软件。corba还让他们互相认识,请求对方为自己完成自己力不能及的事情。
是的,我们不再需要要求所有的对象都必须符合dcom的二进制代码规范,在除windows以外的世界,我们找不到任何合手的软件来生成这些代码块。我们也不需要所有的程序员来学习java语言,我们可以用自己习惯的语言。任何旧的代码都是程序员自己带出来的兵,我们今天不需要去遗弃他们。
如果现在有人对我说他用unix上的java程序和他的windows下的c++程序一起集成了一个新的系统,我不会感到奇怪,因为borland的visibroker、jbuilder和c++builder让你可以做到。如果有人对我说,他的ejb可以和corba对象互相认识并能友好交流,我不会感到奇怪,因为如果你在appserver框架下开发ejb,那么它本身就能是一个corba对象。java对象必须存活在某个小一点但完善一点的框架环境之下,但这并不意味着它们不能通过类似于borland appserver这样的框架环境来融入corba的大家庭之中。如果明年有人对我说他拿windows下的delphi代码(包括界面描述)到linux下编译了一个linux下的可执行程序,跑起来样子还跟windows下的一模一样,我也不会奇怪,因为用delphi for linux,你可以做到。
只有dcom对象现在还不能适应这个全世界大团结的美好环境。好在微软并不是那么万分的顽固。至少他们想把他们的新语言c#也弄一个idl2c#规范出来,这样将来用c#也可以开发corba对象。甚至他们在dcom之外,还能重视soap,因为soap容易融入corba之中,实际上他们已经在申请这么做。哦,soap是什么?其实不过是xml。用xml作什么?corba对象间传送的(一般来讲)是扁平的消息,结构化的消息最特殊情况下如一个对象则很难传送。用xml来包装一个对象,然后把xml文件整个传送出去,就可以传送对象了。其实用java也可以传送对象,只不过双方必须都是java程序罢了。鲍尔默先生(微软总裁)讲xml必将战胜java,不是没有道理,而只是忽略了需要借助于corba之力的事实(当然凭借微软的实力,他可以不用现存的corba产品,但它必须有类似的产品,同时这个产品应该可以和corba互通,否则就失去了跨平台的意义)。
将来会有人跟我讲,他在服务器上实现了java所写的midas服务器程序,他用datamodule封装了所有的业务逻辑,用ejb的形式放在某个框架环境(ejb server)之下,该datamodule可以在任何平台下用任何语言中的tclientdateset之类的东西来访问。如果听到这些话,我不会感到奇怪,因为即便是从当前的技术基础来讲,borland都有能力能做到这样。如果将来有人跟我讲,他的微软格式的软件对象可以跟corba对象互相认识并能紧密合作,那我可能有些高兴,但仍然不会奇怪,因为只要微软愿意,borland可以做到。
程序员们逻辑的世界是一个没有国界的净土,这里不允许任何的霸权存在。如果你觉得这只是一个梦想,那么请允许borland能和你一起做梦直到美梦成真。
作者简介:杨少雄,南京大学计算机系毕业,高级程序员,
北京borland公司系统工程师
- · 图像输出组件的制作
- · 将小写数字金额转成大写金额
- · 用DELPHI为ASP开发文件上载组件
- · 用Delphi进行OpenGL编程学习心得
- · 开发Web应用程序中Cookie使用的问题
- · 在stringgrid控件中使文字内容在cell中做到上下居中
- · 检测Delphi是否正在运行
- · 一个四舍五入函数
- · 解析IP地址为主机域名。
- · 根据数据库表中记录自动构造一棵结构树的一种高效算法
- · 日历函数单元
- · 在Delphi中如何控制其它应用程序窗口
- · 装扮工具提示条
- · 如何在状态栏中加入图标(或图片),还有动态的时间
- · 利用Delphi编写Windows外壳扩展
- · 利用未公开函数实现Shell操作监视
- · 利用Delphi消息处理建立类似Windows开始菜单
- · Delphi中的图形显示技巧
- · Form产生时的事件次序;
- · Delphi中布尔类型辨析
- · AccesS密码的打击
- · Delphi嵌入式汇编一例
- · 在Delphi中实现任意形状的窗体
- · sql server 2005中的DDL触发器
- · asp.net 2.0下嵌套masterpage页的可视化编辑
- · PHP程序加速探索之缓存输出
- · 用C#代码编写的SN快速输入工具
- · (PHP)模板引擎Smarty介绍
- · 用PHP操纵Oracle的LOB类型的数据
- · C# 2.0中泛型编程初级入门教程
- · asp.net 2.0中加密web.config
- · ADO.NET操纵数据库
- · 关于asp.net c#中对cookie的操作
- · asp.net 2.0里当readonly遇上enableviewstate=false
- · C# 2.0与泛型
- · 让3721也无奈的弹出窗口(代码)
- · 玩透9种网页弹出窗口(精)
- · 网站左右两边浮动广告JS代码
- · 一个IP只提示一次设为首页的代码
- · 常用ASP脚本程序集锦*精(适合初学者)
- · 鼠标自动移动/点击
- · PHP程序加速探索之加速工具软件
- · SQLServer2000数据访问基类
- · 图解MySQL数据库的安装和操作
- · 一些ASP初学者常用的代码
- · ASP经典问答收藏之一
- · 一段防注入的通用脚本
- · 简单的防盗链(代码)
- · PHP窜红:革命尚未成功 Java仍需努力
- · 使用PHP编写基于Web的文件管理系统
- · 理解PHP中的MVC编程之控制器
- · 理解PHP中的MVC编程之MVC框架简介
- · SQL Server Express 数据库自动部署问题及解决
- · 用PHP文件上传的具体思路及实现
- · 回顾与展望PHP 5.0的变化与PHP 6.0展望
- · 一个产生中文累计数的代码片断
- · 在SQL Server 2005中解决死锁
- · 30分钟正则表达式指导
- · 不算不知道 44% 数据库开发者使用MySQL
- · 立即释放.net下的com组件

