缘起
- 自己最近有种(错觉),感觉自己C++1.0,STL学习有点上道了,于是想着分享下,平日里脑海里在炫这事,先写下来,省点空间琢磨别的事
- 劝退版
- 科班的,有老师教C++,自己也跟着做作业的,可以不用看
- 能看懂《深度探索C++对象模型》和《STL源码剖析》50%以上,写过《大话设计模式》里50%代码的,也可以不用看
- 只是记录下非科班,自学的同志一点心得,也算是断舍离,把家里原有的书都好好啃下
- 没有啥捷径,书还是要自己啃,代码还是要自己敲,我只是提供一条自己的学习曲线(说不定还是弯路),因为一搜C++学习,一般都是让看《C++ Primer》,可能我是菜鸡,一直没有建立起属于自己的知识框架起来,导致各种知识点都比较零散
- 优先考虑学业务知识(网络协议、视频编解码)和基础知识(OS,DS,OO),而不是语言,编程语言只是工具,编程语言上道了之后,用语言去实现这些,会成为一个相辅相承的轮动进步
- 用时73min,2023-07-20,21:40-22:53。
内容
学习方法
- 1、孟岩的快速掌握语言最常用的50%,【有条件就一周假,前后就9天,找个图书馆,1天1章,死磕掉一本书,能学多少算多少,尽量不要选大部头,选自己能看得懂的书,后面再花1个季度的碎片化时间,去看经典和搞其它的】,把知识脉络建起来
- 2、循环不断的复习,目的是强化知识脉络,之前我像一些blog一样,一章写个笔记,这样复习起来不太行(也可能是我的问题),后来我发现可以写一起,用mkdocs生成笔记,这样每天就有个链接可以随时看到,随时复习
- 3、用C++去实现《大话设计模式》、《算法4》、《leetcode》的一些题
C++1.0
- 零散看过不少书,但建立起脉络的不知道是C++项目的摔打呢,还是当时的书《从零开始学C++程序设计》,单看C++ OO的部分比较少,不过那时运算符重载还是不太熟(现在看来还是自己复习不够,用得少,也就慢慢忘了)
- 有了一些C++基础后呢,就会被推荐看《effective C++》,但这本书呢,有太多STL的东西,不全是OO的东西,看得有点吃力,俺就比较吃力,我目前的想法是,先记住结论,再慢慢琢磨
- 最近越来越觉得OO的重要性,其实可以有了C++基础语法后,自己用C++实现下《大话设计模式》的一些模式,可以先从创建型的来嘛(简单工厂、抽象工厂啥的),在这个里面跟IDE打交道,琢磨理解一些关键字和一些类的设计
- 20230720《深度探索C++对象模型》,虽然是面向中高级的,感觉自己也能get到了,虽然翻译得有点别扭,也算慢慢习惯了,倒不是想深究编译器的实现,主要是看下OO对应的对象模型
STL
- 在没有《C++泛型STL原理和应用》之前,大部分书都是讲如何用STL,这本书的好处在于承上启下,对接了C++传统OO的部分,讲了一些STL的原理(6大组件),也带到了C++2.0的知识,我18年左右手写了笔记,也在blog上写了点章节笔记(但当时吧,没有死磕,导致遗留了不少知识点没有真正掌握,也没有多多复习),搞得水平是个半吊子,今年花了半个月,把全书笔记给整理了起来
- 有了这个基础后,之前有点懵圈的《STL源码剖析》,现在也能看懂了,当然代码层面还没看啊
- 有了上面的基础后,可以去刷些leetcode题,去看下cppreference上的一些关键字,算法
设计模式DP
- 之前一直没有get到DP的点在哪里,现在发现,其实核心在于OO学好,面向对象实在太重要了,把OO的知识点+C++的语法,就是一个模式
- 之前书也看了几本,图书馆借的时候看了下,发现都花里胡哨,忘记学习的根因了,开始把DP的知识点建立起来,再去比较各种模式的优劣,以及语言的差异,2023年07忽然就通了,直接就看《大话设计模式》,看懂UML图,通过例子去领会作者的写这个模式的意图,用C++代码去实现这个模式,在这个过程中,不断记忆与理解
- 之前学ds也好,学dp也好,我脑子里都会有个疑问“学这个有什么用”,年初搞定ds后,现在不问了,现在已经把安当作基石了,有了这个基础后,再看其它东西就好理解一些
最后
- 千万不要学我,不会的地方就喜欢抄下来(觉得以后会看,看个P啊,现有的书,有上下文的地方都不看,抄下来更看不懂了),代码也不要抄,多去读代码,多去写代码(书有github的,直接把github的代码导入到自己的code目录中,自己有意识的思考着在IDE上写可以,不要去逐行抄代码,一点意义没有,完全浪费时间
- 我以前吧,花了太多时间去读闲书(不是说闲书不好,而是对我用处不大),2023年转变了(之前也读技术),但没现在彻底
- 这次把这几本书串起来,不仅仅是知识层面,更重要的信心和方法论的建立,以及平衡到了时间(每天平均投2个cubi,事多就复习,事少就死磕一个知识点),这样也便于坚持下去
- 很多知识也就面试的时候问问,review人家代码的时候用过,定位问题时用到,出个优化方案时用到,一般写个feature不太用得到(一来呢可能太卷了,二来呢,如果总是这么想,怎么挑大梁,拿绩效A)
下一步展望
- 基础的2本《从零开始学C++程序设计》、《C++泛型STL原理和应用》再好好看看,多复习复习
- 在练的《大话设计模式》,2023年7月能整掉前15章的代码,2023年8月全书整完;在读的《深度探索C++对象模型》,趁着还热乎,还有10天,把这书建立起知识脉络来
- 2023年8月继续复习《深度探索C++对象模型》、《effective C++》中的各个item,8月争取投点精力《STL源码剖析》上,主要是从github上找个源码
网友评论