标签:哪些 玩游戏 跳过 ejs paper angular 个人 语法 分类
作为一名程序员,有几种获取知识的渠道,比如本文将要讨论的技术书籍、开源代码、学术论文。这些可能都不是什么秘密,但每个人都有不同的方式和习惯,也就对应有不同的效果和效率。本文就分享下自己这些年来的一些经验,不一定适用每个人,但也许每个人能有些小的触动和收获。
可能程序员都很少读书,因为这个时代就是这样的特点,读书的人在减少。大家更多地从工作日常获得知识,对于程序员来说比如CSDN、StackOverflow、Quora等。但这种获取知识的方式就好比上厕所时看手机,获取的都是所谓的“碎片化”的知识。你不会因为知道一堆“冷知识”而比别人出色,相信大部分高手大牛也不是这样炼成的。之前在《高效程序员的狂暴之路》中曾提到过:“李小龙说过:我不害怕把一万种踢法都练一次的人,但我害怕把一种踢法练一万次的人。”,牛人都是形成了自己的知识体系,深刻、完整、自洽,这才是你的竞争力。
想要有自己的体系就需要系统化地学习,而系统化学习最直接的方式就是读书,读好书。然而技术书籍汗牛充栋,即便是有口皆碑的好书也足够我们读一辈子了。这时就需要正确的学习策略,对不同类型的书用不同的阅读方法,才能最大程度地发挥其价值。这一部分就简单谈谈,技术书籍的几种常见读法和适用的情况。
从头到尾一气呵成地精读,这种方式适用于章节间有着较强逻辑关系的经典好书。因为有顺序关系,所以从头到尾,因为是经典,所以要精读。比如,《Introduction to Algorithms》(CLRS)、SICP等,不仅正文要读,甚至习题也要认真去做,这样才会有最大收获。这一类书都是慢工出细活,着急不得,适合有一段完整的时间,比如这段工作不忙,那就每天下班固定一两个小时投入进去。
前面以CLRS举例可以不是十分准确,因为毕竟这是一部大部头的巨作,第一次接触的话几乎不可能顺利地从头到尾一字不落地读完的。但书非常经典,我们还是很想仔细揣摩学习的,这时可以采取反复阅读的策略。切记:千万不要让任何东西打消你的兴趣。尽量坚持读完每一章,但如果发现有一处就是看不懂,千万不要卡住甚至就此把书丢到一边。这时可以毫不犹豫地跳过,先尽力读完全书,从作者的动机、背景知识、重要章节、最终结论等各方面,在整体上有一个了解。之后在回头去看当时没太看懂的部分,这样避免浪费一本好书。
这里所谓的对比阅读就是,同时读两三本同专题的书,从不同角度学习。这种方式适合学习一种特定的技术,而不是很大的一个方向或范围。比如笔者学习Spring、MySQL、Dynamic Programming等都用的这种策略,以DP为例,我们可以读CLRS、《Algorithm Design》、《The Algorithm Design Manual》三本经典著作的相关章节,全面学习。但比如整个算法、数据库理论或其他大的范畴,就不适合用这种方式。想要学一个主题、分支、领域的话,还是像前面“精读”部分介绍的那样,专注于一两本经典细细品味比较好。
还有一类书,类似词典等工具书,书名中一般有Handbook、大全、Cookbook之类的字眼。另外网上能找到的各种命令、快捷键Cheatsheet也属于这一类。这种工具书通常会放在手边,需要时随手查询一下,非常方便。比如最近发现的《Python Cookbook》就是一本不错的工具书,对Python方方面面的语法和API都有涉及,对于一名Java为主的程序员来说还是非常实用的。
除了技术书籍,网上的开源软件为我们提供了另一种学习方式。虽然是免费的开源软件,但通常比较流行的开源软件都具有工业级别的标准,所以其代码量都不会太小。因此就跟看书是一个道理,如果不讲究点策略的话,一头扎进代码的海洋,后果可想而知,一定是晕头转向、铩羽而归。下面就谈谈个人的一点经验。
一个软件当然不只包括产品的核心代码,肯定还有编译、打包、测试框架、运行环境等构建工具来支撑它。所以我们可以从这些外围周边工具入手,先整体上了解这个软件是什么语言、哪些依赖、如何构建和运行的等等。了解了这些来龙去脉后,再看源代码会非常舒服。比如近期看了一些ElasticSearch的Kibana源代码,开始看之前一无所知,于是就从外围入手,先确定开发语言是Javascript,用了AngularJS+Nodejs的技术栈。
了解了周边环境和背景知识后,就可以开始读源码了,但首先一步是找到入口。找入口看似简单,实则不然,就像美剧《西部世界》里的剧情一样,黑衣人花了一季时间还没找到迷宫的入口。开源代码的入口应该从Shell或其他启动脚本找起,可以是明显的main函数,也可能是其他指定的位置。可能是直接的加载,也可能是由操作系统内核似的Bootloader间接的加载,达到灵活或安全的目的。
找到了入口,游戏才真正开始。但不要高兴得太早,就像玩游戏先玩“主线剧情”一样,看源码也要抓住个主线才不会迷失。开源代码的主线就是该开源软件的启动过程以及之后主要操作背后所对应的代码。在梳理这条主线时,一般可以采取下面几种办法:
有时要想了解最前沿领域的知识,就要读一些论文。论文一般都不简单,有背景介绍、有解决问题的创新点、设计思路、实验验证、结论总结等。不求完全读懂,但要想抓住其主要思想,也是需要些方法的。《How to Read a Paper》是念研究生修一门课时,一位教授推荐的。她当时推荐我们用这篇文章方式读论文,然后为她布置的几篇经典论文写summary。这里就简单总结一下这篇文章的主要思想——“三趟阅读法”:
http://blog.csdn.net/dc_726/article/details/77861715
标签:哪些 玩游戏 跳过 ejs paper angular 个人 语法 分类
原文地址:http://www.cnblogs.com/findumars/p/7486866.html