本
文
摘
要
很负责任地分享我的学习「C语言」的方法,我从今年7月开始系统深入地学习C语言,虽然离这个行业的顶尖人才还有很远很远的距离,但我下面分享了两个行之有效的学习方法,希望能带给初学C语言的朋友一些个人经验以供参考。
方法1:看书
(这个方法适合,对编程语言有一些了解,比如大学课堂上过C语言课,或者C++课的同学,此时已经把当初的知识还给老师的朋友。还适合有除C/C++以外,有其它编程基础的朋友。如果完全零基础,请看方法2。)
直接看《C Primer Plus》,并且动手敲代码,书本给的「示例+课后练习题」,学编程,只看不懂手,等于原地踏步。不要以为学会了憋气,就等于学会了游泳。正确学习任何编程语言的姿势一定是:有概念的认知 + 实践检验。
从开始学习这本书到现在,经过了300多个小时,现在已经学习到了「位操作」这一章,还差最后3章,就能够把这本书学习完了。很早之前,我在一篇回答贴分享过我学习《C Primer Plus》这本书的一些历程。
我什么我一开始就推荐用《C Primer Plus》作为入门书籍呢?理由很简单:它足够系统和深入。 如果能耐得下心且有一定自主学习能力,我并不建议看视频学习,而是通过看书学习。
看书和看视频最大的区别是:在认知前,看书是主动摄取知识,看视频是被动摄取知识。
我举些例子:(1)上课听老师讲课,能够在很短的时间听懂一个,但是自学却没有那么快学得会。(2)一样内容的一篇文章,自媒体人制成视频。如果通过视频,你可能在短短几分钟,就能把数千字的文章的内容摄取完,如果直接阅读这篇文章,需要更长的时间。
这样差异的是我们大脑选择认知方式造成的,视频学习(视听过程)的效率比单纯看书会高,但是这个时候,我们大脑会开启被动接收的模式,有些知识点在播放的过程中并不能很快地被大脑认知。看书学习(视过程),大脑关闭了被动接收模式,开启了主动接收模式,此时大脑摄取知识的方式从前面的并行模式转为专注模式,认知一个知识点的过程比看视频更长,原因是大脑解码一段文字,只能靠眼睛,失去了耳朵这个辅助。这种方式相比视频,能留给大脑更多思考的时间,相比于视频而言是一个更主动的过程。
如果看书学习,在遇到新知识点需要依赖旧知识点时,快速回看旧知识点,看书无疑是最快的。假如看视频,那么只能拖进度条回放;教室上课不懂,没有回放,只能依靠课下问老师和同学。经过这么一分析,你是否对我这个看法认同呢?但这些只是我长时间观察分析得到的「个人经验」,也许并不那么具有普适性,因人而异,有的人更喜欢视频学习。
不论是视频还是课堂,获取知识相比看书,并不是那么全面和深入,权衡利弊,我在通过一两个小时的介绍视频后,我基本都是看书学习。虽然投入的时间会长一些,但是经过自我分析,看书学习还是比较适合我。
下面介绍一些我学习这本书的方式:
《C Primer Plus》每介绍一个知识点,就附带有一个Example,在理解完知识后,开始动手敲代码。先自己写写实现,如果不会,再看着例子敲;如果完全不会,那就直接跟着例子敲;敲完之后,分析一下作者提供的代码,这个很重要,看看自己能否想到其它实现方法,能否利用C99、C11、C17等等这些特性,实现一个比作者的例子更简便的方法,可以通过这个网站查查:
课后的练习题,很重要,一定要自己思考,自己写实现方法,当你完全没有思路的时候,再选择看答案。有的时候自己实现的方法,比作者的参考答案更好。
接下来是管理自己的代码,我使用的是Git工具,可以在GitHub或者Gitee这类代码托管网站创建一个代码仓库来托管自己的代码。Git这类版本控制工具,是每个程序员都必须掌握的基本技能。我把学习C语言的代码托管在这:https://github.com/geometryolife/C_Learning
在学习《C Primer Plus》过程中,我也看了一些计算机组成原理、计算机操作系统、计算机网络、数据结构的书,计算机体系中很重要的4门基础课,一些考研同学简称408。这四本书我没有全部看完,看部分,就足够辅助更全面深入理解《C Primer Plus》中的一些概念,其次看《C Primer Plus》又帮助了我去理解这4本书中的内容。这起到了相辅相成的作用,对于很多人口中的一句话「C生万物」,我更加认同了。
方法2: 看视频
(这个方法适合完全零基础的朋友。)
不管学什么东西,一定要先了解一下,有一个概念,再开始学习。看视频学习就有这么一个好处,相当有一个老师带着你去学习,把你领进门。视频会教你如何安装编程环境,如何写代码,如何运行代码等等,这些基础操作,这些我不建议使用文章教程看,作为辅助可以。不要一股脑就看视频或者看书,看完所有视频或者看完书,你以为学会「编程」了,其实还是写不出代码。
如果会了基础的一些问题,我还是会推荐你使用方法1来深入学习,目前的视频很难做到全面深入或者是很少能达到,既然方法2是介绍视频学习的,我介绍一些网站和视频。首先,B站,我很多东西都是从这个视频网站学习的,传说中最强大的学习网站,学习氛围很不错,不局限在计算机;MOOC、慕课网,上面的一些教程也不错,你可以自己甄选;GitHub、Gitee,代码托管网站,上面有很多开源项目,Stack Overflow最大的技术交流社区,这里有非常多牛人,可以学习到很多东西。
视频我推荐其中一位答主的,我今天看了他介绍的视频教程,我强烈推荐:(在B站搜,看到我圈出来这个,比特鹏哥,其它账号也搬运有,能看就行)
我今天看了几集,真心觉得不错,我看完《C Primer Plus》后,我也打算刷一遍。当回顾和查漏补缺,希望能获得一些书中没有的知识。不过,恕我冒犯,其实视频中有些概念描述还是不太准确,所以还是希望大家先看书。
第二个视频:
翁凯C语言,这是MOOC的视频,网友也搬运到了B站,直接搜就可以了。相比第一个短了很多,如果不想太深入学习,那么这个视频也可以的,其实还有很多,B站都能搜到的,选择一个合适自己的视频开始学习吧!