45天如何自学入门"互联网 IT 界公认最难学的语言"——C++!


在个人看来,45天C++入个门ok没问题,学会?抱歉,就不太可能。

C++难学是互联网 IT 界公认的,不信看看往下看。

45天学会它,抱歉,真的不太可能。

虽然现在出了个 rust 语言也挺难学的,不过还是比不了 C++ 难学。

那么,C++既然这么难学,难学在哪里?为什么大家还要学它呢?

来看看那些C++大佬们的回答吧~


 

░ 为什么C++让人觉得这么难学?

  C++的设计理念本身想通过各种规则克服C语言里面由于语法规则不清晰导致在运行过程中出现的一些错误,这下让初学者倒霉了,很多初学者在学到泛型编程会觉得编译过去太费劲了,好多条条框框卡的死死的,必须要按照语法规则走才能进行下去,而且就语法细节来讲,零散的需要掌握的细节多如牛毛,有的程序员已经做了好多年对于有些C++语法规则还是觉得陌生的很。

  C++语言的更新速度也是相当惊人,其语言本身还在进化,其实大家还在学着一门还在不停升级到编程语言,而且还会出现这种情况,等你费了九牛二虎之力掌握了一些语法细节之后,发现新的更新完的时候,已经把之前的都丢弃了。

  C++也是可以操作指针,本身指针已经很具有复杂性,再加上泛型编程,整个更加热闹了,既追求性能的极致化,还想编程模式灵活性,背的担子异常沉重,以至于很多人在学完C++之后,再去学习C语言会感觉异常的轻松自如。其实很多C++语法学习不是让你如何去使用,更多的是告诫你不能怎么用,这是最难受的,学了一堆语法发现不能立即用上,还需要在特殊的场景才能使用上,对于绝大部分对于这门编程语言还没熟悉之前,算是一种精神的折磨。


 

░ 为什么大家还要学习C++?

1、C++是很多架构师的最爱,也是很多编程大咖的最爱。

  记得十年前在某著名编程网站的论坛里面,特别是C++论坛里面经常见很多C++大咖在里面指导江山,很多小白忙活了半天的代码,让大咖几句话搞掉,在真正掌握这门编程语言,并且深深的掌握其内在规则之后,使用起来会感觉特别舒畅,仿佛把之前所有的阴霾一扫而空。

2、现在很多有名的软件框架都能看到C++的影子。

  其实很简单,在进行面向对象的框架设计还能不影响效率首选只能是C++,现在大家使用的安卓手机的框架层很多代码都是C++,还有大家天天使用的浏览器内核代码几乎全是C++,在很多领域C++有着不可比拟的优势,学会了会明白为啥这门语言属于编程语言的王者,为什么有这么多人学不会还要硬着头皮继续学,可以说C++是一门啃着最有滋味的编程语言,痛苦并快乐着。

  你会发现等你把C++用熟练了,再去学习别的语言,那感觉爽呆了。

  它难在你因为很懂她,最后还不知道为啥莫名其妙的生气。 C++最大的缺点是让你花费大量时间学习这门语言的语法上,而不是解决问题本身上。

  这个世界本来就是残酷的,所以你不能怪C++向你展示了世界的本质 大家都觉得很难等你攀登到高峰的时候发现,原来前面还有比这更高的山峰,等着你去继续攀登。


 

不扯淡了,回归正题,

如果您想尽快学好C++,不妨接着看下去,我给你推荐一条比较靠谱的 C++ 学习之路,相对大部分人而言稍微快一点的速度。

1、小白入门(从视频入手)

人是一种很典型的视觉动物,更喜欢被动接收知识。

相比较于书本上的一板一眼的文字,人更喜欢视频以及图像(要不你以为为什么某宝上的商品都是用很精美的图片来介绍的,就是吸引你的眼球)。

所以,如果你是一个小白,我建议你先从看视频做起,去找一门比较好的C++入门视频教程看着先。


 

还有一点就是千万记得要自己动手敲,自己动手做而不是只看不动手写,一定要自己动手慢慢开始实践。

光说不做假把式,眼睛看会了不代表你真的会了。

总是有人问我该怎么开始写代码?

其实最开始不是叫做写代码,而应该是抄代码才是。

看完视频,你可能对C++有一个初步的认识了,对于下面这些概念有大概的了解了:

变量类型、变量作用域 、常量 、修饰符类型 、存储类 、运算符、循环、判断、函数、数组、字符串、指针、引用、基本的输入输出、数据结构、类 & 对象、继承、重载运算符和重载函数、多态、数据抽象、数据封装、接口(抽象类)


 

2、正式入门(开始看书消化)

C++问世以来,优秀书籍数不胜数,其中一本堪称“C++圣经”的就是《C++ Primer》,现在已经出到了第五版,诺,就是下面这版。


 

我强烈推荐这本书,这本书共分为三个部分(共19 章):

  其中1 - 8 章为变量、循环等基本知识;

  第 9-12 章为标准库的知识比如容器算法等;

  第 13-19 章设计拷贝重载等知识。 

我个人在看这本书的时候,课后题也没有放过,基本都做了,这让我打牢了自己的C++基础。

我还画了一个C/C++的导向图,这本书认真看完是可以对这个导向图上的知识有基本了解的。


 

学了语言也要记得去做相应的练习,最好的方法就是与数据结构结合在一起去实践,那么问题来了。

数据结构与算法,怎么学?

你如果是个纯小白,一点基础也没有。那么我建议你跟C++的学习方法一样,先去看看视频,再来刷刷题。

我画了一副数据结构与算法的知识点导向图,希望可以帮到你,其中基本都是校招会考察和涉及到的点。


 

要记得学会站在别人的肩膀上,利用好前人的总结和经验。

就好像现在我在跟你们说学习的方法一样,这也是我的结晶,希望你们都能好好学到东西。

貌似有点扯远了,接着说回C++吧。


 

3、持续进步

即使你看完了《C++ Primer 5th》之后也不要觉得自己学会C++了,真的,C++比你要想象中的难学一点的。

接着推荐你几本必看的书,是必看的!

书名:STL源码剖析

理由:C++大师侯捷老师的经典之作,源码方面的好书!虽然里面的很多知识已经不再适用如今的C++11 甚至C++17了,但是我们所要学习的是设计思想,对于其中的两级空间分配器,vector扩容,map/set底层等都是面试时常问的知识点,笔者看过两遍,现在还偶尔会翻翻,建议放在C++Primer这本书之后,有过一些coding经验后再去看。

书名:Effective C++

理由:C++是一门很严谨的语言,这也导致了如果出错bug也是不好找的,当初看这本书的时候,笔者一遍一遍的刷新对于C++的认识:这居然可以?这居然不可以??这居然会报错??有不少内容与C++ Primer 5th那本书是相同的,可以在看完C++Primer后再看这本书。

书名:深度探索C++对象模型

理由:这本书会帮助你对虚函数有一个全新的认识,虽然网络上有不少类似的讲解虚函数的博客,但还是建议同学们自己看一下其中的虚函数那章,看完可能会忘,得多看几遍。面试过程中问的也基本只有虚函数,其余章节可略看。

至于那本《More Effective C++》,你看不看,倒还真没太大关系。

头发还好不?hhh


 

 

4、再度进阶

这里不多BB,C++一般都会用来做后台开发或者是服务端开发,这就要求你要具备一些Linux上的基本知识。

同样的,我推荐自己看过的基本网络编程的书籍。

书名:TCP/IP网络编程

理由:书中例子超级多,堪称一小节一个例子,比如很知名的简易版回声服务器、优雅断开TCP链接等,从客户端和服务端两个方面分别展开叙述,手把手带你初窥网络通信的点点滴滴。在看这本书的时候,注意总结笔记,因为例子太多了笔者经常出现看了后面一节就忘记前面一节的内容的情况,后来记了笔记就好多了。而且在github上也有很多别人做好的读书笔记,牛友们可以自行检索。在获得同样知识的前提下,当然用的时间越少越好了。

书名:Linux高性能服务端编程

理由:游双老师的经典之作,笔者第一次看的时候,内心os:这什么垃圾,那么多人推荐??第二遍看的时候,不好意思,是我垃圾….这本书需要一定的门槛,但真的是一本很好的书,网络通信相关基本全都涉及到了,比上面那本《TCP/IP网络编程》要详细的多。其中第1-5章高度涵盖了计算机网络的知识,高度概括,所以看这本书的前提就是要对计算机网络有基本了解和认识,后面的章节讲的是网络通信的前世今生。

书名:Linux多线程服务端编程:使用muduo C++网络库

理由:前排提醒,这本书有一定的门槛。北师大陈硕大神的经典著作,从事服务端编程方向的从业人员必看的一本书,能够从书中借鉴到很多比如关于定时器的设计。笔者也只是看了一小半,建议后期再看,需要不少基本功才能看明白。


 

总结

你可以舍弃4、中的三本书,但是1、2、3中涉及到的书籍和视频,真心建议你去好好学好好看。

所以,如果要学好C++,至少要走完1、2、3吧

最后,C++天下第一!有不同意见的,当场打死!

咋们下回再见~


 

最后,不管你是转行也好,初学也罢,进阶也可,如果你想学编程~

【值得关注】我的 C/C++编程学习交流俱乐部!【点击进入】

问题答疑,学习交流,技术探讨,还有超多编程资源大全,零基础的视频也超棒~


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM