使用分層和封裝的結(jié)構(gòu)可以說是計算機系統(tǒng)發(fā)展的自然結(jié)果赡磅。原因有很多,一方面是為了提高系統(tǒng)的準確性和效率的一種手段宝与,通過分層的緩存提高了計算機讀寫的效率焚廊,通過網(wǎng)絡(luò)協(xié)議的分層提高了系統(tǒng)的準確性,軟件系統(tǒng)中的封裝方便了軟件測試伴鳖;一方面也與系統(tǒng)的標準化和模塊化互為因果节值,降低系統(tǒng)生產(chǎn)成本所需要的標準化和模塊化促使了分層和封裝的產(chǎn)生,而分層和封裝也幫助實現(xiàn)了系統(tǒng)的標準化和模塊化榜聂;此外這也是開發(fā)團隊分工協(xié)作的必然結(jié)果搞疗,由于每個個體工程師的能力都是有限的,每個人只能夠負責(zé)自己的一小部分须肆,通過分層和封裝使得工程師團隊之間能夠進行交流合作匿乃。
這種結(jié)構(gòu)帶來的好處是權(quán)責(zé)明確,一旦出現(xiàn)問題豌汇,可以很快的對應(yīng)找到具體出問題的模塊幢炸,并進行修復(fù),或者直接替換拒贱。系統(tǒng)在某些細節(jié)上的效率看上去是下降了宛徊,因為有相當一部分的時間花費在了系統(tǒng)內(nèi)部模塊之間的信息交換上了:比如網(wǎng)絡(luò)通信中會在各層添加他們所需要的信息佛嬉,這樣實際上有效信息比率并不到100%。但從整體來看闸天,依然保持了最優(yōu)的效率暖呕,不僅是系統(tǒng)的效率,還包括了團隊開發(fā)的效率苞氮,糾錯時的效率湾揽。
這種邏輯清晰的結(jié)構(gòu)也是人工系統(tǒng)的一個典型特征。對于計算機系統(tǒng)中的某一個部分笼吟,實際上背后代表的是某一個工程師库物、某一個團隊或者某一個公司。計算機系統(tǒng)的運作實際上背后是這些團隊和公司之間的相互協(xié)作贷帮。硬盤生產(chǎn)商和主板廠商商議硬盤讀寫的方式戚揭,在計算機系統(tǒng)上就體現(xiàn)為主板和硬盤之間的讀寫;網(wǎng)絡(luò)服務(wù)商和軟件廠商商議網(wǎng)絡(luò)數(shù)據(jù)的傳輸協(xié)議皿桑,在計算機系統(tǒng)上就體現(xiàn)為軟件和網(wǎng)絡(luò)服務(wù)的通信毫目。人類的分工組織體現(xiàn)在了計算機系統(tǒng)結(jié)構(gòu)上。這也反映了Conway定律诲侮,一個組織設(shè)計出來的結(jié)構(gòu)镀虐,一定會反映出這個組織的合作的結(jié)構(gòu)。
可見的人工系統(tǒng)沟绪,如長城刮便、金字塔,其背后都可以看到?jīng)Q策層绽慈、設(shè)計層恨旱、執(zhí)行層、建造層的架構(gòu)坝疼,每一層又有征發(fā)搜贤、物資、建造等模塊钝凶。不可見的系統(tǒng)仪芒,例如政治系統(tǒng),也可以看到郡縣或分封的分層耕陷,以及督查軍事行政的模塊掂名。這些系統(tǒng)能夠有效工作的前提是,每個系統(tǒng)參與者也能按照他們規(guī)定的任務(wù)進行行動哟沫。當民夫發(fā)現(xiàn)工作量無法承受的時候饺蔑,就會反抗這個任務(wù),這比計算機系統(tǒng)一兩個元件的罷工要危險嗜诀,因為人類具有情緒猾警,情緒可以傳播孔祸,這種反抗可能會導(dǎo)致整個模塊的罷工。而作為人類社會肿嘲,這個模塊很可能是無法替換的融击,可能導(dǎo)致整個系統(tǒng)的崩潰筑公。而政治系統(tǒng)里雳窟,如果諸侯沒有執(zhí)行他們拱衛(wèi)中央的設(shè)定職能,那么就會僭越中央的職能匣屡。這種在機械種有效的結(jié)構(gòu)在現(xiàn)實中失效的原因在于忽略了每個人都有其自由意志封救,人在系統(tǒng)身份之外的想法和生活,以及人與人之間非系統(tǒng)規(guī)定內(nèi)的交往都會導(dǎo)致系統(tǒng)的問題捣作。
這不是說所有人都應(yīng)該放棄其自由意志來適應(yīng)系統(tǒng)誉结,這會導(dǎo)致整個系統(tǒng)永遠不會發(fā)生改變;也不是說所有人都應(yīng)該完全體現(xiàn)其自由意志券躁,這會導(dǎo)致系統(tǒng)的極度不穩(wěn)定惩坑,和嚴重的安全問題。具體這個度如何把握也拜,就是另外一個話題了以舒。