困境
linux系统实在是过于重要,起码对于android程序员来说,它是非常重要的。基本你深入到每个技术的底层,要理解它就逃不开要理解linux系统的知识。
它就像终极boss一样,不管你走哪条路,要走到头就要经过它的考验。
但是它又实在是非常的庞大,你很难用几个月的时间,啃上一两本书,敲上几行代码就理解它,熟悉它。那么你就得准备好和它长期相处,既不能逃避它,也不能让它阻挡你正常的学习、使用的脚步。
我们需要一种这样相处的办法。
反思
不管是从哪个语言开始接触的编程,我们熟悉这个语言的工作机制,熟悉它的函数和类库,熟悉它常用的框架以及软件架构,都是循序渐进的。甚至可能我们在用它做了很多项目,解决了很多问题之后,对它的了解仅仅是有限的一部分。但是我们觉得我们已经掌握它了,并不会觉得有任何的技术障碍。这是为什么呢?
根本上,还是因为我们能够有一套成熟的上述办法,让我们可以与它和平相处。
这套办法涵盖了:
- 运行和调试方法
- 文档和源码阅读方法
- 便捷可靠的IDE,提供代码提示、跳转、查找等功能,使人从记忆任务中解脱出来
- 清晰的知识地图,让我们知道自己在干什么,有哪些东西可用
- 成熟的社区和丰富的资料、开源库等
- 工程化工具,让我们可以方便地管理、编译、集成、发布软件。
然后我们就可以将一个庞大的知识库,拆分成一小部分一小部分,慢慢学习、吸收。而未知的部分,不会阻碍我们使用它,我们可以在需要时,再去研究它,快速上手。
问题
那为什么到了linux系统这里,一切就变得复杂了呢?
因为我们要学的东西更加生僻了,我们要研究的知识更加底层了。我们要处理的源码更加庞大了,我们要掌握的概念和要解决的问题更加复杂了。
这让我们运行和调试更加困难,编码和编译更加困难,集成和发布更加困难,理解和熟悉更加困难。
正因如此,我们更加要掌握以上提到的6个基本功,扎实地理解掌握,才能掌握linux系统的学习、使用方法。
解
- 运行和调试方法
- 文档和源码阅读方法
- 便捷可靠的IDE,提供代码提示、跳转等功能,使人从记忆任务中解脱出来
- 清晰的知识地图,让我们知道自己在用什么,有哪些东西可用
- 成熟的社区和丰富帮助资料
- 工程化工具,让我们可以方便地管理、编译、集成、发布软件。
拆分学习
我们说了,在有了一套解决办法之后,我们就能够逐步拆分式学习linux系统了。这个拆分也有通用的办法。
提出知识点(概念)
细化概念
了解它要解决需求,提出的办法。源码对照
针对细化过的概念,对照源码学习实现原理。包括,功能-函数对照,机制-流程对照,使用方式-文档对照等。验证
通过案例和实验,验证概念和知识。总结&记录
对学习的概念进行适当的延伸、梳理、总结,形成知识体系,并输出到文档。