关于学习~
来源:1-6 数组中的包含,搜索和删除
qq_慕娘3016055
2020-10-06 00:02:53
老师 您好,学习遇到了一些小烦恼,就是您在讲课的时候 我能很轻易的听懂 跟着代码敲也能很容易的跟上,但是我想着如果我自己实现的话,我会觉得很困难甚至敲不出来。这让我很困扰,不知道该怎么解决呢?
1回答
liuyubobobo
2020-10-06
简单来讲:没有什么捷径,只能多练,多写,多调试。
能够把一个你已经理解的想法正确地使用代码实现出来,这本身就是计算机专业的核心竞争力,也是程序员之所以能吃这碗饭的原因。如果有一个想法,正确的程序就能轻而易举地写出来,那早就没程序员什么事儿了。大家都去学数学专业了。
为什么现在反而是搞数学的坑哧吭哧学代码?就是因为有了解决问题的思路,和有正确的实现之间,隔着一道沟。程序员就是要填这道沟。
我的建议是,对于课程中讲的所有的逻辑,你首先要能听懂。在听懂的基础上,你可以跟着视频实现一遍,但之后,一定要做一遍的事情是,扔掉视频,完全按照你自己脑海中理解的逻辑去实现一遍。
如果实现起来没问题,固然没有问题。但如果有问题,你就需要总结了:
有可能你以为自己理解的逻辑,自己其实没有理解。也有可能是你真的理解了,也能实现出来,但是对于语言的细节没有把握,等等原因。总之,你需要自己找到这个原因,然后继续巩固。发现自己实现不出来,或者实现出来有问题,再去和课程中的代码作比较,找到自己的问题。
值得一提的是,很多时候,程序的逻辑你也理解了,语言的使用你也没有问题,但是实现出来还是会出错,这时就要 debug 了。不要怀疑,debug 的过程是每个程序员必须经历的过程。学习程序的过程不是学着学着,就能一次性写出正确的代码了。而是写出错误的代码,发现有问题,使用小的测试用例,一行一行的去调试你的代码,去找到为什么,明明你觉得自己的程序是正确的,但运行的结果却是错误?到底是哪里自己想错了?
这个时间省不得。我上次这个课程直播还说过:花一晚上时间只为了调出一个 bug,太正常了。如果你没有几个小时甚至几天死磕一个 bug 的经历,在我看来,你写程序的经历是不够的。
这不是在浪费时间,这是在深入去理解,计算机到底是怎么执行程序的。只有经过无数次这样的过程,你才能将自己的大脑训练出和计算机执行程序一样的思维,才能做到用眼睛就跟到 bug,甚至动手写出的代码根本没有 bug。
如果你一定问是否有什么诀窍,可能有。比如我在体系课中就一直强调写程序要定义清楚循环不变量;写递归函数要明确宏观语义;给变量起名称要有意义;等等等等。
但相信我,很多大佬根本不知道什么是循环不变量,照样写出的代码又快又好。这都是几年如一日碰见 bug 不服气,一晚上一晚上去调试。最终搞明白了自己为什么写错了,恍然大悟之后最终积累出的经验。
不要害怕自己写不对。去写,写完了去调,调对了去总结,去看别人优秀的实现,然后再去写。
希望你有时间再看一下我的公众号的这篇文章:https://mp.weixin.qq.com/s/TgQ0nj5nP6a36LpMmER3Uw
另外,这几篇文章我的公众号文章可能也对你有帮助:
隐性知识:https://mp.weixin.qq.com/s/1LHraeRhcYoxY03VS7Riag (实际上,写出正确的代码就是一种隐性知识!)
高效学习的秘诀:https://mp.weixin.qq.com/s/mvRBDwzVebz4BGAEr8MMtw (其中的 6,7,8 是关于这个问题,你需要关注的)
大厂为什么总考算法?https://mp.weixin.qq.com/s/r8myL-qGW24R4PRDkKjtyg (4 和这个问题相关)
加油!:)
相似问题