知乎神回复:大学开始,跟着慢慢抄代码敲对自己编程提高有用吗?
很多刚刚进入大学,或者是预备进入大学计算机专业的同学,自己刚刚接触C语言和数据结构知识,在老师布置某些项目作业的时候就感觉一脸懵逼,感觉完成项目作业感觉好难,但是又好奇那些项目是怎么完成的,思维会很混乱,所以就想看看别人一些逻辑清楚的代码,自己慢慢照着敲!那么这样做,对自己编程能力的提高有用吗?

当然,对于一些不会做又不愿意找方法的同学,甚至于问同学要一份交上去的那种,本文可能就对你没有帮助了。
就像我们刚刚说的,找别人逻辑清晰的代码,照着去敲,然后慢慢默写直至记下来,这种方式到底有没有效果呢?
先说结论,在没有搞懂原理的情况下,效果是有(肯定比不做的好),但是实际上效果就很有限了。
大学时期数据结构的大作业,你觉得难,除了语言本身掌握不熟,更关键的应该是对b+树、二叉树甚至链表等数据结构的理解实现上遇到了障碍,两个问题我们依次讨论吧。

首先,就语言而言,任何一门语言,你要精通很难,但其实只要努力一点,达到够用还是很容易的。以我的经验而言,提高语言能力最简单的办法就是看书和刷题。大学的教材《C语言程序设计》《C Primer Plus》就是很好的入门书籍,读完之后还推荐《C专家编程》,很有意思的一本书。在看书的同时,也可以在各个刷题网站从易到难刷一些编程题,这里推荐ZOJ(http://acm.zju.edu.cn/public/)、POJ(http://poj.org/)和LeetCode(https://leetcode.com/)。
其次,就数据结构本身,我记得教材其实写得很详细,每种数据结构不仅有配图,都有给出部分代码或者伪代码,如果还是有些不太理解,建议直接google百度(或者bilibili,笑),有网友们更通俗的图文或者视频讲解。非常不建议在没有搞懂原理的情况下就去直接肝源码,比如一个B+树,如果你没有搞清楚结构原理,你看代码很难理解它的子节点为何这样分配;这和体检时背视力表差别不大(虽然这事我也干过,笑)。

有了这两个前提,其实你就已经能够自主完成作业了,不过,我反而建议你此时可以先阅读一下一些优秀的源代码,这个时候你就能在理解的基础上,看到别人是怎么以更清晰的思路或者更巧妙的设计实现功能的。此时,至于大作业,想必你也就有了十足的把握。
数据结构如此,其实在工业界,各种工作也都如此。不理解设计思路,直接看代码、往往会忽视一些关键的设计,导致实现和修改的时候出现问题。入职的时候师傅一直向我强调“理解至上”,我想再加上师傅没说但一直身体力行的下半句“勤奋辅之”——“理解至上、勤奋辅之”,应该可以作为学习和工作的座右铭,与你共勉。
原文链接:https://www.zhihu.com/question/387940895/answer/1349932032

学习C/C++编程知识,提升C/C++编程能力,欢迎关注UP一起来成长!
另外,UP在主页上传了一些学习C/C++编程的视频教程,有兴趣或者正在学习的小伙伴一定要去看一看哦!会对你有帮助的~