计算机技术在近几十年有了突飞猛进的进展。编程语言也是。
1970: C 和 Pascal 的出现进入了面向过程的编程阶段。同时用C可以完成高效率的代码。运行速度可以媲美汇编。
1980: 出现了面向对象的编程思想。
下面我们看一下 C 和 C++ 的编程理念。
C 语言
在 C 语言出现之前,我们使用的是机器语言(汇编语言),直接将命令写入硬件。这样执行效率虽高,但是不同的机器有不同的硬件和标准,在这种情况下,如果想将同样的命令移植到另一个机器上,需要重新编写程序,太烦!
为了让一些操作系统(如unix)在不同的机器上运行,Ritchie 发明了 C 语言,通过编译器翻译成机器语言。因此,C语言是一种高级语言,同时也具有可移植性。编程人员只需要专注解决问题即可。
C语言的设计理念。
首先,明确一点:程序 = 数据(数据结构) + 算法。
C 语言的理念是自顶向下的设计理念,将大任务分解成可完成的若干小任务。在 C 语言中,可以定义一个个函数分别完成小任务,最终组合起来完成大任务。C语言是面向过程的语言,编程过程中注重的是如何处理数据。
C++ 的改变:面向对象编程(OOP)
面向过程强调的是算法,而面向对象更看重数据。
面向对象编程主要是靠类和对象组织程序的。类代表一种数据类型,而对象代表某一个类的实例。
例如:
有一个员工类:属性有姓名,工号,工资,职务。
它的对象就是:张三,666,5000,产品经理。
同时,类还定义了可执行的方法,如员工类具有打卡、调动申请等方法,产生一个行动。
最终,利用这些对象的组合,完成程序所要达成的任务。这是一种自底向上的设计理念。
OOP更加有利于代码的复用,可以节省大量时间。
C++可以让你复用已有的、测试过的类,从而降低编程难度,节省时间。
C++ 与泛型编程
泛型可以方便用户使用某些常用的方法,如排序、合并数据等。
举个例子:
不使用泛型时,如果需要对不同的数据类型进行排序(整形,浮点型,字符串等),需要针对不同的类型分别编写算法。但是如果引入泛型机制,则可以针对不同的数据类型,编写一个排序逻辑。而具体的排序标准则由类的设计者完成,这样,就可以只用一种排序逻辑完成对所有数据类型的排序。因此,这种理念只有结合面向对象的设计方式才能实现。
C++的诞生
这部分内容不重要,感兴趣的可以自行上网搜索了解。