初学编程的小伙伴应该都会遇到这个疑问吧?
因为最近总是有小伙伴问这个问题,所以今天在这里统一以文章的形式回答大家。都是干货,认真阅读哦~
C++ 读作“C加加”,是“C Plus Plus”的简称。
顾名思义,C++ 是在C语言的基础上增加新特性,玩出了新花样,所以叫“C Plus Plus”,就像 iPhone 8P 和 iPhone 8、Win10 和 Win7 的关系。
从语法上看,C语言是 C++ 的一部分,C语言代码几乎不用修改就能够以 C++ 的方式编译,这给很多初学的小伙伴带来了不小的困惑,学习 C++ 之前到底要不要先学习C语言呢?
对于这个问题,我保持中立。
但是初学者直接学习 C++ 确实会非常吃力,Hold 不住,尤其是对计算机内存不太理解的情况下,C++ 是学不懂的。
C++ 是一门灵活多变、特性丰富的语言,同时也意味着比较复杂,不易掌握。
不过可以明确地说:
学了C语言就相当于学了 C++ 的一半,从C语言转向 C++ 时,不需要再从头开始,接着C语言往下学就可以,所以强烈建议先学C语言再学 C++。
☆ C++和C语言的血缘关系 ☆
现在看来,C++ 和C语言虽然是两门独立的语言,但是它们却有着扯也扯不清的关系。
早期并没有“C++”这个名字,而是叫做“带类的C”。
“带类的C”是作为C语言的一个扩展和补充出现的,它增加了很多新的语法,目的是提高开发效率。
如果小伙伴有 Java Web 开发经验,那么可以将它们的关系与 Servlet 和 JSP 的关系类比。
这个时期的 C++ 非常粗糙,仅支持简单的面向对象编程,也没有自己的编译器,而是通过一个预处理程序(名字叫 cfront),先将 C++ 代码”翻译“为C语言代码,再通过C语言编译器合成最终的程序。
随着 C++ 的流行,它的语法也越来越强大,已经能够很完善的支持面向过程编程、面向对象编程(OOP)和泛型编程,几乎成了一门独立的语言,拥有了自己的编译方式。
我们很难说 C++ 拥有独立的编译器,例如 Windows 下的微软编译器(cl.exe)、Linux 下的 GCC 编译器、Mac 下的 Clang 编译器(已经是 Xcode 默认编译器,雄心勃勃,立志超越 GCC),它们都同时支持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语言应该如何选择?小伙伴应该也有自己的判断了吧。
领取专属 10元无门槛券
私享最新 技术干货