關于層(layer)

今天談談“層”這個字,如果要讓我在計算機科學中挑選一個最神奇的字,我會選擇“層”字,因為生活中隨處可見使用“層”的例子。

先從我們身邊的電腦說起,電腦就是一個典型的層次化產品的例子。從下往上看,第一層是看得見摸得著的硬件,比如CPU、內存條和硬盤等,第二層是BIOS(Basic Input Output System),即基本輸入輸出系統,主要作用是檢測硬件和引導操作系統,第三層就是操作系統,比如Windows、Linux和Mac等,第四層就是我們常用的軟件比如微信、QQ和瀏覽器等,這樣做有什么好處呢?其實最主要的目的就是為了簡單方便。你可以想象下如果使用QQ需要特定的硬件、特定的BIOS和特定的操作系統,那估計就沒幾個人使用了。通過抽象分層,QQ只依賴于具體的操作系統,即QQ只需要和自己的下一層通信即可,其他層如何變化不影響QQ的使用。所以有針對不同操作系統的QQ軟件,但是沒有針對不同硬件或者BIOS的QQ軟件。

以編程語言為例,第一層肯定是01010101,第二層是CPU可以理解的匯編指令,第三層一般是編程語言比如C、C++和Go等,第四層就是編程語言提供的各種庫,如果還有第五層,那就是你使用編程語言開發的軟件了。當然這里的分層也不一定嚴謹,因為如果你留意的話,很多編程語言其實都是將C語言進行了不同的封裝,提供一個更簡易抽象的接口供程序員使用而已。層在編程語言中也可以理解成封裝,通過編程語言提供的基本語法和內置函數,將很多常用的功能封裝成庫提供給大家使用,這就是層在編程語言中的具體體現,通過隱藏具體的實現細節,減少編程的復雜度,使得程序員能專注更重要的部分。但是太過于抽象容易在出錯時不知所措,所以還是要好好看看C語言,不要讓封裝把你迷惑了,技術要學好學精,沒有捷徑可取,底層的東西還是需要關注的,比如一個JAVA程序員,他就不一定知道while(*s++=*t++);是字符串拷貝代碼。

以公司管理層為例,第一層是公司的董事長,第二層是公司的總經理,接下來還有副總層、部門負責人層、小組長層,然后才到一般職員。相信大家很輕易的就能看見這樣分層的好處,董事長離職,換一個人就可以了,一般職員、小組長或者部門負責人根本就不需要關心誰是董事長,但是總經理就得關注了。一般職員離職,董事長也不需要關注,但是小組長就需要知道了,這樣分層有利于管理,但是辦事效率就不一定高了,有可能要申請購買一個設備,簽字批準都得幾天,沒辦法,大公司只能這樣,人太多了。

以支付寶為例,支付寶其實就是一個中介,也是利用層次思想。以前我們難免會有很多張不同銀行的儲蓄卡或者信用卡,然后你一會需要去這個銀行取錢,一會需要去哪個銀行轉賬,有了支付寶,你懂的。支付寶就是我們和銀行之間的一個層,當然,馬云發現了這個層,以前我們每個人都需要和不同的銀行打交道,很麻煩(至于有多麻煩,我想你懂的)。于是馬云搞出了一個支付寶,我們只需和支付寶打交道,馬云負責更麻煩的事(和銀行打交道),看見沒,支付寶知道我們的痛處,解決了我們的真正需求--存錢和轉賬,所以,成功了。

說完支付寶,不得不說說滴滴打車,以前我們打車時,總是在街上不停的招手,各種求帶,但是經常被出租車司機拒載,至于拒載原因,我就不說了,相信你也懂的。直到有了滴滴打車,作為我們和司機之間的一個中間層出現了,你要做的就是確保手機沒有停機,且支付寶或者微信有錢,然后發個訂單即可,滴滴打車負責調度附近車輛,幫你完成打車這件麻煩事,價格便宜且服務態度好。你不是嫌打車麻煩嗎?滴滴幫你解決。和支付寶一樣,但凡牛逼的公司,肯定很清楚客戶的真正需求,幫他們解決問題,就是這樣簡單。

其實,層次化思想在生活中隨處可見,比如虛擬化技術、租房的中介、快遞等。所以如果你能開發一個同時更新微博、微信朋友圈和QQ狀態的APP,我肯定會下載使用的,因為你肯定知道同時維護幾個社交軟件的不易,當然如果你要創業,務必挑選好這個中間層,真正的幫用戶解決問題!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容