【細品架構2/100】架構之概念認知

本文主要是繼續研讀了資深架構師王概凱Kevin執筆的《架構漫談》系列的《架構漫談(二):認識概念是理解架構的基礎》的心得感覺。王概凱Kevin結合本身多年的架構經驗,經過不一樣的視角,從新審視架構的本質,從而產生一力做《架構漫談》系列,做者但願可以拋出本身從實踐中得出的一些觀點,並引起你們的一些思考,歡迎你們溝通討論。架構

如須要閱讀原文,請關注公衆號「聊聊架構」,從歷史文章中獲取《架構漫談》系列。工具

本文內容結構圖:post

 

概念認知

 

  1.  

如前一篇文章《架構之緣起》所述,架構其實是解決人的問題,而概念是人認識這個世界的基礎,天然概念的認識就很是的重要。然而,大部分人對於天天都習覺得常的概念,都自覺得明白了,但實際上都是下意識的,並非主動的認識學習

舉個栗子:翻譯

好比說「什麼是桌子?」其實每一個人對其的理解描述都是千奇百怪的,這實際上就致使了作架構的時候,不一樣角色的溝通會出不少問題,那麼結果也就可想而知了。code

因此,在架構中對概念的認知,實際上是很關鍵的,本文也將嘗試討論下如何認識概念的過程。get

首先聲明一下,本系列的文章,都是以人的認識爲主體去討論的,解決的都是人的問題,任何沒有具體申明的部分,都隱含這一背景,以避免你們誤解。容器

  1.  

概念也屬於人認識這個世界並用來溝通的手段,包括「概念」這個概念,也是同樣的。在古代,不叫「概念」,稱之爲「名相」。基礎

何爲相?im

通常咱們認爲:看到一個東西,比方說杯子,「杯子」就是一個名字,指代的看到的東西就是相,就是事物的相狀。咱們一聽到「杯子」這個詞,腦海裏就會浮現出一個杯子的形象。而「杯子」這個詞,是用來指代的是這個相狀的,叫作名。合起來就叫作「名相」。

但是當咱們把杯子打碎了的時候,咱們還會稱這個碎了的東西叫杯子嗎? 確定不會,通常會叫「碎瓦片」,若是咱們把碎瓦片磨碎了呢,名字又變了,叫作「沙子」。這就奇怪了,一樣一個東西,怎麼會變出這麼多的名字出來?

那究竟什麼纔是相?

實際上「相「表達的不是一個具體的東西,如上面所提的一個瓷器杯子,並非指這個瓷器,而是這個瓷器所起的一個做用:一手可握,敞口(通常不超過底的大小,太大口就叫碗了),而且內部有一個空間可乘東西的這麼一個做用。並非指這個瓷器自己。這也是爲何咱們從電視上看到一我的拿杯子的時候,咱們知道這個是杯子。可是實際上咱們看到的都是光影而已。因此說相實際上表明的是這個做用,並非具體的某個東西,而名是用來標識這個做用的,用來交流的。

爲什麼須要這個做用?

這個做用實際上是爲了解決「人須要一個可單手持握,可是但願避免直接接觸所盛物體」這個問題。

因此說,每一個概念實際上所解決的,仍是人遇到的某個特定的問題,咱們把解決問題的解決方案,給定了一個名字,這個名字就是對應的某個特定的概念。對於概念這個詞自己,爲了統一指代這些名字,咱們稱起這類做用的名字稱爲「概念」。

一樣,什麼是「建築」?「建築」實際上解決的就是「人須要獨佔的空間,並還可以比較流暢的和外部世界溝通」的問題。

再拿前面的「桌子」來舉例,什麼叫「桌子」? 不少人回答,四條腿,或者說有腿,有一個平面,等等,櫃子不也是這樣嗎?爲何咱們看到櫃子,不會認爲是桌子呢?即便咱們放在櫃子上吃飯,咱們看到仍然會問,爲何在櫃子上吃飯? 不會叫桌子。若是明白了上面的道理,就很簡單了,桌子其實是爲了解決人坐在椅子上,手還可以支撐在一個平面上繼續開展活動的問題,通常會和椅子配對出現

同理,爲什麼咱們能夠在不一樣的語言間進行翻譯,是由於雖然語言不一樣,可是人類所面臨的的問題是同樣的,所使用的名不一樣而已。對於不一樣的動物之間的翻譯也是同理。

  1.  

在討論桌子這個概念的過程當中,不少人會提出抽象這個概念,認爲定義桌子實際上就是抽象的一個過程。這裏,有必要要澄清一下抽象這個概念,這個裏面有誤解。

抽象這個詞表明的含義,其實是把不一樣的概念的類似的部分合並在一塊兒,造成一個新的概念。

這個裏面問題不少:首先「類似的部分」在不一樣的人看來,並不必定那麼類似;其次,抽象以後造成的是一個新的概念,和原來那個概念並不同,所解決的問題也不同。因此咱們不能用抽象來定義一個事物,抽象其實是一個分類的過程,徹底是另外一碼事。

再舉一個例子,杯子和容器,不少人認爲容器是杯子的抽象,可是實際上杯子是杯子,容器是容器,它們所解決的問題是不同的。當咱們須要解決裝東西的問題的時候,會說容器;當咱們須要解決單手持握要裝東西的時候,會說要一個杯子。

回過頭來,根據架構的定義,要作好架構所首先必須具有的能力,就是可以正確的認識概念,可以發現概念背後所表明的問題,進而纔可以認識目標領域所須要解決的問題,這樣纔可以爲作好架構打好基礎。

事實上,這一能力,在任何一個領域都是適用的,好比咱們若是想要學習一項新的技術,如Hibernate、Spring、PhotoShop、WWW、Internet等等,若是知道這些概念所要解決的問題,學習這些新的技術或者概念就會如虎添翼,快速的入手;學習一個新的領域,也會很是的快速有效;使用這些概念來解釋問題,甚至發明新的概念都是很容易的事。爲何強調這個呢,由於作架構的時候,不少時候都是在一個新的領域解決問題,必需要快速進入並掌握這個領域,而後纔可以正確的解決問題

  1.  

總結一下,正如上文所述:

相是一個具體物體的狀態和做用,是來解決具體問題的。而爲了人之間的交流,便根據相有了名,名其實就是一個標記,或理解爲簡單的概念。因此概念的背後實際上是表明解決人的問題

而抽象則是對概念或名類似之處的歸類、分類的過程,不一樣角度來看會得出不一樣的類似之處,從而會有不一樣的抽象出來,因此抽象也會產生不一樣的新的概念。但抽象出來的概念不可以指具體的事物,而只能作到泛指一類具備類似之處的事物。其實抽象自己也是一個概念,其背後也在解決歸類,分類的問題,但抽象並非架構的必然產物

而在解決問題的工程中,會首先有簡單名相(意指解決問題的最原始工具或物體),遇到更高級問題,會有更高級的名相或概念,經過抽象,對名相進行歸類、分類,抽象出新的概念,或者再有更高級的抽象,產生更高級的概念,最後由這些概念會組成架構。

做者:猿碼道 連接:https://juejin.im/post/5b36e19be51d4558b304325e 來源:掘金 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

相關文章
相關標籤/搜索