说到C语言,就不得不说它的继承者——C++语言。众所周知,C++语言是在C语言的基础上,添加了面向对象、模板等现代程序设计语言的特性而发展起来的。两者无论是从语法规则上,还是从运算符的数量和使用上,都非常相似,所以我们常常将这两门语言统称为“C/C++”。虽然因为天然的血缘关系,导致两者非常相似,就像父亲与儿子相貌相似一样,但是,父亲和儿子毕竟是两个不同的各自独立的个体,而C语言和C++语言也同样是两种各自独立、各有其特点的程序设计语言。在对硬件资源的操作上,C语言更加直接,而C++语言则相对温和一些。
除了这些语法规则上的差异之外,两者最本质的差别在于所采用的程序设计方法的不同。C语言是一门结构化程序设计语言,正如谭老师所说,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程(通常表现为函数的形式),对输入(或环境条件)进行运算处理得到输出(或实现对过程或者事务的控制);而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的实际问题,这样就可以通过获取对象的状态信息得到输出或实现对过程或事务的控制。
所以C语言与C++语言的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“设计”这个概念已经被融入到C++之中,而单就语言本身而言,在C中更多的是算法的概念。C语言可以说是C++语言的一个自治子集。C语言实现了C++语言中的过程化控制及其他相关功能,而在C++语言中的C(我们可以称之为“C+”),相对于原来的C还有所加强,引入了重载、内联函数、异常处理等等新鲜玩意儿,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和容器类等等,使之更加符合现代程序设计的需要。
从这些C语言和C++语言的对比来看,C++语言作为C语言的继任者,似乎已经全面超越了C语言,正所谓青出于蓝而胜于蓝。那么我们自然会产生一个疑问,既然C++语言比C语言优秀,为什么我们不直接学习更优秀的C++语言而要学习它的过去时——C语言呢?
毫无疑问,C++是一门优秀的程序设计语言,它吸收了C语言的诸多优点,同时又添加了很多现代程序设计语言的新特性,这也是它为什么能够成为主流的程序设计语言而长期屹立不倒的原因。但是,这个世界上没有万灵丹,任何语言都不是万能的,C++也并不是适合于所有应用场景。在某些方面,C语言有着比C++语言更大的优势。很多C++不能完成的任务,C语言可以轻松完成。例如在NVIDIA CUDA计算系统上,由于操作系统ABI特性的限制以及其特殊架构的执行单元,无法支持C++初始化的任务,最终只实现了C语言,过于复杂的C++最终没有实现。很多嵌入式开发系统,都只是提供了C语言的开发环境而并没有提供C++的开发环境;很多C++语言不愿意干的脏活累活,C语言干起来快活得很。例如某些对性能要求极高的大型系统,诸如搜索引擎算法、银行金融系统等等,只有勤快的C语言能够出色地完成这些任务,而C++因为过于复杂,在这方面就稍逊一筹了。
正是因为C语言兼顾了接近底层与更高性能的特性,同时语言又比C++语言更加简洁,使得它自从上世纪70年代被创建以来,一直都是一门主流的程序设计语言,受到广大程序员的钟爱。而随着当今世界嵌入式开发的发展、大型算法应用,特别是搜索引擎、云计算的兴起,C语言的用武之地不但没有萎缩,反而有逐渐扩展的趋势。所以,如果你有意向这些领域发展,C语言是你的不二之选。
综合起来看,对C语言和C++语言的学习可以相互促进。学好C语言,可以为我们将来进一步地学习C++语言打好基础,而C++语言的学习,也会促进我们对于C语言的理解,从而更好地运用C语言。
分享到:
相关推荐
尽管C++在功能和设计上超越了C语言,但这并不意味着C语言的重要性有所降低。在某些特定的平台上,如NVIDIA CUDA计算系统,C++的一些特性可能无法使用,这时C语言简洁的语法和高效的执行能力使其成为无可替代的工具。...
C语言与C++不得不说的那点事.pdf C语言与Java的区别.pdf C语言函数的递归和调用实例分析.pdf C语言单链表功能完全详解.pdf C语言大作业(仅供参考).docx C语言嵌入式系统编程修炼之内存操作.pdf C语言经典算法大全....
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价...
“本书清晰阐明了Kernighan与Ritchie《The C programming Language》一书中许多简略的地方,而且精彩地总结了C语言编程实践,强烈推荐!” ——Yechiel M. Kimchi,以色列理工学院 C是一门简洁精妙的语言,掌握基本...
书中指出,尽管许多程序员掌握了编程技术,但缺乏在开发过程中的质量意识,导致企业不得不依赖大量的测试和错误修复来提高软件质量,增加了不必要的成本。 本书分为两部分。第一部分由四章构成,主要介绍软件质量和...
在讨论源代码时,我们不得不提及一个可能的误解——在文件信息中提到的“C++程序设计教程”压缩包。虽然这可能是由于文件命名错误,但是,由于C++语言是基于C语言之上发展起来的,所以这份教程对于C语言的学习者而言...
编译是将C/C++源代码转换成机器代码的过程,链接则是将编译后的代码与库文件等其他模块合并成最终的可执行文件。IAR的ILINK工具提供了链接功能,同时指南还介绍了DLIB运行时环境的使用和汇编语言接口的处理。 知识...
1. **内容精简**:为了使初学者更容易上手,本书删除了一些不常用的技术和C语言的知识,增加了常用算法和与后续课程相关的知识。 2. **易于理解**:为了避免初学者被过多的概念所困扰,本书采用了循序渐进的教学方式...
这种描述方式既不过分依赖于C语言的细节,又能够轻松转换成能上机执行的C或C++程序。 《数据结构(C语言版)》的内容和章节编排与1992年4月出版的第二版基本一致,但在新版中更加突出了抽象数据类型的概念,对每一种...
此外,提到C语言,不得不提其背后的理论基础和软件工程实践,例如《C++程序设计语言》(Bjarne Stroustrup著)、《C++设计与演化》(Bjarne Stroustrup著)、《接口与实现:创建可重用软件的技术》(David R....
这部分内容并不深入讲解,而是作为对初学者的初步引导,帮助他们理解面向对象语言与C语言之间的差异。 《21天学通C语言》第6版是根据最新的国际标准(ISO/IEC 9899-1999)进行编写的,因此能够保证书中所教授的内容...
你难免会遇到各种各样的问题,有些可能让你百思不得其解,甚至翻遍图书馆,也找不到问题的答案。 《你必须知道的495个C语言问题》的出版填补了这一空白。许多知识点的阐述都是其他资料中所没有的,弥足珍贵。 涵盖...