图形界面编程成就了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
图形界面编程成就了C++的更多相关文章
- Linux C 程序 GTK+图形界面编程(22)
GTK+图形界面编程 Linux大多是在字符界面,但也可以开发图形界面 目前已经存在多种Linux下开发图形界面的程序开发包:最常用的是Qt和GTK+ Qt是一个跨平台的图形界面开发库,不仅仅支持Li ...
- Java中的图形界面编程
前言 正文 Java中的图形界面编程 AWT/Swing AWT(Abstract Window ToolKits,抽象窗体工具集) 1.容器类:用来存储组件,实现容器布局 2.组件类:实现界面的一些 ...
- C语言控制台窗体图形界面编程(总结)
本系列文章是笔者通过学习<C语言控制台窗体界面编程(修正版)>而写(关于此文档的很多其它信息请看本系列文章第一篇),旨在让大家更加清晰简洁easy地学习C语言控制台窗体界面的编程. 通过本 ...
- python 教程 第十九章、 图形界面编程
第十九章. 图形界面编程 import Tkinter top = Tkinter.Tk() hello = Tkinter.Label(top, text='Hello World!') hello ...
- Java第5次实验提纲(Java图形界面编程)
1. Swing与NetBeans 使用NetBeans编写简单界面.见GUI实验参考文件中的0.第06次实验(图形程序设计.事件处理与Swing).doc 题目1: Swing用户界面组件与事件处理 ...
- 第58节:Java中的图形界面编程-GUI
欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图 ...
- Java第05次实验提纲(Java图形界面编程)
1. Swing与NetBeans 使用NetBeans编写简单界面.见GUI实验参考文件中的0.第06次实验(图形程序设计.事件处理与Swing).doc 题目1: Swing用户界面组件与事件处理 ...
- java之 22天 GUI 图形界面编程(一)
转自:http://takeme.iteye.com/blog/1876850 GUI(图形用户界面) import java.awt.Button; import java.awt.FlowLayo ...
- 【情人节选帽子】TCS34725颜色传感器和Python图形界面编程(STM32 HAL库)
截图 描述: l STM32 HAL库编程 l 使用模拟IIC通信,方便程序移植 l Python界面编写,蘑菇头的帽子是什么颜色 l STM32 HAL库串口通信 l Python界面使用 ...
随机推荐
- experiment : 在私有堆和默认进程堆中, 测试能分配的堆空间总和, 每次能分配的最大堆空间
实验环境: Win7X64Sp1 + vs2008, 物理内存16GB. 实验结论: * 进程堆的最大Size并没有使用完剩余的物理内存 * 每次能分配的最大堆空间接近2M, 不管是私有堆 ...
- Java、JVM、JRE、JDK等组件的理解
.java ⇒(javac) .classs ⇒ (类加载器)转换后的 .class 文件 ⇒ (解释器)可执行代码 ⇒ (JIT 编译器)⇒ 机器码 0. 虚拟机 Java 有它的虚拟机:Java ...
- 报错:Unsupported major.minor version 52.0 (jar包对不同JDK版本的兼容性问题:)
Unsupported major.minor version 52.0 这类错误是因为Java版本不一致造成的,在高版本的JDK(1.8)环境中编译JAR包,然后JAR在低版本的JVM(1.6)中运 ...
- OVS处理upcall流程分析
处理upcall总体框架: 1.由函数handle_upcalls()批量处理(in batches)的是由内核传上来的dpif_upcalls,会解析出upcall的类型.这里主要看在内核中匹配流表 ...
- 桌面程序的其他实现方式----使用WPF窗体展现网页
需求 在WPF应用程序中,需要使用到WEB项目的资源,第一时间想到的就是在WPF窗口中,展现WEB项目中的页面,这样子有两点好处:一是,实现简单,不需要在WPF应用程序中实现UI布局和数据绑定:二是, ...
- python 和为S的两个数字
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 运用到的知识; 1.判断是否是统一类型: if not isinsta ...
- C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号、密码)
原文:C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号.密码) 目录: 1,界面设计 2,数据模型的建立与数据绑定 3,添加QQ数据 4,修改QQ数据 5,删除QQ数据 6,密码选 ...
- python 教程 第三章、 运算符与表达式
第三章. 运算符与表达式 1) 运算符 + 加 - 减 * 乘 ** 幂 / 除 // 取整除 % 取模 << 左移 >> 右移 & 按位与 | 按位或 ^ 按位 ...
- WPF之VLC流媒体播放
原文:WPF之VLC流媒体播放 最近在做关于在WPF使用VLC流媒体播放的问题,现在可以在WPF中实现VLC本地播放了,流播放解决了,在下面的代码中注释流媒体播放那两段代码,更多的在乎大家摸索了^^, ...
- win7在USB该解决方案不健全音箱
Win7安装后,原XP在正常工作USB小喇叭不工作,重新安装声卡驱动程序仍然是相同的.后来,通过以下的得心应手最后一次尝试. 1.右键右下角喇叭button. 2.点击"播放设备" ...