人们普遍认为在管理大型系统的复杂性方面,面向对象范型存在潜在优势。在写作本书时,C++程序员的数量每7~9个月就会成倍增加。在经验丰富的C++程序员手上,C++是人工技能和工程人才强有力的放大工具。但是,如果你认为在大型项目中,只要使用C++就会确保成功,那就完全错了。
C++不仅仅是C的扩展:C++支持一种全新的范型。面向对象范型声名狼藉,因为面向对象范型比相应的面向过程技术需要更多的设计工作和悟性。C++比C更难掌握,并且有无数情形会让程序员搬起石头砸自己的脚。通常,当已经无法修复错误并满足项目进度要求时,你才可能意识到一个错误的严重程度。即使是相当小的错误(像随意使用虚函数或者通过值传递用户自定义类型),在完全正确的C++程序中,也可能导致运行速度比你用C编写的程序慢十倍。
最初接触C++,总有这样一个过程,在这个过程中,编程效率将会逐渐陷入停滞,因为似乎有无限种可供选择的设计方案需要探究。在此期间,当传统过程式的程序员想要竭力掌握面向对象的概念时,他们会深感焦虑。
对于最有经验的专业C程序员来说,尽管C++语言的规模和复杂程度在开始时可能有些难以承受,但是有能力的C程序员用不了多久就可以写出一个小的、普通的可运行C++程序。不幸的是,使用C++创建小型项目的技术完全不能直接用于应对大型项目。也就是说,C++技术的简单应用扩展到大型项目中效果不佳。在此,缺乏经验会导致诸多后果。