zoukankan      html  css  js  c++  java
  • 图形界面编程成就了C++

    听有人说C#、VB比C++好是因为做界面方便还算傻得可爱,听有人说用C++做数值计算而不屑于做界面可就对不起咱C++的恩人了。这我可要说道说道。

    想当年C++刚出江湖,名门出身,自立门派,想抢Objective C老大的位置割据一方。但名门出身的混混也还是混混,论OO不够Objective C或SmallTalk的水准,论效率没有C的干净利索,结果折腾半天没人看得起。时至今日,*nix法老们还在坚持用C。

    但世事难料,界面图形化之后,大虾小虾们都深感界面功夫之难,是时VB横空出世,威震四方。C教各界大为不满,怎能让一介小虾夺了"The one true programming language"的风头。于是强烈要求微软在Microsoft C里提供类似VB的功能。当时Microsoft C/C++还不成气候,比起Turbo C来简直是一坨。微软怎么能错过这么好的机会呢。不过也巧,微软手头还真有这么个差不多的东西,就是顶顶大名的MFC的前身AFX。

    起初AFX这个东西是想利用C++的OO特性来简化Windows界面编程,他们甚至设计了一套完整的OO的窗口系统,但交给其他部门试用后被批评得一塌糊涂。有鉴于开发人员更中意C的API,AFX被彻底重做,成了Win API的简单包装,并改名成MFC,于是有了Visual C++。之后微软在IDE上做了大量工作,模拟VB的界面设计功能,于是推出了Visual C++ 2.0,并成功的使“IDE generated code, do not change!"路人皆知。

    那么剩下的事情,就是说服C程序员改用C++。理由大家应该都很熟悉,无非就是C++完全包含C的功能,还支持OO,还有现在已经没人相信了的”改掉了C里不安全的地方“,然后演示怎么用MFC像VB一样拖拽来创建窗口。书商很英明的开始大肆出版OO的书籍,搞得不懂OO就像今天有人不懂Agile一样。于是乎经过艰难的3年时间,Windows95已经进入寻常百姓家,Windows上的C程序员也大多皈依了C++新教。就算不太懂C++,也可以在简历上写”C/C++",赚个面子。后来开源兴起,为推翻Windows图形桌面系统的垄断,众多激情澎湃的开发人员加入开源,于是*nix上的C++社群也开始发展起来。不过也因此暴露出各个C++编译器各说各的方言的问题,而不像C的可移植性那么好。

    到了05年,终于有人忍不住站出来说了心里话。C++的OO唯一成功的例子就是做界面。到了07年,Linus Torvalds更是毫不客气的以“You are full of bullsh1t. C++ is a horrible language."来开头抨击。C++错了吗?C++错了吗?C++真的错了吗?

    C++确实具有非凡的创新和成就,但作为革新的尝试,它当时提出的方法并没有完全解决它要解决的问题。撇开偏见看一看的话就会发现,直到今天,我们所有可重用的代码中大部分是C的,而且大部分高性能代码也都是C写的,即使用的编译器是C++。而活得比较久的C++的类库代码,最多的则就是界面类的。其中原因说得太多,不再罗嗦了。

    正是由于C++的这些弱点和Stroustrup对于C++的纯正性的坚持,导致了Java大肆修改C++的空前的成功。盖茨对Java兴奋不已,导致微软早期大力推动Java,但Java同样有不成熟的地方,微软要扮演改革派,但SUN却扮演了守旧派,拒绝微软对Java的任何改动,双方最终不欢而散。失去了微软支持的SUN当时却力不从心,不过最终英明的把1.2版类库设计外包给了Borland,将Java从玩具变成了将C++踢下王座的征服者。而微软则从Borland挖到Anders Hejlsberg设计了C#定位为应用开发与Java一决雌雄。从此,C++逐渐退出主流,隐居后台底层和维护桥接历史遗产,而C却因嵌入式开发和良好的集成能力小小发展了一把。

    总结,尽管有些C++人看不起界面编程,但正是图形界面编程成就了C++。

    http://blog.csdn.net/nightmare/article/details/1868002

  • 相关阅读:
    tuple 元组及字典dict
    day 49 css属性补充浮动 属性定位 抽屉作业
    day48 选择器(基本、层级 、属性) css属性
    day47 列表 表单 css初识
    day 46 http和html
    day 45索引
    day 44 练习题讲解 多表查询
    day 40 多表查询 子查询
    day39 表之间的关联关系、 补充 表操作总结 where 、group by、
    day38 数据类型 约束条件
  • 原文地址:https://www.cnblogs.com/findumars/p/6339347.html
Copyright © 2011-2022 走看看