当前位置: 首页 > Linux

学习C语言和C++有什么关系吗?

时间:2023-04-06 05:14:42 Linux

这是上周几个读者提出的问题,我截图了两张。说实话,以前也经常看到这种问题,但是忘记截图了。每次遇到这种问题,看似很简单,但敲了一会儿也说不清楚。想着今天周末,写篇文章一起讨论。如有不同意见,欢迎批评指正,评论区见。本文已收录在开源项目:https://github.com/hansonwang99/JavaCollection,包含不同方向的自学编程路线,面试题/面经合集,技术系??列文章等资源持续更新中……》C语言和C++有什么关系?首先,C++和C语言是两种不同的编程语言,但是C++确实是C语言的延伸和延伸,并且它为C语言提供了向后兼容性。对于一些人来说,说C++完全包含了C语言还是有点尴尬。当C++最初是由比亚恩·斯特劳斯特鲁普(BjarneStroustrup)发明的时候,它最初被称为“CwithClasses”,即“withClassC”。很明显,它在C语言的基础上扩展了类等面向对象的特性和机制。但是经过一步步的修改和多次演化(如下图所示),最终形成了支持一系列主要特性的庞大的编程语言。正如经典书籍《Effective C++》开头所说,当我们提到C++时,应该把它看成是一个庞大的“语言联邦”,它至少包括以下几个重要的组成部分:面向过程编程面向对象编程泛型编程元编程函数式程序设计STL标准库的第一部分《面向过程的程序设计》是C++提供的C++向后兼容的部分,所以你可以看到市面上大部分的C++程序设计前几章基本都是“过程-面向编程”,包括但不限于:数据类型、变量、运算符、表达式、语句、判断、循环、函数、指针等内容。不学C语言可以直接学C++吗?如前所述,C++编程语言的第一个重要组成部分是“面向过程的编程”,这是C语言老大哥的领地。即使没有学过C语言,对于直接学C++的人来说,应该也能跳出“面向过程”的部分。因为市面上大部分关于C++编程的书籍,第一章都是讲“面向过程的程序设计”。从理论上讲,学C++不一定要先学C语言,但往往学了C++后再学C++更有优势。起码“面向过程编程”的部分,能走的通。但遗憾的是,即使是《C++ Primer》这样的700多页的C++权威书籍,开头也只是讲“面向过程编程”,所以面向过程编程的部分一定没有专门讲C语言。书中分析的很详细,也很全面,不然也不会出现《C和指针》之类的重点指点的书了。所以我个人的建议是,在学习C++之前,尽量把C语言的基础打牢,肯定会有帮助。学好C,是不是学C++更有优势?是的。至少在学习C++的时候,其中“面向过程”的部分可以说是熟门熟路了。C++能代替C语言吗?既然C++这么强大,包含了这么多的模块和范式,几乎包括了C语言面向过程的部分,为什么还要学习C语言呢?直接学C++不好吗?是的,C++确实很强大,但是那些强大的范式和机制本身带来的包袱并不轻,确实给学习者造成了不小的负担,甚至劝退了很多人。相对于C语言,C语言本身是一门将能力、性能、效率、学习成本平衡到极致的编程语言,以至于C语言基本被列入了大学阶段必修的编程课程。而且,C语言的应用领域极其广泛。从操作系统底层的原生接口到普通应用层的开发,C语言都做出了很多贡献。以至于这么多年,在Tiobe编程语言排行榜上,C语言一直居高不下。而在2020年初,C语言重回巅峰宝座,一举拿下“2019年度编程语言”。虽然这只是一个看似无聊的排名,但或多或??少能说明一些事情。所以无论过去、现在,甚至将来,这位年近50岁的C语言老手,都绝不是奴隶。难道只有C++这种面向对象的语言才适合做大型项目吗?C++的出现确实是为了更方便地开发大型应用。毕竟,面向对象编程中的很多重要思想和机制都是针对大型项目和复杂系统所要求的项目工程化、代码可重用性/可扩展性/可维护性。提供强有力的支持。但是摆在我们面前的事实告诉我们,即使是C语言,依然可以构建极其复杂的系统和软件。从Linux这样伟大的操作系统内核,到Redis、Nginx等被各家公司高度依赖的小型开源软件或框架,都是C语言的代表作。所以有时候我们不得不承认,大家所说的抽象能力更多的是写程序的人,而不是编程语言本身。总结嗯,有点过分了,总结就是:C语言和C++是两种不同的编程语言,但是在内容上有一定的重叠;C语言是一门非常强大的编程语言,我觉得有机会还是要学的;一般来说,有C语言的基础,上手C++会比较快;C++和C各有各的选择考虑和应用场景,没有谁更好。兴趣和自身技术发展的考虑*书籍推荐最后说说学习C语言和C++的书籍。我个人认为,想要系统地学习这两种语言,最好是看经典书籍。关于C语言的学习书籍,最权威的当然是C语言的发明者DennisM.Ritchie所著的《The C Programming Language》(也有中文版)。另外,《C Primer Plus》也非常系统全面。C++学习最权威的书是C++的发明者BjarneStroustrup写的《The C++ Programming Language》,但是很明显这本书不适合初学者,更适合《C++ Primer》,也很系统全面.至于更深入,可以继续看《Effective C++》、《STL源码剖析》、《深度探索C++对象模型》等书籍,看完这些书,就可以开启成神之路。本文已收录在开源项目:https://github.com/hansonwang99/JavaCollection,包含不同方向的自学编程路线,面试题/面经合集,技术系??列文章等资源持续更新中……”每天进步慢一点才能快一点