|
假設(shè)我們身邊的一切都是用制造材料加以描述的:“空調(diào)”不是“空調(diào)”,而是“由金屬和塑料做成的物體”;“書(shū)”不是“書(shū)”,而是“由纖維和墨做成的物體”。溝通時(shí)我們也不用“空調(diào)”和“書(shū)”這樣的詞匯,而是“金屬和塑料做成的物體”和“纖維和墨做成的物體”。
可以想象大腦在面對(duì)這些信息時(shí)會(huì)讓我們覺(jué)得多么的痛苦,顯然這樣的事情在現(xiàn)實(shí)中很少發(fā)生,因?yàn)槲覀兊拇竽X具備很強(qiáng)的抽象能力 ,會(huì)通過(guò)抽象塑造“空調(diào)”和“書(shū)”這樣的概念提升溝通效率和維持思維次序。我們學(xué)習(xí)知識(shí)的過(guò)程其實(shí)就是不斷精確掌握(抽象)概念和建立思維次序的過(guò)程。
對(duì)于程序員來(lái)說(shuō)除了生活在現(xiàn)實(shí)世界,還“身處”由程序所構(gòu)建的虛擬世界中。程序設(shè)計(jì)其實(shí)是在個(gè)人頭腦中構(gòu)建虛擬世界的過(guò)程,而維護(hù)代碼則首先是通過(guò)程序所表達(dá)的虛擬世界與其他程序員間接溝通的過(guò)程。為了提高程序員間的間接溝通效率,我們一定希望虛擬世界也象現(xiàn)實(shí)世界那樣充滿著象“空調(diào)”和“書(shū)”這樣的概念,也希望程序員們?cè)谔摂M世界所使用的概念相似。
由于現(xiàn)實(shí)世界中程序員們已掌握了大量的相似概念,如果能將這些概念帶入虛擬世界,那將顯著提升程序員間通過(guò)虛擬世界(即程序)溝通的效率。因此,作者認(rèn)為軟件設(shè)計(jì)的真諦,是通過(guò)程序構(gòu)建與現(xiàn)實(shí)世界相似的虛擬世界。通常,設(shè)計(jì)質(zhì)量越高就越能在虛擬世界中找到現(xiàn)實(shí)世界的影子。
軟件設(shè)計(jì)活動(dòng)的關(guān)鍵又是什么呢?還是讓我們回到現(xiàn)實(shí)世界去尋找答案吧!
在遠(yuǎn)古時(shí)期,人類(lèi)只能通過(guò)徒步從一個(gè)地方到達(dá)另一個(gè)地方。后來(lái)發(fā)現(xiàn)馬可以被馴服,通過(guò)馬車(chē)能更快地從一處到達(dá)另一處。再后來(lái),人類(lèi)逐步發(fā)明了自行車(chē)、汽車(chē)和飛機(jī),且每一次發(fā)明都使得交通效率得以大幅提高。在這里,馬車(chē)、自行車(chē)、汽車(chē)和飛機(jī)都共同地為了解決交通效率問(wèn)題。很顯然,馬車(chē)、自行車(chē)、汽車(chē)和飛機(jī)都是不同的概念,人類(lèi)通過(guò)抽象發(fā)明這些概念,并通過(guò)相互學(xué)習(xí)的方式使得大家掌握其含義。如果將焦點(diǎn)放在交通工具上,我們會(huì)發(fā)現(xiàn)交通效率越高則其概念越抽象,復(fù)雜度也越高。或者說(shuō),越是抽象的概念,其所隱藏的復(fù)雜度就越高。
從這個(gè)關(guān)于交通的例子中我們不難發(fā)現(xiàn),現(xiàn)實(shí)世界中我們是通過(guò)轉(zhuǎn)移復(fù)雜度的方式解決復(fù)雜問(wèn)題的,且每一次不同的轉(zhuǎn)移都伴隨著抽象概念的建立,轉(zhuǎn)移的復(fù)雜度越多所建立的概念就越抽象。由于復(fù)雜度被轉(zhuǎn)移了后,使得一小部分人專注于被轉(zhuǎn)移的復(fù)雜度(比如制造飛機(jī)),而其他絕大部分人在享用復(fù)雜度被轉(zhuǎn)移所帶來(lái)好處的同時(shí)不用關(guān)心被轉(zhuǎn)移走的復(fù)雜度(乘飛機(jī)的人不用關(guān)心飛機(jī)的駕駛與制造)。同樣的事情也發(fā)生在軟件行業(yè)!不同的是軟件行業(yè)“制造”的不是汽車(chē)和飛機(jī),而是編程語(yǔ)言、數(shù)據(jù)庫(kù)、平臺(tái)和框架等。
不難發(fā)現(xiàn),軟件設(shè)計(jì)的關(guān)鍵活動(dòng)應(yīng)是抽象,通過(guò)抽象建立新的概念并將部分復(fù)雜度轉(zhuǎn)移到概念背后。盡管不斷的抽象增加了新概念的復(fù)雜度,但也簡(jiǎn)化了所需解決問(wèn)題的復(fù)雜度。顯然,好的設(shè)計(jì)應(yīng)是其簡(jiǎn)化的復(fù)雜度要大于因?yàn)槌橄笏鶆?chuàng)造的復(fù)雜度。
it知識(shí)庫(kù):軟件設(shè)計(jì)的真諦,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。