访问次数
我的另一个总结性博客: todototry 大米粒

Windows编程革命简史

起初,世上有Windows API和DLL Hell。然后有了DDE,史称第一次Windows编程革命——还记得怎么通过动态链接在状态栏上显示Microsoft股票的即时价格吗?
差不多同时,Microsoft发明了VERSIONINFO资源,消灭了DLL Hell。但Microsoft内部的另一个开发小组发现了DDE的一大致命缺陷:这玩意儿不是我们组写的!
为了解决这一重大缺陷,他们创造出OLE(除了跟DDE不一样,就跟DDE一样)。我依稀记得某位微软演讲人在微软大会上庄严宣布Windows API将很快被重写为OLE API,屏幕上所见的任何控件都将是一个OCX控件。OLE引入的若干接口消灭了DLL Hell。当初“置身于革命洪流”的激动之情,君犹记否?都曾经梦想将应用程序内嵌在一个(显然将变得相当庞大的)Word文档里头吧?
不知道从哪里开始的,微软信了C++教。应运而生的MFC再次解决了我们的所有问题,托继承的福。不行,OLE才不会坐以待毙,它华丽变身成COM再次登场。突如其来之下,我们猛醒了,OLE(还是该叫DDE?)才是世间万物本来该有的样子——何况这次它还带了一个精巧绝伦的组件版本系统,完全消灭了DLL Hell。就在这普天同庆之时,微软内的一小撮叛乱分子发现了MFC的致命缺陷:它不是我们组写的!
他们毫不犹豫地挺身而出,发明了ATL来解决这个重大缺陷。ATL,除了跟MFC不一样,就跟MFC一样,它打算将COM小组努力教会我们的那些销魂细节全部隐藏起来。COM小组(或者该叫OLE?)受了刺激,发奋图强,在给自己改名ActiveX之余,接连放出数百坨新接口(包括全新的版本管理接口,完全消灭了DLL Hell),同时震撼推出通过网络浏览器下载程序的惊喜功能,附赠众多病毒任凭用户挑选一并下载(哈,ATL小牙签们,这下你们没辙了吧!)。作为一路被忽视的小孩,操作系统小组开始哭闹着争取注意力,让大家注意“Cairo就要来了”,至今他们都没解释清楚Cairo到底是一坨什么玩意儿,更别提发售了。不过有一点必须夸他们,的确是操作系统小组率先提出了“系统文件保护”的先进理念,完全消灭了DLL Hell。
与此同时,微软内的另一个小组发现了Java的一个致命缺陷:它不是我们发明的!作为补救措施,他们创造了J,也可能是叫Jole或者ActiveJ(老实说,名字我记不得了),它除了跟Java不一样,就跟Java一样。这是多么激动人心的一件事,可惜Sun援引大清律例《关于一家公司每年发布脑子进水产品次数的规定》把微软给告了。这完全是对微软创造除了跟其他产品不一样,就跟其他产品一样的产品的自由的赤裸裸的压迫,最终结果是造就了“微软向国会议员裤兜里塞钱网络(MSFSMTCN)”(加入本网络即可享受新闻邮件订阅及$14.75T恤优惠)。记不记得J/Jole/ActiveJ的项目经理一边拿鞋拍着桌子,一边信誓旦旦微软绝不会抛弃他手中的产品?傻了吧!还不是因为不够重视ActiveX(或者该叫COM?)小组。这群生命力无限的API制造机又带着COM+(不是应该叫ActiveX+才对吗?)和MTS杀回来了。(我完全想不明白为什么MTS的名字里面没有出现“Active”、“X”和“+”这几个字——他们这次天马行空的创意令我佩服得五体投地!)他们放话说将来还要给所有词都再加一个“+”呢。差不多同一时间,还有人嚷嚷了一阵子“Windows DNA”和“Windows搓衣板”,不过还没等我弄清楚那是什么就销声匿迹了。
这个时候,微软已经冷眼旁观了Internet好些年,心里越来越不安。他们刚刚发现了Internet的一处致命缺陷:嗯,你懂的。所以就有了如今的.NET(除了不一样,发音就跟“doughnut”差不多),.NET就跟Internet差不多,除了公关稿多一点。我们要非常、非常强调一点事实:.NET将会消灭DLL Hell。.NET包含了一门叫做C#的全新编程语言(Active++J++语言因为有一处致命缺陷,已经不幸入土为安了)。.NET包含了一个虚拟运行时机器,所有语言都会在上面运行(因为他们发现运行在Intel CPU上有一处致命缺陷)。.NET包含了一个单一登录系统(因为他们发现你不把所有密码都保存在微软公司的服务器上会导致一个致命缺陷)。.NET包含的实在是太多了,反过来列举.NET没有的东西说不定还更容易呢。总之,.NET绝对会给Windows编程带来革命性的变化……直到下一次革命。


摘自 http://coolshell.cn/articles/3008.html#comment-10415

posted @ 2011-08-16 19:33  fandyst  阅读(661)  评论(0编辑  收藏  举报