忆梦|学C语言和C++它有毛关系吗?
这是最近一周时间几个读者小伙伴所提的问题 , 我顺手截了两个图 。
实不相瞒 , 这类问题之前也经常看到 , 但是我忘了截图了 。
每次遇到这种问题 , 看起来很简单 , 但是打字一时半会还真说不清 , 想想今天周末了 , 写一篇文章来统一聊聊吧 , 如果小伙伴们有不同看法 , 也欢迎批评指正 , 评论区见 。
本文在开源项目:https://github.com/hansonwang99/JavaCollection 中已收录 , 里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等 , 资源持续更新中...
”
C语言和C++到底是什么关系?首先C++和C语言本来就是两种不同的编程语言 , 但C++确实是对C语言的扩充和延伸 , 并且对C语言提供后向兼容的能力 。 对于有些人说的C++完全就包含了C语言的说法还是有点别扭的 。
C++一开始被本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)发明时 , 起初被称为“C with Classes” , 即「带类的C」 。 很明显它是在C语言的基础上扩充了类class等面向对象的特性和机制 。 但是后来经过一步步修订和很多次演变(如下图所示) , 最终才形成了现如今这个支持一系列重大特性的庞大编程语言 。
就像经典书籍《Effective C++》一开头就说的 , 现如今我们提到C++ , 都应该视其为一个庞大的「语言联邦」 , 最起码包含如下几个重要的组成部分:
- 面向过程编程
- 面向对象编程
- 泛型编程
- 元编程
- 函数式编程
- STL标准库
不学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++它不香嘛?
推荐阅读
- 甜心看剧|阿联酋就和伊朗爆发严重冲突,刚与以色列握手言和
- 全视角|喻言和刘亦菲用西装阐释,柔和和锋利的确能完美交织
- estar|Gemini爆料estar首发,不止猫神,诺言和alan也无了!
- 忆梦|电视接口都有哪些?各自有哪些作用?智能电视常见接口解析来了
- 忆梦|刘强东:电商没有制造就业,反而造成大量失业?真是这样吗?
- 忆梦|在国外火爆粒子漩涡壁纸来了,满满的科技感,赶紧来试试吧
- 忆梦|从iPhone11 Pro换成华为,憋了一肚心里话,不吐不快
- C++|为什么C++被越来越多人讨厌?
- 蓝色星晨|C/C++编程笔记:无边框窗口橡皮筋拉伸效果
- 老人@老人生病,儿女为赡养问题争吵不休,母亲一番话我和哥哥握手言和
