此刻我们仍然很难预计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基层结构。