如何进行主动学习与被动学习?深度学习为何十分重要?读文档仍是读代码?这篇文章给出了你最关心的13个问题,但愿对你有启发。算法
你听别人讲,或是本身看书,或是让别人演示给你,这些都不能让你真正得到学习能力,由于你是在被别人灌输,在听别人说。编程
只有你开始本身思考,开始本身总结和概括,开始找人交流讨论,开始践行,并开始对外输出,你才会掌握到真正的学习能力。框架
学习不是努力读更多的书,盲目追求阅读的速度和数量,这会让人产生低层次的勤奋和成长的感受,这只是在使蛮力。要思辨,要践行,要总结和概括,不然,你只是在机械地重复某件事,而不会有质的成长的。机器学习
应该怎样进行深度学习呢?下面几点是关键。工具
换言之,学习有三个步骤性能
我以为这是任何人都是能够作到的,就是看你想不想作了。学习
学习不只仅是为了找到答案,而更是为了找到方法。只有掌握解题的思路和方法,你才算得上拥有解决问题的能力。测试
学习不只仅是为了知道,而更是为了思考和理解。在学习的过程当中,咱们不是为了知道某个事的表面是什么,而是要经过表象去探索其内在的本质和原理。spa
在学习的过程当中,咱们要不断地问本身,这个技术出现的初衷是什么?是要解决什么样的问题?为何那个问题要用这种方法解?为何不能用别的方法解?为何不能简单一些?……debug
拥有正确的学习观念:学习不只仅是为了找到答案,而更是为了找到方法;学习不只仅是为了知道,而更是为了思考和理解;学习不只仅是为了开拓眼界,而更是为了找到本身的未知,为了了解本身;学习不只仅是为了成长,而更是为了改变本身,改变本身的思考方式,改变本身的思惟方式,改变本身与生俱来的那些垃圾和低效的算法。
端正的学习态度和正确的学习观念,是高效学习的第一步,拥有这二者必定可让你事半功倍。
若是你以为用百度搜中文关键词就能够找到本身想要的知识,那么你必定远远落后于这个时代了。若是你用 Google 英文关键词能够找到本身想要的知识,那么你算是能跟得上这个时代。若是你能在社区里跟社区里的大牛交流获得答案,那么你算是领先于这个时代了。
你的信息源要有下面几个特质。
我说过,不少人并非学得不够快,而他们的基础真的不行。基础不行,会影响你对事物的理解,甚至会让你不能理解为何是这样。当你对事物的出现有不理解的东西时,一般来讲,是由于你的基础知识没有跟上。
画知识图的方式可让你从一个技术最重要最主干的地方出发开始遍历全部的技术细节,也就是画地图的方式。若是你不想在知识的海洋中迷路,你须要有一份地图,因此,学习并非为了要记忆那些知识点,而是为了要找到一个知识的地图,你在这个地图上能经过关键路径找到你想要的答案。
在学习某个技术的时候,可使用一个学习模板。只有把这个学习模板中的内容都填实了,我才罢休。这个模板以下
基本上来讲,若是你按照我上面所提的这 6 大点来学习一门技术,你必定会学习到技术的精髓,并且学习的高度在一开始就超过不少人了。若是你能这样坚持 2-3 年,我相信你必定会在某个领域成为煊赫一时的佼佼者。
我认为,人与人最大的差异就是触类旁通的能力。那些聪明的或者是有经验的人触类旁通起来真是太使人惊叹。
我以为一我的的触类旁通能力,能够分解成以下三种基本能力。
在这方面,我对本身的训练以下。
老实说,要得到这三种能力,除了你要很喜欢思考和找其它人来辩论或讨论之外,还要看你本身是否真的善于思考,是否有好奇心,是否喜欢打破沙锅问到底,是否喜欢关注细节,作事是否定真,是否严谨……
对本身的知识进行总结和概括是提升学习能力的一个很是重要的手段。这是把一个复杂问题用简单的语言来描述的能力。
咱们把学到的东西用本身的语言和理解从新组织并表达出来,本质上是对信息进行消化和再加工的过程,这个过程可能会有信息损失,但也可能会有新信息加入,本质上是信息重构的过程。咱们积累的知识越多,在知识间进行联系和区辨的能力就越强,对知识进行总结和概括也就越轻松。而想要提升总结概括的能力,首先要多阅读,多积累素材,扩大本身的知识面,多和别人讨论,多思辨,从而见多识广。
咱们须要注意的是,若是只学了部分知识或者尚未学透,就开始对知识进行总结概括,那么总结概括出来的知识结构也只能是混乱和幼稚的。所以,学习的开始阶段,能够不急于总结概括,不急于下判断,作结论,而应该保留部分知识的不肯定性,保持对知识的开放状态。当对整个知识的理解更深刻,本身站的位置更高之后,总结和概括才会更有条理。总结概括更可能是在复习中对知识的回顾和重组,而不是一边学习一边就总结概括。
作总结概括的方法:把你看到和学习到的信息,归整好,排列好,关联好,总之把信息碎片给结构化掉,而后在结构化的信息中,找到规律,找到相通之处,找到共同之处,进行简化、概括和总结,最终造成一种套路,一种模式,一种通用方法。
要训练本身这方面的能力,你须要多看一些经典的方法论图书,看看别人是怎样总结和概括知识的。你能够在一开始模仿并把本身的理解的知识给写出来,写博客会是一种很好的方式。另一种更好的方式是讲一遍给别人听。总之,你须要把你总结概括的知识公开出来,给别人看,接受别人的批评和反馈,这样你才能成长得更快。其实,我也在锻炼这样的能力。
书和文档是人对人说的话,代码是人对机器说的话(注:代码中有一部份逻辑是控制流程的逻辑,不是业务逻辑),因此
所以,我认为都比较重要,关键看你的目的是什么了。
若是你想了解一种思想,一种方法,一种原理,一种思路,一种经验,恐怕,读书和读文档会更有效率一些,由于其中会有做者的思路描述。像 Effective C++ 之类的书,里面有不少对不一样用法和设计的推敲,TCP/IP 详解里面也会有对 TCP 算法好坏的比较……这些思惟方式能让你对技术的把握力更强,而光看代码很难达到这种级别。(如今你知道什么样的书是好书了吧)
若是你想了解的就是具体细节,好比某协程的实现,某个模块的性能,某个算法的实现,那么你仍是要去读代码的,由于代码中会有更具体的处理(尤为是对于一些 edge case 或是代码技巧方面的内容)。
从学习的过程当中,咱们来分析一下看代码和看书这两个活动。人对新事物的学习过程基本都是从“感性认识”到“理性认识”的。
若是你是个新手,那应该多读代码,多动手写代码,由于你须要的是“感性认识”,这个时候“理性认识”你体会不到。一是由于,你没有切身的感觉,即使告诉你 Why 你也体会不到。另外一方面,这个阶段,你要的不是作漂亮,而是作出来。因此,在新手阶段,你会喜欢 GitHub 这样的东西。
若是你是个老手,你有多年的“感性认识”了,那么你的成长须要更多的“理性认识”。由于这个阶段,一方面,你会不知足于作出来,你会想去作更牛更漂亮的东西;另外一方面,你知道的越多,你的问题也越多,你迫切地须要知道 Why!这时,你须要大量地找牛人交流(读牛人的书,是一种特殊的人与人的交流),因此,这个阶段,你会喜欢读好的书和文章。
然而,对于计算机行业这个技术创新能力超强、技术种类繁多的行业来讲,咱们每一个人都既是新手,也是老手。
在阅读代码以前,我建议你须要有下面的这些前提再去阅读代码,这样你读起代码来会很顺畅。
阅读代码的方法以下:
对了,阅读代码你须要一个很好的 IDE。我记得之前读 C 和 C++ 代码时,有一个叫 source insight 的工具就大大提升了个人代码阅读效率。说白了就是能够查看代码间相互的调用 reference 的工具,这方面 Visual Studio 作得是很是好的。
若是你发现有些知识太过于枯燥,那么能够经过下面的方法解决。
我给你的建议是,一点一点学,一口一口吃。你可使用我前面说过的那些方法,注重基础,画知识图,多问为何,多动手,而后坚持住,哪怕你每周就学一个知识点,你一年也能够学到 50 个知识点。只要你在进步,总有一天能够把这些知识学到手的。
固然,你的目的不是学完这些知识,由于学无止境,你永远也学不完,因此你在学习时,必定不要学在表面上,必定要学到本质,学到原理上,那些东西是不容易变的,也是经得住时间考验的。把学习当成投资,这是这个世界上回报最好的投资。
带着问题去学习,带着要解决的东西去学习,带着挑战去学习,因而每当你解决了一个问题,作了一个功能,完成了一个挑战,你就会感到兴奋和有成就感。这样,你也就找到了源源不断的学习驱动力。
把你学习的心得、过程、笔记、代码分享出来,找到和你一同窗习的人,由于一我的长跑很辛苦,有人同行就会好不少,就算没有人同行,你的读者,你的观众也会为你鼓励叫好,这些也是让你持续前行的动力。
其它几个实用的技巧:
全文完。
关注公众号,第一时间接收最新文章。若是对你有一点点帮助,能够点喜欢点赞点收藏,还能够小额打赏做者,以鼓励做者写出更多更好的文章。关注公众号便可领取全栈精品视频教程大礼包。