[转载]分享三篇很是好的学习心得

by 杨军前端

原文地址:
有关读书求知的一些想法
一件事情,若是你不能说清楚,十有八九你就作很差
有些事情,作起来要比想象中的容易编程

出于勉励本身和分享优秀的心得体会的缘由,在此汇总记录。若有侵权,我会马上删除。数据结构

有关读书求知的一些想法

在求知的过程当中,咱们常常会要面对这样,那样的诱惑。编程语言

以读书为例,一部经典的好教材,想要把它读通,搞明白,弄扎实,除了在读的过程当中理解做者想要描述的字面意思之外,每每还须要经过做大量的相关习题及实验来创建起更为扎实,深入的认识,而捧着厚厚的一本书,人类心理潜在的占有本能又每每会驱使着本身以最快的速度将这部教材拿下,知足本身的成就感,因而在没有外人监督,没有外力监控的状况下,很容易演变为一开始的时候读书,作题皆顾,随着时间的推移,本身开始不能抗拒快速读完书本的诱惑,因而作题的频率愈来愈低,最终在快速攻克目标的指导原则下,书读完了,习题却没有作几道。在读的过程当中,在每一个阅读的局部阶段,对做者想要传递的意思彷佛都搞明白了,但真的把书本一合,要求你对某一小节,某一大章,乃至全书作一个总结性的回顾,每每就以为不少想法,不少话,彷佛就在嘴边,就在脑子里,却就是不能以流畅的方式表达而出。真要让你用书上讲述的知识解决一些实际问题,却每每感受无从下手。究其根源,实际上仍是学习过程作得还不够扎实。学习

在咱们的阅读范畴中,有不少图书,是不值得精读的,特别是资讯性质的图书,资料,(尤以互联网上的信息为甚),制做这些信息源的做者,出于快速传播其信息的须要,每每会在制做过程当中对资讯进行适当的处理,以下降受众理解消化的门坎。对于这类资讯,在阅读它们的过程当中,可以增长咱们的见识,却不能增进咱们的理解力,由于在开始阅读以前,咱们的理解力就已经与这些资讯的制做者至关了。(资讯的源制做人在其专业的领域固然有着超出常人的理解力,但在他制做资讯的过程当中,已经试图经过各类手段,下降理解资讯所需的理解力了,不然,阅读一份资讯类的报纸还须要一个普通人通过一两天的思考才能完成的话,这些资讯制做机构也就早早关门大吉了)。google

而一本经典的好教材,其定位与资讯类读物则大不同了,通俗来讲,读资讯类读物,是为了知道发生了什么,而读经典的教材类读物,则是为了知道在发生的事情背后蕴藏的机理。再换句话说,经典教材的目的是为了提高人的理解力,而资讯类读物,则是为了让人长见识设计

想要经过读经典教材的过程来提高本身的理解力,就比如要经过读书的过程,将做者身上所具有的,而在读以前本身身上还未具有的某些能力,特质,吸取过来。不一样的知识背景,不一样的知识结构,不一样的知识基础,甚至不一样的文化背景都注定了要想让本身经过读一本书得到跟做者在这本书所述及的内容上相近的理解力,不会是件容易的事情。大量的思考,习题,实验,乃至于查找相关资料辨伪存真,相互印证,都是重要的手段。一本好的教材,也许只有500页,但为了将其读通,读透,进而提高本身在这本书所述范畴的理解力,你须要作的习题,须要查的资料,须要写的笔记和读书报告,可能会远大于这个页数。若是在读这类书的过程当中,只是知足于在快速阅读中理解本身目光所触的书本范围内容,恐怕,读完了整本书,你都还未必能体会到做者真正想要传达内容的十分之一,我的在理解力上的增益也就颇有限了。接口

因此,对于阅读经典教材,我会试着采用以下的方法:
1。坚持连续的阅读ip

关键是连续,我本人不主张那种"这周看100页,下周休一周,再过一周再看几页"的这种不均匀的阅读方式,现代社会里,咱们接触到的事物,须要处理的事情都是很是繁多的,而个体的处理能力,记忆能力是有限的,因此,若是阅读一本书的间隙太长,极可能你读到第150页的内容时,会发现本身已经淡忘了前面的不少内容,这种淡忘在阅读过程当中确定在所不免,可是不规律,不连续的阅读引发的淡忘效果要明显得多。 一股做气的策略,在读书过程当中也适用。内存

2。坚持思考

早就有古人说过"学而不思则罔",长时间的阅读,却不去花时间思考why and how? 会让本身退化为一个知识存储机器,达不到提高理解力的效果了。对书本上的东西,若是只是人云亦云,所掌握的每每浮于表象,只有真正通过本身深刻思考,推敲的,才能更有效的归入本身的知识体系

3。坚持作题

曾经有过一段时间,我很排斥做题,以为作题实在是一种应试教育的弊端,但多年以后,经历过一些认知,学习上的困境,也走过一些弯路以后,我如今的体会是,作题是一种颇有效的巩固所学,扎实所学的方式。只不过,传统的应试教育过度强调做题自己在功利方面的回报,容易激发起人的心理反弹,以至于个体一旦得到自由学习的环境之后,会倾向于排斥这种方式了。

有不少时候,咱们在读书的过程当中,感受本身已经明白了做者所说的某句话,某个意思了,而实际上却未必如此。不一样的背景,不一样的知识结构,注定了读者与做者常常会在相同的某个描述上存在理解误差。做者实际想阐明的意图是a,他用来阐明意图a的描述是B,而读者在读完描述B之后所创建起来的初始理解则多是c,c与a可能存在交集,也可能不存在交集。不经过作题,仅仅思考,是很难确立本身对做者的主要意图的理解是否是存在误差。而经过作题,每每能发现本身在理解上的误差和盲点,让本身对描述B的理解更接近于做者想要表达的原始意图a了。

4。坚持阶段性地写读书笔记。

我的以为,阶段性地写读书笔记,有那么几分"跳出画外看画"的感受,不停地阅读,思考,作题,会让本身一直纠缠于书本,教材的细节,而适时地跳出来,作一个小结,会有助于本身廓清方向,梳理思路,不囿于一书一时,另外一方面,还能起到巩固所学的目的。至于查找资料,互为印证,由于如今的精力实在是有限,也跟本身的惰性有关,如今本身读书的过程当中,作得还很不够,(我的感受,作学术研究的话,查找资料,互为印证是必要条件,而仅仅是求知的话,则不那么紧迫。)可是上面所述的四点,本身在阅读经典教材类的图书的过程当中仍是基本在一直坚持的。

最后引用法国学者Pascal曾经说过的一句话做为此贴的结尾吧:

"读得太快或太慢,都一无所得。"

一件事情,若是你不能说清楚,十有八九你就作很差

记得有一次开会,个人头儿说了标题所写的这句话,本身深觉得然。

有过较多解决问题的经历的人可能会有这样的感受,不少时候,面对一个问题,咱们即便没有彻底将之想清楚,也能够基于已有的经验给出一个可以work的解决方案,固然这种状况下给出的方案每每不是最优的。而即便给出了解决方案,极可能本身都未必能把本身给出的解决方案所基于的推理逻辑,清晰无误地阐述出来。由于随着人的知识,经验的积累,咱们能够愈来愈多地依靠经验来解决一些问题,这些经验有些是本身身体力行,实践得来的,有些则是道听途说,经卷纸传,从其余的地方得到的。在得到这些经验的同时,咱们的大脑会创建起这样的一个触发机制:遇到问题A,经验B会有效。遇到问题C,经验D会有效...

至于为何经验B对问题A会有效,是否是在全部场景下都会有效,是否还存在更有效的解法,大多数状况下,咱们未必会深刻去思考挖掘。

因而,在遇到了与本身之前经历过的问题类似,相近的场景时,咱们就会条件反射地基于已有经验,设计出一个解决方案,大多数状况下这个方案work得很好。但也有不少状况下,这个方案虽然能work,但并非最优解,甚至本身都未必能说得清楚为何给出这样的方案。

最近在工做中,须要为语法规则设计相应的数据结构,本身就有了这样的感受,在作设计的过程当中,有的时候,是旧有经验做祟,有的时候,则是由于偷懒的情绪占了上风,本身会知足于浅尝辄止,对某个问题给出一个未经深思熟虑的解决方案,而随着设计过程的推动,暴露出来的信息愈来愈多,就会发现已有的设计不能很好地知足一些场景的要求,于是对已有的设计进行调整,可是在调整时,本身每每会发现,对于已经做出的设计,为何当时本身选择那样的接口,定义那样的数据成员,本身并不能给出清晰明确的解释,这就说明在作出当时的设计的时候,本身并未将问题想清楚,也未将本身给出的设计想清楚,而是基于一些已有的经验,给出了一个差强人意的方案而已。

在这方面,个人老大做得要比我好不少,对于一个问题,他每每会将之想得很是清楚以后,才会去着手去作。之前的技术讨论会上,凡是他提出的设想和方案,几乎不多会有被咱们驳斥倒的,由于只要是他在会议上提出来的东西,几乎方方面面,各类可能,他都已经去思考过了。而在工做过程当中经验的积累上,他也常常会做深刻的思考和挖掘。通常来讲,凡是他解决过的问题,只要不是太detail的,跟他讨论起来,他每每可以对答如流,而可以做到这一点正是由于他在储备这些经验的时候已经做足了功夫。而本身在储备经验的时候则每每不会花费太多精力。一个典型的场景就是我和老大同时遇到一个问题,有的时候,我能更快地给出答案和解法。可是过了一段时间,又遇到了相似的问题,我却可能会忘了当时解决问题的思路,须要从新进行思考,而个人老大每每可以直接从他的经验体系中找出当时的解法思路。遇到一个问题,我每每能较快地给出一个解决方案,但细究起来,我就时有被卡住的场景,而个人老大,虽然给出问题答案须要的时间会较长一些,但通常他给出的答案,每每都经得起推敲。

外人看来,我干起活来很快,效率蛮高,可是本身心里才清楚,这种效率是以损失扎实性为代价的。

有些事情,作起来要比想象中的容易

记得去年8月份就曾经想本身动手设计一门语言,一开始的想法是先实现一门跟本身的目标语言特征有类似性的现存语言的编译器,在实现中积累对语言设计和实现的理解。记得当时选定了Ruby之后,就把C Ruby的源码下载下来,打印出其语法BNF范式。后来就是一直在研读Ruby的源码,零零星星也花了些时间,由于老是感受对C Ruby自己的实现理解的还不够通透,就一直没有真正开始本身的实做,在个人想象中,真正动手去实现一门编程语言(仅指实现,不包括设计层面的工做) 并非一件容易的事情,潜在的这种假想就这样让本身一直处于储备阶段。

及至到了新公司这边,本身的第一个任务就是实现一门语言( 已经有相应的IEEE标准)的编译器。这门语言已经比较成熟,市面上支持它的编译器不少,也不乏一些开源的实现。本身一开始固然也是下载了语言的IEEE标准和相应的开源实现研读了一番。不过公司里的工做不像我的任务那样,老是在你感受达到一个好整以暇的状态之后才开始进行,项目的schedule、release的deadline每每会驱使我的在达到相对准备就绪的状态之后就须要开始实际工做的推动了(在个人理解中,对于预研型的项目来讲,可能还能够有更多的储备时间,但对于工程性较强的项目来讲,储备时间每每并不会给很长)。因而在阅读了语言的BNF描述,并对相应开源实现做了一些研究之后,本身就开始上马了。

到如今为止,过去了大概有两个月时间,回头看来,本身也基本上实现了这个语言的词法,语法部分,支持80%的核心语法,能够成功地读入该语言的源文件,并生成内存语法树。如今本身已经开始着手作一些语义层面的事情了,这个进度仍是有些出乎本身意料以外的。在刚着手作这件工做的时候,本身其实还多少是有些忐忑不安的,由于毕竟感受还有太多的东西不彻底处于本身的掌控中,没有那种充沛的胸有成竹的感受。但真的推动起来,才发现,有不少东西、不少理解,,都是在实际的工做中强化、得到的

想一想去年的8月份,本身就开始蕴酿设计一门语言,也一直在做储备工做。过了一年时间,仍是停留在储备阶段,没有开始多少实质工做。

而真的被工做驱使,却在不到两个月的时间就已经大体实现了一门之前本身并不太熟悉的语言的parser前端。这里面当然有部分缘由是由于近一年来工做的积累让本身能够更快速的完成相应工做,但也真切的感觉到一个问题,若是不实际动手作,仅仅是从外面看,每每会被一些表面上的困难阻塞住,产生不可逾越的感受,及至真的动手作了,才会发现未必然。若是不是在新公司有工做须要,本身可能仍是感受没有作好自主实现编译器的积累。虽然本身如今在编译器设计实现方面仍存在大量的知识薄弱项须要补充,但这并不意味着本身不能够开始着手做一些实际的工做。 老是期待达到一个完美的积累状态再去动手实际作,结果可能就是一直陷入积累的状态不能拔出。

相关文章
相关标签/搜索