C几乎是贴近计算机硬件模型而出的一种语言,相较于二进制编码和汇编而言是大大地改进了人们使用计算机的方式。
硬件的各种特性,譬如整数和浮点数的不同表示、指针、位运算等均在C语言中相对应的一一实现,而且加入了结构化设计的思想,循环、函数、控制、以及丰富强大的表达式运算,极大地提升了C的表达能力,使得C的用途达到了几乎无所不能的地步,C足够简单,不难学会,它的设计思想也足够简单,然而它又无比强大。
在硬件发展的过程中,一些新的特性并没有加入到语言中,譬如SIMD指令,CUDA等,但总有人提供相应功能的库。
使用C的另一个好处是你知道自己在做什么,它的功能只限于你的想象和能力。不过人们要解决的问题,总是和实际相关,要使用C 语言编写出程序就需要将问题分解,建立模型,将解空间对应到机器模型上,这似乎是不必要地增加了一个环节,即将抽象的事物具体化,专业的C程序员必须能娴熟地运用各种算法、数据结构等,在解空间和机器模型间搭建起桥梁,也就是按照机器来思想。
这就是C++诞生的背景,在问题规模几何级数增加时,C就显得力不从心了,有时具体细化几乎不可能,就像管理一个国家不会事无巨细到连一个小的城区管理都需要亲自参与一样,造汽车也不必重新从一个轮子造起,于是在C的基础上,增加了新的方法:对象、封装、抽象、继承、多态等,这就是 C++。
硬件的各种特性,譬如整数和浮点数的不同表示、指针、位运算等均在C语言中相对应的一一实现,而且加入了结构化设计的思想,循环、函数、控制、以及丰富强大的表达式运算,极大地提升了C的表达能力,使得C的用途达到了几乎无所不能的地步,C足够简单,不难学会,它的设计思想也足够简单,然而它又无比强大。
在硬件发展的过程中,一些新的特性并没有加入到语言中,譬如SIMD指令,CUDA等,但总有人提供相应功能的库。
使用C的另一个好处是你知道自己在做什么,它的功能只限于你的想象和能力。不过人们要解决的问题,总是和实际相关,要使用C 语言编写出程序就需要将问题分解,建立模型,将解空间对应到机器模型上,这似乎是不必要地增加了一个环节,即将抽象的事物具体化,专业的C程序员必须能娴熟地运用各种算法、数据结构等,在解空间和机器模型间搭建起桥梁,也就是按照机器来思想。
这就是C++诞生的背景,在问题规模几何级数增加时,C就显得力不从心了,有时具体细化几乎不可能,就像管理一个国家不会事无巨细到连一个小的城区管理都需要亲自参与一样,造汽车也不必重新从一个轮子造起,于是在C的基础上,增加了新的方法:对象、封装、抽象、继承、多态等,这就是 C++。