1.人腦能穩(wěn)定運行多久人腦只有清醒、非REG睡眠和REM睡眠三種工作狀態(tài),沒有“關機”狀態(tài),所以人腦沒有從關機狀態(tài)進入工作狀態(tài)的這個重啟過程,換句話說就是人腦不能重啟。 目前人的平均壽命為70年以上,部分人可以活到100年以上,也就是說人腦是在不重啟的情況下可以穩(wěn)定運行100年。 而目前的個人電腦連續(xù)工作幾個月就會很大概率出問題,性能優(yōu)異的服務器工作3到5年也需要主動重啟一次。 為何人腦可以穩(wěn)定連續(xù)運行100年,而性能優(yōu)異的計算機只能穩(wěn)定運行3到5年?兩者無故障運行時間之比為20:1 。
事實上如果人類可以活200年,人腦也能穩(wěn)定運行200年,換句話說就是人類大腦能存活多久,就可以穩(wěn)定運行多久!是什么原因使得人腦可以連續(xù)穩(wěn)定運行如此長的時間呢?
2.穩(wěn)定運行的奧秘下圖是普通水龍頭和水電站控制中心,這兩者都實現(xiàn)了一個“同樣”的作用:放水和關水。 試問一下:這兩個設備在操作時,哪個出錯誤的概率高? 很明顯普通的水龍頭出錯誤的概率更低,也許用一輩子也不會出故障,事實上在水龍頭工作壽命內(nèi)始終能正常完成放水和關水這兩個功能。
為什么普通的水龍頭出錯誤的概率低,穩(wěn)定運行時間更長呢? 原因是因為功能單一,操作簡單! 越簡單越美!越簡單越不易出錯!越簡單越穩(wěn)定! 熵增定律指出:熵越大系統(tǒng)越穩(wěn)定。系統(tǒng)越是單一,能量分布就越均勻,而能量分布得越均勻熵就越大,熵越大系統(tǒng)就越穩(wěn)定。 軟件設計五大原則(SOLID)中的第一條單一職責原則 Single Responsibility Principle(SRP),單一原則在五大原則中第一位,說明了其重要性!軟件設計要遵守單一原則,實現(xiàn)功能單一,邏輯簡單。這樣才能保證軟件質(zhì)量,保證軟件能更加穩(wěn)定地運行。 人腦之所以能連續(xù)穩(wěn)定運行的重要原因就是使用了單一原則。
3.如何實現(xiàn)單一原則人腦大腦能存活多久,就可以穩(wěn)定運行多久的重要原因是在各個方面使用了單一原則。人腦神經(jīng)系統(tǒng)具體的實現(xiàn)方法是:分體、分區(qū)、分層、分組。 我們一起來看看人腦系統(tǒng)是如何實現(xiàn)這“四分”的? 3.1分體人腦系統(tǒng)有多個組成部分,主要包括:大腦、小腦、間腦和腦干部分。 1、大腦:大腦是中樞神經(jīng)系統(tǒng)的最高級部分,完成與高級情感、精神、視力功能,語言功能、肢體運動等相關功能; 2、間腦:完成與睡眠、攝食以及語言、感覺密等相關功能; 3、小腦:主要實現(xiàn)與平衡、精細動作控制等相關功能; 4、腦干:主要與意識狀態(tài)、生命中樞等相關功能;
我們把人腦由多個組成部分,這些組成部分叫做人腦的分體。每一個分體完成一類特定的功能,分體和分體之間各司其職,分體和分體之間完成的功能不同,分體的物理結(jié)構(gòu)形態(tài)也不同。 由于每個分體只負責一類特定的功能,相比人腦神經(jīng)系統(tǒng)的整個功能這些功能相對簡單,這樣就保證了分體穩(wěn)定運行! 3.2分區(qū)人腦多個分體組成,其中每個分體又分為多個功能分區(qū),這每個分區(qū)均可以獨立完成一個特定功能。大腦作為人腦重要的分體,其分區(qū)如下圖: 大腦皮層17區(qū),18區(qū),19區(qū)為視覺分區(qū),專門用于處理人體的視覺。 大腦皮層1區(qū),2區(qū),3區(qū)為軀體感覺分區(qū),專門負責軀體感覺 大腦皮層41區(qū),42區(qū)為聽覺分區(qū),專門復雜人體的聽覺。 大腦皮層的43區(qū)為味覺分區(qū),專門負責人體的味覺。
分區(qū)策略讓每個功能分區(qū)完成一個特定功能,分區(qū)只用專注處理自己負責的功能即可,從而將一個復雜的功能分解成多個簡單的功能。 3.3分層當一些功能分區(qū)處理的功能比較復雜時,分區(qū)會將復雜的功能按照處理邏輯上的關聯(lián)性再作拆分,我們把這種拆分稱為分層。每一個分層完成某個特定功能,多個分層組成完成整個分區(qū)的工作。 以神經(jīng)系統(tǒng)中的視覺系統(tǒng)為例,初級視覺皮層是用于處理視覺的大腦皮層,或稱為紋狀皮層。紋狀皮層的神經(jīng)元細胞的排列大致可分為6層。這些細胞層被命名為Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ和Ⅵ。紋狀皮層的細胞結(jié)構(gòu)如下圖: 紋狀皮層的這些細胞層由軸突和樹突組成。視網(wǎng)膜接受的信息傳遞到LGN(外側(cè)膝狀體核)最后傳遞到紋狀皮層。
視網(wǎng)膜不同類型的神經(jīng)節(jié)細胞感受到刺激后,會將信息傳遞到紋狀皮層不同的分層中處理。
我們看到的視覺實際上包含了對物體不同特征的感知,例如顏色、形狀、運動等等,這些特征由紋狀皮層中的不同細胞并行的進行處理,紋狀皮層中不同的分層完成一種特殊的信息處理。
這種分層策略可以將復雜的功能細分成一些相對簡單的功能,每個分層只用關注一些簡單的功能,這樣就保證運行的穩(wěn)定性。 3.4分組 人腦系統(tǒng)中的有些功能由一系列相同的子功能組成,此時人腦神經(jīng)系統(tǒng)會將這一系列子功能進行分組處理,每一個分組只用關注一個特定的子功能。 例如人類的聽覺系統(tǒng),耳蝸上上有科蒂氏器官,這些科蒂氏器官含有聽覺感受器。 不同頻率的聲音信號由耳蝸上的不同部位的感受細胞接受。
不同頻率的聲音信號最終傳遞傳遞到聽覺皮層中的不同細胞進行處理。
分組可以將同一個功能細分成一系列功能類似的子功能,這些子功能相對簡單,每個分組只有關注一個簡單的子功能,這樣就保證運行的穩(wěn)定性。
3.5專用通路前面講了人腦為了實現(xiàn)單一原則使用的分體,分區(qū),分層,分組。除此之外為了實現(xiàn)單一原則,人腦絕大多數(shù)信息通路使用專用信息通路,就是說每個信息通路只負責一種信息。 聽覺通路運動通路味覺通路 小結(jié): 人腦系統(tǒng)通過分體,分區(qū),分層,分組等操作將問題“無限細分”,從而使得底層細胞只用完成一個簡單的任務,保證了系統(tǒng)穩(wěn)定性。
這種操作策略像是管理一個國家,一個龐大的國家管理起來非常困難,因此我們將國家按照不同的等級進行劃分,將龐大的國家劃分成較小的行政區(qū),從而實現(xiàn)科學有效的管理。 以偉大的中國為例,中國將整個國家劃分為多個省,每個省劃分為多個市,每個市劃分為多個縣,每個縣劃分為多個鎮(zhèn),每個鎮(zhèn)劃分為多個村。 4.軟件工程師如何借鑒人腦運行策略4.1分體和分區(qū)分體和分區(qū)本質(zhì)上相同,都是使用的“分治”的策略,就是將整個軟件先按照功能拆分成多個任務,或者多個模塊,每個任務完成一個特定的功能,每個任務只關注自己負責的功能,而不關注其他任務的功能。 任務需要把完成特定功能的所有相關代碼全部包含在其內(nèi)部,這樣使得任務完全可以獨立運行,不依賴其他任務,實現(xiàn)了高內(nèi)聚。 下圖是一個網(wǎng)關項目的工程文件,從圖中可以看出整個項目采用了“分治”策略,我們將整個項目分為多個任務,每個任務完成一個獨立的功能,并且每個任務不依賴其他任務。
4.2分層一個復雜的軟件功能可以可以水平分割成合理的多個子系統(tǒng)層。系統(tǒng)中的相關聯(lián)的部分被集中放在同一個獨立的層內(nèi)。 上層功能的實現(xiàn)需要調(diào)用下層的功能并得到回復,相鄰的任何兩層都符合客戶與服務器的關系。下層為上層提供服務并為上層調(diào)用返回結(jié)果,即下層的功能是服務上層的。 分層構(gòu)架規(guī)則: 1、第n層只依賴下方第n-1層 2、第n層不依賴第第n+1層 3、第n層只為第n+1層提供服務 4、第n層通過接口使用第n-1層提供的服務分層
繼續(xù)以網(wǎng)關項目的工程為例,從圖中可以看出每個任務采用了分層策略,通常情況下我們將任務分為三層。第一層負責完成與處理器寄存器相關的事務,第二層負責完成驅(qū)動控制相關的事務,第三層負責完成和業(yè)務相關事務。 分層構(gòu)架非常適合維護和移植,如果任務需要移植到其他處理器平臺,只需要修改第一層即可;如果處理器平臺沒有改變只是修改了外設,我們只用修改第二層即可;如果處理器和外設沒有改變需要修改業(yè)務邏輯,我們只用改第三層即可。 4.3分組某些操作包含一系列類似的操作,我們可以把這些類似的操作進行分組,根據(jù)實際需要選擇相應的分組。 例如我們可以將不同的數(shù)據(jù)類型的加法進行分組: 這種操作在java中叫重載。
5.參考資料1、《神經(jīng)科學——探索腦》 —— Mark F. Bear、Barry W. Connors、Michael A. Paradiso 2、《深入理解計算機系統(tǒng) 》 ——Randal E.Bryant / David O’Hallaron 3、《計算機組成與設計》——戴維A.帕特森 (David A.Patterson) / 約翰 L.亨尼斯 (John L.Hennessy) 4、《軟件架構(gòu)與模式》—— Joachim Goll
|