摘要:軟體哲學、軟體之道、銀彈、人狼、軟體架構 參閱:序 消滅人狼 軟體的十大命題 編程規則
道篇
你發現構成軟體體系最基本的粒子了嗎? 這是通往軟體之道的門戶。 (參見:軟體架構形態)
1 軟體的本源-抽象
聖人曰:道可道,非常道。名可名,非常名。無名天地之始。有名萬物之母。故常無欲以觀其妙。常有欲以觀其徼。此兩者同出而異名,同謂之玄。玄之又玄,眾妙之門。
軟體企業發展的正確之路是客觀存在的,但並不是你看到的通常的發展之路啊。
軟體工作者或軟體企業都是可以功成名就的,但也不是通常意義上的成功啊。
軟體體系都是由“無”和“有”構成的啊,覺得有點玄了吧?這就對了,不玄就不是“道”了,別急,別急,開個玩笑,舉幾個例子你就明白了。
你看任何軟體首先都是建立在一個想法之上的,這個想法就是“無”啊,它看不見摸不著啊。那些資料和代碼就是“有”啊,它們在哪個鐵盒子裡運行著。
再說一個你熟悉的吧,類,就是你們OO中所謂的哪個類,它相對對象而言就是“無”啊,比方說賬戶類,它虛無縹緲,即不是全部賬戶也不是某一具體賬戶,它似乎什麼都不是,但一切具體賬戶對象都是由它建立的啊。
“無”、“有”只是一個高度抽象的名字(同時它們也是“道”的兩個別名,參閱:什麼是哲學),對於不同的具體事務,它們都可以有對應的具體名稱。“無”是宇宙萬事萬物的源頭和起點,“有”是構成宇宙的具體事務。世間萬物都是無中有有,有中有無,無上還有無,有下還有有啊,聽起來有點暈吧,認真思考深刻體會吧,對你編程會大有好處的,抽象是軟體的本源啊。
我們理解了萬物都存在“有”、“無”兩層概念,通常對於事務“無”的層面,我們要注意觀察其微妙的本源和本性,這樣你才能把握本質;對於事務“有”的層面我們要細心觀察它的狀態、邊界、行為模式和變化規律,這樣才有助於對事物本體的理解,反過來促進對其本性的洞悉。(這時已經提出了“道性”、“道體”的概念,注意體會)
有和無它們實際上又是一個整體啊,只是不同層面的兩個概念罷了,有無互生,聽起來很玄妙,但實際上很容易理解,其實就是一個抽象的概念,軟體設計的精髓不就是要依賴抽象嗎,這可是登堂入室的大門啊,也是軟體之道。
你在做類的設計時,可以非常好地體會有無互生的道理,你通過對具體對象的觀察、思考、抽象,建立起了類(有生無),類又在你的軟體系統中產生無數的對象(無生有),是這樣吧,而這一切又誕生於你無形的思考和有型編碼之中,妙啊、玄啊,玄啊、妙啊,這廣袤的宇宙就誕生於這“有”、“無”之中。
註:老先生注重概念,先從有無論起,並準確地抓住軟體之要點----抽象,一語道破天機。