杯子只是為解決乙個問題的具象化物體。返璞歸真,認清事物後面的問題本質——為更好解決問題打下基礎。
本文是漫談架構專欄的第二篇,作者通過幾個例子,討論了一下認識概念的誤區,如何有效的去認識概念,明白概念背後的含義,以及如何利用對概念的理解,快速的進行學習。
在前一篇文章中,我們討論了什麼是架構。事實上,這些基礎概念對於做架構是非常重要的,大部分人對於每天都習以為常的概念,都自以為明白了,但實際上都是下意識的,並不是主動的認識。比如說「什麼是桌子?」,做培訓的時候,我經常拿這個例子來問大家,回答千奇百怪。這實際上就導致了做架構的時候,不同角色的溝通會出很多問題,那麼結果也就可想而知了。
如前一篇所說,架構實際上解決的是人的問題,而概念是人認識這個世界的基礎,自然概念的認識就非常的重要。這篇文章嘗試討論一下,如何去認識概念。當然這篇不是語言學的文章,我這裡所討論的,和語言學可能不太一樣,如果大家對語言學感興趣,也可以去參考一下。
概念也屬於人認識這個世界並用來溝通的手段,包括「概念」這個概念,也是一樣的。在古代,不叫「概念」,稱之為「名相」。
一般我們認為:看到乙個東西,比方說杯子,「杯子」就是乙個名字,指代的看到的東西就是相,就是事物的相狀。我們一聽到「杯子」這個詞,腦海裡就會浮現出乙個杯子的形象。而「杯子」這個詞,是用來指代的是這個相狀的,叫做名。合起來就叫做「名相」。
可是當我們把杯子打碎了的時候,我們還會稱這個碎了的東西叫杯子嗎? 肯定不會,一般會叫「碎瓦片」,如果我們把碎瓦片磨碎了呢,名字又變了,叫做「沙子」。這就奇怪了,同樣乙個東西,怎麼會變出這麼多的名字出來?
實際上「相「表達的不是乙個具體的東西,如上面所提的乙個瓷器杯子,並不是指這個瓷器,而是這個瓷器所起的乙個作用:一手可握,敞口(一般不超過底的大小,太大口就叫碗了),並且內部有乙個空間可乘東西的這麼乙個作用。並不是指這個瓷器本身。這也是為什麼我們從電視上看到乙個人拿杯子的時候,我們知道這個是杯子。但是實際上我們看到的都是光影而已。所以說相實際上代表的是這個作用,並不是具體的某個東西,而名是用來標識這個作用的,用來交流的。
這個作用其實是為了解決「人需要乙個可單手持握,但是希望避免直接接觸所盛物體」這個問題。
所以說,每個概念實際上所解決的,還是人遇到的某個特定的問題,我們把解決問題的解決方案,給定了乙個名字,這個名字就是對應的某個特定的概念。對於概念這個詞本身,為了統一指代這些名字,我們稱起這類作用的名字稱為「概念」。我們上次討論的「架構」也是是同樣的乙個特定概念,這裡不再詳述。同樣,什麼是「建築」? 「建築」實際上解決的就是「人需要獨佔的空間,並還能夠比較流暢的和外部世界溝通」的問題。
再拿前面的「桌子」來舉例,什麼叫「桌子」? 很多人回答,四條腿,或者說有腿,有乙個平面,等等,櫃子不也是這樣嗎?為什麼我們看到櫃子,不會認為是桌子呢?即使我們放在櫃子上吃飯,我們看到仍然會問,為什麼在櫃子上吃飯? 不會叫桌子。如果明白了上面的道理,就很簡單了,桌子實際上是為了解決人坐在椅子上,手還能夠支撐在乙個平面上繼續開展活動的問題,一般會和椅子配對出現。坐在椅子上工作,對著櫃子有乙個很嚴重的問題 -- 不知道大家試過沒有 -- 就是腿無法展開的問題。當這麼坐著超過半小時就知道是什麼痛苦了。所以桌子的平面下方一定會有乙個足夠容納膝部和小腿的空間,來解決這個問題。解決了這些問題的裝置,才能稱之為桌子。
類似也可以定義出來椅子,由此可見,桌子和椅子的高度也是有限定的,都是是解決人的問題,要符合人的身高:椅子的高度和深度,必須符合小腿和大腿的長度;椅背的高度要配合脊柱的高度;桌子的高度要配合小腿和脊柱的高度之和;**和小孩的自然也就有區別了。這又變成生理學了,事實上要做好桌子和椅子,必須要理解人的生理結構,才能正確的理解桌子和椅子的概念。
同理,為何我們可以在不同的語言間進行翻譯,是因為雖然語言不同,但是人類所面臨的的問題是一樣的,所使用的名不同而已。對於不同的動物之間的翻譯也是同理。
在討論桌子這個概念的過程中,很多人會提出抽象這個概念,認為定義桌子實際上就是抽象的乙個過程。這裡,我覺得有必要要澄清一下抽象這個概念,我認為這個裡面有誤解。我注意到,在做架構師的群體中,不談抽象好像就不是乙個合格的架構師。
抽象這個詞代表的含義,實際上是把不同的概念的相似的部分合併在一起,形成乙個新的概念。這個裡面問題很多:首先「相似的部分」在不同的人看來,並不一定那麼相似;其次,抽象之後形成的是乙個新的概念,和原來那個概念並不一樣,所解決的問題也不一樣。所以我們不能用抽象來定義乙個事物,抽象實際上是乙個分類的過程,完全是另一碼事。再舉乙個例子,杯子和容器,很多人認為容器是杯子的抽象,但是實際上杯子是杯子,容器是容器,它們所解決的問題是不一樣的。當我們需要解決裝東西的問題的時候,會說容器;當我們需要解決單手持握要裝東西的時候,會說要乙個杯子。
回過頭來,根據架構的定義,要做好架構所首先必須具備的能力,就是能夠正確的認識概念,能夠發現概念背後所代表的問題,進而才能夠認識目標領域所需要解決的問題,這樣才能夠為做好架構打好基礎。事實上,這一能力,在任何乙個領域都是適用的,比如我們如果想要學習一項新的技術,如 hibernate、spring、photoshop、www、internet 等等,如果知道這些概念所要解決的問題,學習這些新的技術或者概念就會如虎添翼,快速的入手;學習乙個新的領域,也會非常的快速有效;使用這些概念來解釋問題,甚至發明新的概念都是很容易的事。為什麼強調這個呢,因為做架構的時候,很多時候都是在乙個新的領域解決問題,必須要快速進入並掌握這個領域,然後才能夠正確的解決問題。
以上通過幾個例子,討論了一下認識概念的誤區,如何有效的去認識概念,明白概念背後的含義,以及如何利用對概念的理解,快速的進行學習。掌握了這些原則,會有利於幫助我們在架構階段,快速的識別和定位問題。
架構漫談(二) 認識概念是理解架構的基礎
本文是漫談架構專欄的第二篇,作者通過幾個例子,討論了一下認識概念的誤區,如何有效的去認識概念,明白概念背後的含義,以及如何利用對概念的理解,快速的進行學習。在前一篇文章中,我們討論了什麼是架構。事實上,這些基礎概念對於做架構是非常重要的,大部分人對於每天都習以為常的概念,都自以為明白了,但實際上都是...
架構漫談(二) 認識概念是理解架構的基礎
在前一篇文章中,我們討論了什麼是架構。事實上,這些基礎概念對於做架構是非常重要的,大部分人對於每天都習以為常的概念,都自以為明白了,但實際上都是下意識的,並不是主動的認識。比如說 什麼是桌子?做培訓的時候,我經常拿這個例子來問大家,回答千奇百怪。這實際上就導致了做架構的時候,不同角色的溝通會出很多問...
《架構漫談》閱讀筆記二
那麼我們知道了架構的定義,架構的由來,以及為什麼會產生架構之後,我們應該理解架構認識架構以及如何識別問題。架構實際上解決的是人的問題,而概念是人認識這個世界的基礎,自然概念的認識就非常的重要。回過頭來,根據架構的定義,要做好架構所首先必須具備的能力,就是能夠正確的認識概念,能夠發現概念背後所代表的問...