C++之父Bjarne谈C++在2005年

现在我们仍然很难估计C++程序员的数量,但在2003年,IDC报告说有超过300万的全职C++程序员,这个数据还是比较可信的。虽然我不能够精确地计算,但是我所拥有的所有指标都显示,C++在经过前十年(1985-1994)的爆炸性增长之后,后十年(1995-2004)其使用人数一直在稳定地增长。我还没有经历过其增长停止的时期。我猜想,虽然面对竞争产品的有力宣传和肆无忌惮的促销活动,它仍然稳定增长的主要原因在于:在这个时期中C++语言保持着稳定性(stability)。在这些年头中,这种语言的实现有了很大的改善,其类库的数量、质量和复杂程度都有所增长,同时我们对如何使用C++的理解也进一步深入了。但是,1995年D&E中描述的这种语言我们现在仍然在使用。标准的C++拥有足够的特性,它能够适应十年中编程技术和应用程序的增长,其稳定性也允许它实现跟上潮流。

那么,这些C++程序员到底在做什么事情呢?他们在编写哪种类型的应用程序?他们使用了哪种编程风格?我不知道,谁也不会知道。同样,与C++程序员太多了以至于无法估算类似,不同的应用程序领域也太多了,某个人需要掌握的编程风格也太多了。有时候我们会听到别人说"C++应该这样使用"--这样的表述一般都是痴心妄想,它们来自于非常有限的经验。我们在与很多人一起玩"盲人与大象"的游戏。有些人已经阅读了一百多万行代码,编写了成百上千行C++代码,读过C-vu、C/C++ Users Journal等杂志中的所有文章,读过所有优良的C++书籍和许多劣质的书籍,读过所有的与C++相关的论文,并在C++新闻组中"居住"了很多年。这种人很少,即使是这样,他们也只碰到了其表面。这种人一般都是最后发表简单概括的。实际上,我听到的最简洁和自信的概括(包括正面的和反面的)都来自于那些几乎没有C++经验的人--无知是福。

当我试图理解如何使用C++的时候,我首先考虑下面两个方面:

·应用领域

·程序员(设计师、软件产品公司等)的成熟度

编写实时(嵌入式)系统的程序员与编写专用的数据库业务程序的程序员所关心的内容是不同的,他们与编写高能物理(high-energy physics)应用程序的程序员所处的环境也完全不同。我发现听取新应用领域的程序员的想法并向他们学习是有好处的。

很难存在某种东西跨越所有应用领域都有意义。但是可以说某种东西(跨所有应用领域)是成熟的。从高层次的角度来看,理想的编程语言可以表达为:

1. 在代码中直接地表达概念

2. 在代码中直接地表达概念之间的关系

3. 在独立的代码中表达独立的概念

4. 自由地组合那些表达概念的代码,无论这种组合是否有意义

此处的"概念(concept)"与"想法(idea)"的意思大致相同,并且可以参考我们所命名的任何东西、在设计时出现在黑板上的任何东西、在我们的课本中描述的任何东西,等等。

我"测评"成熟度主要基于人们如何把这些想法应用到产品代码(也就是受现实条件约束的代码)中。如果某些人使用C++的原因主要是把它作为"更好的C",那么他们在(上述的四条中的)第一条就遇到了失败--他们就不能使用类、类层次和参数化(模板)来直接地表达想法以及想法之间的关系。如果某些人坚持把C++仅仅看作是一种面向对象的语言,那么他们在第三和第四条会遇到失败--他们会构造厚重的层次,通过一些不适合的依据把无关的概念绑定在一起,排除内建类型和简单类。

这意味着,即使语言不作进一步改变,也有很多方面有待改善。通过简单地使用自己计算机上已经安装的、作为ISO标准C++一部分的工具,大多数人就可以改善他们的编程效率、减少错误率、提高运行时性能。如果你没有试用过STL,那就试试吧。也许它不能严格地满足你的需求,但是它是标准的,并且演示了 "现代的C++"中的很多关键技术,你可以使用这些技术来解决问题。我曾经指出的教育的题现在更糟糕了:编程教育在很大的程度上无法跟上软件生产方面的变革。由于我最初编写D&E,我成为了一个专家,在一定程度上助长了这种倒退趋势。

那么这些C++程序员到底在做什么呢?这是你可以想到的:"普通的PC业务应用程序"、嵌入式系统、电子商务、游戏、科学计算、网络软件、操作系统、设备驱动程序、移动电话等等。在继续之前,我建议你看看我持续维护的一个小列表http://www.research.att.com/~bs/applications.html。我个人特别喜欢"冒险和与众不同的"应用程序,它们拥有极端的性能和/或可靠性需求,例如JPL火星漫步者自动驱动系统、MAN B&W巨型船用柴油机引擎控制系统、高度分布式系统(例如多玩家游戏)的ICE下层构造。

时间: 2024-12-03 16:05:40

C++之父Bjarne谈C++在2005年的相关文章

C++之父Bjarne谈C++中的STL模板

在1994年,我主要关心的是如何使ISO C++标准尽可能地好--同时在它所包含的特性和规范的质量两个方面--并获得多数人的同意.即使人们不接受某种规范,也不会影响它(规范)的良好性.ISO标准没有强制力,因此有些人认为自己不值得浪费时间来适应它,除非(群体)社团的压力能够使他们确信该规范的价值.对于一个实现者来说,适应环境是很重要的额外工作,因此适应环境是一个有意识的决定,并且需要分配一些资源,而这些资源本来可以在其它地方使用.某些晦涩的语言特性很难在某些编译器中实现.我们可以实现或者购买类库

从iPod到Nest:iPod之父Fadell谈创新

本文是在 Boxworks大会之后,Adam Lashinsky采访Tony Fadell的文章.本文作者Lashiinsky刚出版了一本关于苹果公司文化的书-Inside http://www.aliyun.com/zixun/aggregation/5541.html">Apple.而Tony Fadell,他是前苹果公司iPod 部门主管,被称为iPod之父,对iPhone也有无可厚非的贡献.由于这个原因,他设计的Nest也被人们称为恒温器领域的iPod.TECH2IPO有对Nest

专家谈SQL Server 2005 CLR

在SQL Server 2005的许多被大力推荐的特性里面,有一项可能对那些使用SQLServer 工作的编程人员最实用的是Common Language Runtime,或者简写为CLR.CLR可以让编程人员直接在SQL Server中创建存储过程.触发器,用户自定义函数,集合体和类型.CLR有很多的承诺,但是也有一些缺陷. 关于CLR的重要性有一些主要的原因.首先,随着SQL Server 编程技术的成熟,代码编写人员陷入了SQL Server自身的一些限制之中,并且在很大程度上依赖外部的代

谈SQL Server 2005中的T-SQL增强

丰富的数据类型 Richer Data Types 1.varchar(max).nvarchar(max)和varbinary(max)数据类型最多可以保存2GB的数据,可以取代text.ntext或image数据类型. CREATE TABLE myTable(id INT,content VARCHAR(MAX)) 2.XML数据类型 XML数据类型允许用户在SQL Server数据库中保存XML片段或文档. 错误处理 Error Handling 1.新的异常处理结构 2.可以捕获和处理

想成为牛逼程序员? 先数数编程语言之父们的头发

有一种生物,人称"程序猿" or "攻城狮" 工作是高端大气上档次,工资是低调奢华接地气! 往往城还没攻下来,头发就先掉下来! 世人眼中的当程序员的必经之路是这样的 找不到女朋友的原因是这样的 事实是否如上所说的那样呢?那就不得而知了,不过深入了解了解那些编程语言之父们头顶的雨林是否茂盛,以及他们的丰功伟绩,没准能得出什么参考标准呢. 01.Java 之父 James Gosling 头顶茂密指数: 第一位出场的就是我们大名鼎鼎的 Java 之父,James Gos

C++ 之父 Stroustrup 推出“ C++ 核心准则”

2015年的 C++ 大会 9月20-25日在美国华盛顿州的 Bellevue 举行.C++ 之父 Bjarne Stroustrup 在本次大会的主题演讲上,宣布了C++ 的核心准则(C++ Core Guidelines).这份准则旨在帮助程序员更加高效地使用现代的 C++("现代 C++" 指 C++11 和 C++14 以及未来的 C++17),英文文档已提供在这个项目的 GitHub repository: 遵循这些原则,会让你的代码静态类型安全.没有资源泄露,发现如今代码中

理解预编译头

所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H.Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果.这样可以加快编译速度,节省时间. 一.预编译头文件说明 所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H.Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果.这样可以加快编译速度,节省时间.预编译头文件通过编译stda

C++资源之不完全导引(完整版)

 C++资源之不完全导引(完整版)来源:www.csdn.net撰文:曾毅.陶文声明:本文2004年5月首发于<CSDN开发高手>,版权归该杂志与<程序员>杂志社所有.------------------------------------------------------------------------ 1,前言 无数次听到"我要开始学习C++!"的呐喊,无数次听到"C++太复杂了,我真的学不会"的无奈.Stan Lippman先生曾

C++资源之不完全导引

这文章太强了,我一定要转载,否则对不起观众,对不起自己.(liigo) 发信人: NULLNULL (空空), 信区: VC标  题: C++资源之不完全导引(转载)发信站: 武汉白云黄鹤站 (2005年05月05日01:42:54 星期四), 站内信件 C++资源之不完全导引(完整版) 来源:www.csdn.net -----------------------------------------------------------------------------------------