面向对象概念的起源至少可以回溯到20世纪60年代的Simula语言以及其他一些以数据为核心的编程理念。它在20世纪70年代因为Xerox PARC(施乐帕克研究中心,图形化用户界面就是在这里诞生的)的研发团队推出了Smalltalk语言(一种以独立对象相互发送消息的理念为基础的程序设计语言)而得到了极大的发展。到了20世纪80年代,这个概念开始大行其道。
在20世纪90年代早期,OOP成为了一直延续至今的标准。Bjarne Strousup把OOP和流行的C语言结合在一起创建了C++。Pascal和Basic语言也有了面向对象的扩展包。从那时起,C#和Java等新的程序设计语言不断涌现。发展到现在,程序员已经无法离开它了。
可是,OOP真的可以帮你编写出更有效率的程序吗?在一些人竭尽全力倡导每个人都应该面向对象的同时,也有一些人在质疑这种做法。反对者的论点是,OOP并不能减少编程工作量,你无论如何还是要编写同样数量的代码和数据。
但有以下几个事实是谁也无法否认的。
GUI(graphical user interface,图形化用户界面)系统已经主宰了这个世界。尽管你不使用OOP语言也可以为这样的系统编写程序,但OOP和GUI似乎是“天生一对”。从概念上讲,它们是彼此高度兼容的理念,它们都出自Xerox PARC。
有越来越多的代码和数据被打包为OOP形式。如果你想利用类似Microsoft Foundation Class(MFC,用于Windows编程)或C++ Standard Template Library(STL)等开发工具库带来的便利,除了掌握面向对象的基本语法以外没有任何其他的选择。
综上所述,拒绝OOP显然是不现实的。就像我将在第16章里演示的那样,等你学会使用STL库的时候,你将受益良多。