最近看到一个公司的面试题目:请谈谈你对C和C++的认识和区别。上学期学了C,刚好这学期把C++学完了,突然对这个问题感兴趣,那就来谈谈我理解的C和C++咯!
先来回顾一下C所遵循的旧的理念。
一般来说,计算机语言要处理两个概念——数据和算法。数据是程序使用和处理的信息,而算法是程序使用的方法。C语言与当前最主流的语言一样,在最初面世时也是procedural语言,这意味着它强调的是编程的算法方面。从概念上来说,过程化编程首先要确定计算机采取的操作,然后使用编程语言来实现这些操作。程序命令计算机按一系列流程生成特定的结果,就像菜谱指定了厨师做蛋糕时应遵循的一系列步骤一样:
数据:半杯黄油;1杯糖;2个鸡蛋……
算法:奶油;逐渐加糖;打鸡蛋……
程序(蛋糕)=数据+算法
随着程序规模扩大,很多旧式程序的执行路径很乱,或者称之为“意大利面条式编程”,修改这种程序简直就是一场灾难。所以,计算机科学家又开发了一种更有序的编程方法—structured programming.这包含自顶向下的设计原则:若果某任务很大,则将它分解为更小的任务,这一过程一直持续下去,直到将程序划分为小型的、易于编写的模块,比如下面这个整理书房的栗子:
先整理桌子、桌面、档案柜,然后整理书架。好,先从桌子开始,然后整理每个抽屉,从中间的那个抽屉开始整理……
如上所述,结构化编程反映了过程性编程的思想,根据执行的操作来构思一个程序。虽然结构化编程的理念提高了程序的清晰度,可靠性,但它在编写大型程序时