困境
linux系統(tǒng)實(shí)在是過(guò)于重要,起碼對(duì)于android程序員來(lái)說(shuō),它是非常重要的?;灸闵钊氲矫總€(gè)技術(shù)的底層,要理解它就逃不開要理解linux系統(tǒng)的知識(shí)。
它就像終極boss一樣,不管你走哪條路,要走到頭就要經(jīng)過(guò)它的考驗(yàn)。
但是它又實(shí)在是非常的龐大,你很難用幾個(gè)月的時(shí)間,啃上一兩本書,敲上幾行代碼就理解它,熟悉它。那么你就得準(zhǔn)備好和它長(zhǎng)期相處,既不能逃避它,也不能讓它阻擋你正常的學(xué)習(xí)、使用的腳步。
我們需要一種這樣相處的辦法。
反思
不管是從哪個(gè)語(yǔ)言開始接觸的編程,我們熟悉這個(gè)語(yǔ)言的工作機(jī)制,熟悉它的函數(shù)和類庫(kù),熟悉它常用的框架以及軟件架構(gòu),都是循序漸進(jìn)的。甚至可能我們?cè)谟盟隽撕芏囗?xiàng)目,解決了很多問(wèn)題之后,對(duì)它的了解僅僅是有限的一部分。但是我們覺得我們已經(jīng)掌握它了,并不會(huì)覺得有任何的技術(shù)障礙。這是為什么呢?
根本上,還是因?yàn)槲覀兡軌蛴幸惶壮墒斓纳鲜鲛k法,讓我們可以與它和平相處。
這套辦法涵蓋了:
- 運(yùn)行和調(diào)試方法
- 文檔和源碼閱讀方法
- 便捷可靠的IDE,提供代碼提示、跳轉(zhuǎn)、查找等功能,使人從記憶任務(wù)中解脫出來(lái)
- 清晰的知識(shí)地圖,讓我們知道自己在干什么,有哪些東西可用
- 成熟的社區(qū)和豐富的資料、開源庫(kù)等
- 工程化工具,讓我們可以方便地管理、編譯、集成、發(fā)布軟件。
然后我們就可以將一個(gè)龐大的知識(shí)庫(kù),拆分成一小部分一小部分,慢慢學(xué)習(xí)、吸收。而未知的部分,不會(huì)阻礙我們使用它,我們可以在需要時(shí),再去研究它,快速上手。
問(wèn)題
那為什么到了linux系統(tǒng)這里,一切就變得復(fù)雜了呢?
因?yàn)槲覀円獙W(xué)的東西更加生僻了,我們要研究的知識(shí)更加底層了。我們要處理的源碼更加龐大了,我們要掌握的概念和要解決的問(wèn)題更加復(fù)雜了。
這讓我們運(yùn)行和調(diào)試更加困難,編碼和編譯更加困難,集成和發(fā)布更加困難,理解和熟悉更加困難。
正因如此,我們更加要掌握以上提到的6個(gè)基本功,扎實(shí)地理解掌握,才能掌握l(shuí)inux系統(tǒng)的學(xué)習(xí)、使用方法。
解
- 運(yùn)行和調(diào)試方法
- 文檔和源碼閱讀方法
- 便捷可靠的IDE,提供代碼提示、跳轉(zhuǎn)等功能,使人從記憶任務(wù)中解脫出來(lái)
- 清晰的知識(shí)地圖,讓我們知道自己在用什么,有哪些東西可用
- 成熟的社區(qū)和豐富幫助資料
- 工程化工具,讓我們可以方便地管理、編譯、集成、發(fā)布軟件。
拆分學(xué)習(xí)
我們說(shuō)了,在有了一套解決辦法之后,我們就能夠逐步拆分式學(xué)習(xí)linux系統(tǒng)了。這個(gè)拆分也有通用的辦法。
提出知識(shí)點(diǎn)(概念)
細(xì)化概念
了解它要解決需求,提出的辦法。源碼對(duì)照
針對(duì)細(xì)化過(guò)的概念,對(duì)照源碼學(xué)習(xí)實(shí)現(xiàn)原理。包括,功能-函數(shù)對(duì)照,機(jī)制-流程對(duì)照,使用方式-文檔對(duì)照等。驗(yàn)證
通過(guò)案例和實(shí)驗(yàn),驗(yàn)證概念和知識(shí)。總結(jié)&記錄
對(duì)學(xué)習(xí)的概念進(jìn)行適當(dāng)?shù)难由臁⑹崂?、總結(jié),形成知識(shí)體系,并輸出到文檔。