一直以来伴随我的一些学习习惯(四):知识结构.pdfVIP

一直以来伴随我的一些学习习惯(四):知识结构.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一直以来伴随我的一些学习习惯(四):知识结构

一直以来伴随我的一些学习习惯(四): 知识结构 Tags: 学习方法 save it5 saved 自从建立了 TopLanguage 以来,发现在上面待的时间越来越多,与高手讨论问 题是个粘性十足的事情,一方面,分享自己的认识是整理不成熟的想法的极好途 径,另一方面,互相之间视角不同,所以往往自己忽视的地方会被别人发现。在 讨论中不断精化既有的知识体系。以下这段基本上摘抄自(略有整理和添加)在 TopLanguage 上的发言: 抓住不变量 我喜欢把知识分为essential的和non-essential的。对于前者采取提前深入掌 握牢靠的办法,对于后者采取待用到的时刻RTM (Readthemanual)方法(用本)。 如何区分essential和non-essential的知识想必绝大多数时候大家心里都有 数,我举几个例子:对程序员来说,硬件体系结构是essential的,操作系统的 一些重要的实现机制是essential的,主流编程范式 (OO、FP)是为了满足什么 需求出现的 (出现是为了解决什么问题),是怎么解决的,自身又引入了哪些新 的问题,从而适用哪些场景)。这些我认为都是essential的。我想补充一点的 是,并不是说硬件体系结构就要了解到逻辑门、晶体管层面才行 (其实要了解到 这个层面代价也很小,一两本好书就行了),也并不是说就要通读 《Computer Architecture: Quantitative Approach》才行。而是关键要了解那些重要的思 想(很长时间不变的东西),而不是很细的技术细节(易变的东西)。《Computer Systems:A Programmer’sPerspective》就是为此目的,针对程序员的需求总 结出那些essential knowledge的好书。 再来说一下为什么需要预先牢靠掌握这些essential的知识: 1. 根据Joel Spolsky 同学的说法 (原文),编程语言技术是对底层设备的 封装,然而封装总是会出现漏洞的,于是程序员被迫下到 “下水道”当中 去解决问题,一旦往下走,漂亮的OO、N层抽象就不复存在了,这时候不 具备坚硬的底层知识就会无法解决问题。简而言之就是这些底层知识会无 可避免的需要用到,既然肯定会被用到那还是预先掌握的好,否则一来用 到的时候再查是来不及的,因为essential的知识也往往正是那些需要较 长时间消化掌握的东西,不像Ruby的mixin或closure这种翻一下manual 就能掌握的东西。(英语也是这样的essentialknowledge——上次在PyCN 上看到一个招Python开发人员的帖子将英语列为必备技能,却并不将自 然语言处理列为必备技能,正是因为英语不是可以临阵磨枪的东西,而且 作为知识的主要载体,任何时候都少不了它,如果不具备英语能力,这个 就会成为个人知识结构的短板或瓶颈,而且由于需要长时间才能获得这项 能力,所以这个瓶颈将持续很长时间存在。我们曾经在 TopLanguage 上 讨论过如何花最少的时间掌握英语)另一方面,在问题解决当中,如果不 具备必要的知识,是根本无从思考的,再好的分析能力也并不是每个问题 都能分析出该用哪些知识然后再去查手册的,很多时候是在工具和问题之 间比较,联想,试探性的拼凑来解决问题;这就使得一个好的既有知识基 变得至关重要。(实际上以上这个是一个较大的话题,希望有一天我能够 把它详细展开说清:)) 2. 如果你不知道某个工具的存在,遇到问题的时候是很难想到需要使用这么 样一个工具的,essential knowldge就是使用最为广泛的工具,编程当 中遇到某些问题之后,如果缺乏底层知识,你甚至都不知道需要去补充哪 些底层知识才能解决这个问题。 3. 你必须首先熟悉你的工具,才能有效地使用它 (须知工具的强是无敌的, 但这一切得以“了解你的工具”为前提,甚至得以“了解目前可能有哪些 工具适合你的问题”为前提)。一门语言,你必须了解它的适用场景,不 适用场景(比如继承能解决你的问题不代表继承就是解决你的问题的最适 合的方案,须知问题是一个复杂系统,解决方案总是常常引入新的问题)。 你必须

文档评论(0)

zsmfjy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档