起初,世上有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

转载于:https://www.cnblogs.com/ToDoToTry/archive/2011/08/16/2141443.html

Windows编程革命简史相关推荐

  1. 积极准备、谨慎行动——应对多核编程革命

    本文发表于<程序员>杂志2007年4月刊,版权所有,如蒙转载,敬请保留作者等版权信息,违者必究! 本文发表于恋花蝶的博客(http://blog.csdn.net/lanphaday) 积 ...

  2. 如何使对话框中接收到WM_CHAR消息(Windows编程)

    我们大家都知道,对话框是有的时候捕获不到WM_CHAR消息的.比如,你想使对话框里的Edit控件所键入的全部变为大写.我们毫不犹豫的写到:    #include //Declare the Dial ...

  3. 使用c++进行Windows编程中各种操作文件的方法 【转】

    https://www.zhaokeli.com/article/8232.html 使用c++进行Windows编程中各种操作文件的方法 [转] 来源:赵克立博客 分类: C/C++ 标签:--发布 ...

  4. 【Windows编程】系列第三篇:文本字符输出

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇我们展示了如何使用Windows SDK创建基本控件,本篇来讨论如何输出文本字符. 在使用Win32编程时,我们常常要输 ...

  5. Windows编程一日一练(1)

    首先,编程和旅游是我个人人生两大爱好,所以,每天空闲的时候我喜欢敲敲代码,或者看看别人写的程序,实在是很惬意.今天想看看window编程,争取坚持每日一练.        windows程序主要是由微 ...

  6. Windows 编程

    Delphi 利用Object Pascal 和可视控件库(VCL)对底层的Windows API 进行了完美的封装,所以很少需要使用基础Pascal 语言来建立Windows应用程序,也无需直接调用 ...

  7. 一个物理学家学习Windows编程的感受

    最近学习用Visual C++ 作为平台的Windows 编程,感觉到学习这种编程技术的过程与学习物理的思维差异非常大.最明显的,比如对于物理课本,在学习的时候值得一个字一个词的认真去读,有时候需要读 ...

  8. C++,C++编程,Windows编程,MFC

    编程 我们日常生活中接触到的电子类产品中的应用都是由编程而来 为什么编程,偷懒 我们通过编程驱使(指挥,命令)的是电信号 为什么上面说编程是偷懒,电的发现,给人们带来了便利,人们在各个方面驱使(换成& ...

  9. Windows编程初步(一)

    第一节:安装帮助文档 使用C语言进行Windows开发,必然使用到WindowsSDK.Windows SDK指Windows开发人员工具包,是为使用C语言开发Windows程序所提供的工具集.里面提 ...

最新文章

  1. MegEngine计算图、MatMul优化解析
  2. Java监听器用法(三):外部类监听器
  3. u8 oracle,Linux As3 U8环境下Oracle 9i 9208的安装(二)
  4. 台积电砸7500亿强攻5nm
  5. pyinstaller打包exe在其他机器无法运行_详解pyinstaller selenium python3 chrome打包问题!解决率100%...
  6. Java发邮件-QQ服务器认证
  7. Pytorch 自定义激活函数前向与反向传播 sigmoid
  8. C#设计模式之21-策略模式
  9. Linux指令:sed和awk指令
  10. 状压DP【洛谷P1896】 [SCOI2005]互不侵犯
  11. IPv4子网划分基础
  12. 计算机报名登录服务器超时,登录服务器超时
  13. HouseMD v0.2.1 发布,比Btrace更实用运行时诊断工具
  14. 基于stm32单片机智能交通灯设计Proteus仿真
  15. dbv oracle驱动,oracle dbv使用详解
  16. 计算机c盘用户里的APPDATA,appdata是什么文件夹 C盘Appdata文件能不能删除?
  17. 将Shapefile(SHP)转换为Surfer中的网格(GRD)的方法-通用方法。
  18. 大学生用什么样的笔记本电脑好
  19. 大数据学习之 ElasticSearch 练习
  20. Houdini vop

热门文章

  1. 4.2 One-Shot 学习
  2. numpy 创建数组
  3. C语言tolower函数介绍、示例和实现
  4. 对我帮助很大的ESXCLI命令
  5. ClassicLink概述
  6. Netty学习总结(1)——Netty入门介绍
  7. python writelines_Python文件writelines()方法
  8. 要么出色,要么出局!威马公布三大核心技术矩阵背后的大野心
  9. IndexedDB 简单封装
  10. Spark SQL概念学习系列之Spark Shark是什么?