如果我直接甩一个豆瓣链接推荐这本书,多数人可能都不会点开看(可能即使我写了一点点笔记,也不会有多少人看),但我想这本书是值得看的,这里列出目录和一些摘抄,比直接看豆瓣简介可能要好一些。
从《c++ primer》说起,留心的朋友会发现这本书的审校中有刘未鹏的名字,我也是一天突发奇想去搜了一下封面上的人,就找到了刘未鹏前辈的博客了,他写博客的时间比较早,最开始是在CSDN上面写的,后面来建了自己的博客,他也有微信公众号(可以在他的博客中看到),还有豆瓣,里面有很多书。第一次阅读刘未鹏前辈的博客时就有一种相见恨晚的感觉,感叹要是早点看到这些文章该多少,但后面又一想,只要看到了就不算晚,这本书的内容是从他的博客中摘录出来的,所以可以直接看他的博客,文中有很多的超链接和一些图片视频,博客看起来比纸书要方便一些。为了方便查看,这里按照书里的内容将博客文章进行了汇总。
这本书本身就是一个索引,我感觉如果要做笔记,整本书都是笔记。不过为了回顾和总结,仍然对它进行了小结和摘录。它像一棵树,树有根,除了树本身有价值,树根延伸出去的知识有更大的价值。
可以先看看“我在南大的七年”了解作者的一个大概发展情况。
整本书有三个部分,第一章讲时间管理和学习习惯之类的,比较易懂,受众范围也比较大,看了可以立即用在生活中。第二章的“逃出你的肖申克”系列文章看的很艰难,讲了一些思维认知方面的,仍然可以将有用的东西应用于生活。第三章的数学看的也比较难,如果不写代码也不学数学可以不看(不过解决问题方法是通用的可以看看),觉得一时间没那么多时间学习,也可以先了解大概,知道有这些思想,等以后再接触到相关的,可以再回头来看(比如要学算法了)。
目录
第一篇 暗时间
1.1暗时间
1.2不是书评 :《我是一只IT小小鸟》-设计你自己的进度条
1.3[BetterExplained]如何有效地记忆与学习
1.4学习密度与专注力
1.6我在南大的七年
第二篇 思维改变生活
2.5[BetterExplained]书写是为了更好地思考
2.6[BetterExplained]为什么你从现在开始就应该写博客
2.7我不想与我不能
2.8[BetterExplained]遇到问题为什么应该自己动手
第三篇 跟波利亚学解题
3.1跟波利亚学解题
3.2锤子和钉子
3.3鱼是最后一个看到水的
3.5为什么有必要知其所以然
第一篇 暗时间
1.1暗时间
迅速进状态
长期保持专注
不要频繁切换任务
专注的人比不专注的人时间利用效率高得多,能够迅速进入专注状态,以及能够长期保持专注状态,是高效学习的两个最重要习惯。
- 抗干扰能力
1.2不是书评 :《我是一只IT小小鸟》-设计你自己的进度条
- 进度条 。将目标分割成一个个的里程碑,再将里程碑分割成TODO列表
- 不要过早放弃
- 兴趣遍地都是,专注和持之以恒才是真正稀缺的。
- 靠专业技能的成功是最具可复制性的
- 反思是让人得以改进自己的最重要的思维品质
- 自学的重要性
书:
1.3[BetterExplained]如何有效地记忆与学习
在恰当的时候被回忆起来
理解记忆-线索越多,记忆越牢固,精细的概念、逻辑、一般的解题原则、通用的解题手法、背景知识、类似的问题等等无数的记忆和提取线索,而不是某段孤立的、任意的文本序列。
抽象(举一反三),在从既有经验中总结知识的时候,应利用适当的抽象来得出适用范围更广的知识(而不仅仅是一个萝卜一个坑);另一方面,在遇到新问题的时候,同样应该对问题进行抽象,触及其本质,去除不相干因素避免干扰,从而有效提取之前抽象出来的知识。
做法:
- 主动回顾(很难)
- 创造回忆的机会:
- 经常与别人讨论,或者讲给别人听
- 整理笔记
- 书写
- 设身处地地“虚拟经历”别人经历过的事情
- 抽象和推广
- 联系/比较自身的经历
书:
1.4学习密度与专注力
- 专注-真正的效率源自于内心的追求
- 潜意识的两面性
- 如何获得专注力?
培养你的思维体力,培养专注的习惯,做自己喜欢做的事 ,克服焦虑的负面影响,不能放弃,不让生活中其它细节干扰
- 主动关注和被动关注
- 如何知道你已经获得了专注力?
非要把东西搞错才算吗?
1.5一直以来伴随我的一些学习习惯
如何找到知识的本质?
思考:什么是本质知识?本质知识是需要事先掌握的,用的时候查手册基本没用。比如用matlab,对一些数据函数的理解就是底层的,特别是它的性质之类的,公式的形式的使用方式查一下可以快速上手,但要一下要理解一些复杂的公式就会比较困难,事前知道就会轻松很多。
熟悉并非指熟悉所有细节,而是那些重要的,或者无法在需要用到的时候按需查找的知识。比如上面提到的:适用场景不适用场景,编程范式,主要语言特性,缺陷和陷阱。
在学习新知识的时候带着第三只眼来敏锐地判断这个知识是否是不变量,或不易变的量,是否完全可以在用的时候查手册即可,还是需要提前掌握(一些判断方法在上文也有所提及)。并且学会在纷繁的知识中抽象出那些重要的,本质的,不变的东西。
书:
与计算机相关的:
《Computer Systems: A Programmer’s Perspective》-我应该读
1.6我在南大的七年
《深入浅出MFC》-我感觉mfc已经过时了,看看QT就好。
如何剖析源码?-可以拓展的技能。
编码素养是什么?看《代码整洁之道》是否有用?
与人交流的重要性-建小组。这时我才意识到为什么会有像豆瓣小组这样的存在。
《影响力》-如何思考,如何正确思考?
他的英语学习方法:阅读,读英文技术资料;写作,交流邮件,英文博客;
第二篇 思维改变生活
2.1逃出你的肖申克一:亲身经历才能明白?
如何清晰地思考:近一年来业余阅读的关于思维方面的知识结构整理(附大幅思维导图)
书:
2.2逃出你的肖申克二:从视觉错觉到偏见
- 先验知识
- 偏见
2.3逃出你的肖申克三:遇见20万年前的自己
标题的意思是什么?
人类的高级认知模块、远古认知之间的博弈。例如:立即享乐,长远计划。目前我们还只能通过一些方法诱使大脑去做事。
《Mean Genes》上面说了这么个例子:在远古社会我们在向姑娘求爱的时候会小心谨慎,因为一次洋相会很快被传递开来从而使得我们变成整个群落的笑柄,然而在现代社会,尤其是人口流动剧烈,人际关系变动频繁的大城市,社交失败的成本近乎于0,所以正确而理性的做法却是永远都勇敢地迈出第一步。
2.4逃出你的肖申克四:理智与情感
这篇讲的是心理学
情绪大脑-理性大脑
能够改变既有的习惯,依靠的不是自制力,而是知识。认识到大脑的局限性,并最终摆脱它的错误驱使,则让人情绪上感到聪明和愉悦。于是我们就以彼之矛攻彼之盾,利用情绪大脑本身的动力来推动了它本身。
2.5[BetterExplained]书写是为了更好地思考
书写是对思维的备忘-让我想到了todo list,先写框架,再填充。
书写是与别人的交流-博客、讨论
2.6[BetterExplained]为什么你应该(从现在开始就)写博客
去教一个完全不懂的人,则是一种最最强大和彻底的反思途径-写博客的时候也要意识到这一点,也许读者是一个0基础呢。
让你自己成为一个持续学习和思考的人,并只写你真正思考和总结之后的产物,其他一切就会随之而来。-不要写没用的东西,发之前想想这篇博客到底有没有价值。
2.7我不想与我不能
自利归因,就是把一件事情发生的原因归结为对自己有利的那种情况。
人生不得意往往由两个原因造成,一个是外因,即你抱怨的那些原因,另一个则是内因。无论哪一个因素不成立,都不会造成现在的结果。
2.8[BetterExplained]遇到问题为什么应该自己动手
对学习新知识的困难程度的评估,我们却很不在行,容易把困难评估得过高了。
大部分知识都是需要等你掌握了之后才会“豁然开朗”、“柳暗花明的”,而在这之前你会觉得这东西太难了,完全没有头绪,摸不着门道,觉得山重水复疑无路,你会想“既然无路,就别去碰得满头是包了吧?何苦呢?”。
自己在学东西的时候何尝不是,所以不要轻易说难。
你所需要的只是耐心地踏遍这块知识版图,当你掌握了那些你该掌握的知识之后自然会柳暗花明。
生活或工作中,很大程度上你遇到的每个问题都不是孤立的,既然你遇到了某问题,那么很大的可能性你以后还会遇到类似的问题。-所以去解决它!
但是这个观点也有问题,事必躬亲花费的时间是巨大的!在我看来适当利用资源走捷径是必要的(比如,可以先分清什么是本质问题,什么知识不容易过时,这些自己动手比较划算)。
2.9什么才是你不可替代性的核心竞争力
个人的核心竞争力是是他独特的个性知识经验组合。如果这种组合,1,绝无仅有;2,在实践中有价值,3,具有可持续发展性,那你就具备核心竞争力。因此,当设计自己的发展路线时,应当最大限度地加强和发挥自己独特的组合,而不是寻求单项的超越。而构建自己独特组合的方式,主要是通过实践,其次是要有意识地构造。
知识技能组合:
- 专业领域技能:成为一个专业领域的专家,你的专业技能越强,在这个领域的不可替代性就越高。这个自是不用多说的。
- 跨领域的技能:解决问题的能力,创新思维,判断与决策能力,Critical-Thinking,表达沟通能力,Open Mind 等等。
- 学习能力:严格来说学习能力也属于跨领域的技能,但由于实在太重要,并且跨任何领域,所以独立出来。如何培养学习能力,到目前为止我所知道的最有效的办法就是持续学习和思考新知识。
- 性格要素:严格来说这也属于跨领域技能,理由同上。一些我相信很重要的性格要素包括:专注、持之以恒、自省(意识到自己的问题所在的能力,这是改进自身的大前提)、好奇心、自信、谦卑(自信和谦卑是不悖的,前者是相信别人能够做到的自己也能够做到,后者是不要总认为自己确信正确的就一定是正确的,Keep an open mind)等等。
第三篇 跟波利亚学解题
3.1跟波利亚学解题
问题归约,将一个无法直接解决的问题转化为了一个新的、已知的、并容易解决的问题。
数学可以从两个方面去看,一是从历史的角度再现了真实的数学发展过程(《数学,确定性的丧失》);从思维的角度去再现数学发现的思维过程(波利亚)。
倒推法
在记忆掌握和分析问题的时候都应该尽量抽象的去看待,这样才能够建立知识的本质联系,才能够最大化联想空间(《Psychology of Problem Solving》)。
在文章中看到了陶哲轩,分享:陶哲轩是如何安排时间的.
“你是怎么想到的?”这是问题解决者最常问的一个问题。我们能不能至少做些什么工作以使得它们更容易发生呢?—联想.
何在获取知识优势的同时,防止被知识束缚住,是一门技术。掌握这门技术的钥匙,就是抽象。
题目分两种:一是:求解它们的那个关键的知识可以通过考察题目本身蕴涵的条件来获得,这类题目就是测试思维本身的能力的好题目了。二是:而如果这个性质根本无法通过对题目本身的考察得出来,那么这个题目测试的就是知识储备以及联想能力。
一个好习惯:将思维过程写下来
良好的思维习惯至关重要,而反省加上运用正确的思维方法则是最终养成良好思维习惯的途径。
书:
《像外行一样思考,像专家一样实践》-金出武雄
《Psychology of Problem Solving》
3.2锤子和钉子
要学会分析问题是什么,找最简单的合适解决问题的方法。
3.3鱼是最后一个看到水的
说的还的锤子和钉子,身在其中不自知,think out of the box.
书:
3.4知其所以然(1,2,3)
这节说的是学习算法的时候要了解算法背后的思维过程。
就我有限的阅(算法)书经验,除了波利亚的《怎样解题》还算合格之外(也并非最理想),其它的(包括有名的《算法导论》、《如何解题:现代启发式方法》、《Algorithms》、《编程珠玑》,甚至TAOCP——公平地说由于高老大对算法领域历史了解得非常通透,所以许多地方能够从原始脉络来讲述一个问题,譬如令人印象深刻的从竞赛树到堆的讲解就寥寥一页纸道出了堆这个数据结构的本质来,而像刚才列的几本有名的书却都没有做到),在思维的讲述上都算不上合格(当然不是说这些书没有价值,作为知识性的参考书籍,它们将知识整理出系统结构,极大的便利了知识的掌握,就像《什么是数学》所做的工作一样),为什么我这么说呢,因为我发现每每需要寻找对一个算法的解释的时候,翻开这些书,总是直接就看到关于算法逻辑的描述,却看不到整个算法的诞生过程背后的思想。
注重对思维过程的描述,而不是给出结果。(我也很厌恶那种直接给出结果是文章,思维可能更重要一些。)
金出武雄在《像外行一样思考,像专家一样实践》中说写论文应该写得像侦探小说一样
看侦探小说会让我们更有推理和联想的能力吗?我觉得在看的过程中有自己的思考和小结才会有进步,只是看了图欢乐则不会有太多的收获。
算法诞生过程中的思路往往包含了比实际算法更本质得多的知识,实际算法乃至算法的某个特定语言的实现包含了太多表面的不相干知识,它们会阻碍对本质的理解。
养成优先从问题的本质入手进行考察的好习惯,而不是联想。
看定理必看证明.
看一个问题的解法,必然要看解法所诞生的过程,背后是否隐藏着更具一般性的解决问题的思路和原则。
所谓触类旁通者,其实便是因为他擅长去理解解法背后的更具一般性的东西。所以我还有一个习惯,就是看到美妙的证明和解法总是会去一遍又一遍的去反复揣摩,试图理解想出这个证明的人到底是怎么想出来的,有没有什么一般性的方法可循,很多时候,在这样揣摩的过程中,你会理解到更深刻的东西,对问题性质更深刻的认识,对解决问题的思路更深刻的认识,这些认识不仅对于你理解当前这个定理或问题有极大的帮助,同时也有助于你解决以后会遇到的表面不同但本质一样的问题。
简单地说,如果你对于每个问题都能真正弄清以下这几个问题的答案,那么可以肯定的是,你的理解,记忆,以及学习的效率都会得到质的提高:
- 为什么这种解法是对的?
- 为什么那种解法是错的?
- 为什么这种解法不是最优的?
- 证明为什么没有更优的解法。
经验告诉我们,理解错误的做法为什么错误同样甚至更为重要,往往是在理解了错误的解法为什么错误之后,我们才能深刻的体会到为什么正确的解法是如此正确。
3
为什么当时明明懂了,但没多久就忘掉了呢?为什么当时明明非常理解其证明,但没过多久想要自己去证明时却发现怎么都没法补上证明中缺失的一环呢?
最适合将一个东西讲给别人听的时候并不是等懂了很多年以后,而是刚刚弄懂的时候,这个时候从不懂到懂的差别记忆还非常鲜明,能够清清楚楚地记得到底是哪些关键的地方是最折磨人的,也最能够站在不懂者的角度来思考问题。
我:要在弄懂一个原理后立即写下要点,不然等时间长了,那些难以理解的东西由于自己理解了就会觉得顺理成章,所以做一个老师最大的难处就在于换位思考,设身处地的为初学者思考。
这一小节如果要小结一下,标题就挺恰当的,知其所以然。
延伸阅读:算法之美-《Algorithms》书评
《Introduction to Algorithms》- 原始作者是怎么创造算法
3.5为什么有必要知其所以然
3.6康托尔、哥德尔、图灵-永恒的金色对角线
3.7数学之美番外篇:快排为什么那样快
如果排序能够总是将可能性空间切成两半,那么N个元素的N!种可能排列只需要log_2{N!}
就排查完了,而log_2{N!}
近似于NlogN
。这正是快排的复杂度。堆排序之所以比快排慢,是因为它做不做每次比较都是概率均等。快排也做不到,所以也不是那么快。
3.8数学之美番外篇:平凡而又神奇的贝叶斯方法
逆向概率。
所有需要作出概率预测的地方都可以见到贝叶斯方法的影子,特别地,贝叶斯是机器学习的核心方法之一。
没有细看,后面如果接触到了再细看(反正现在看了也会忘)。
豆列:
参考书:
知乎-暗时间(书籍)-用来 参考总结