關于面向構件和EOS的一些思考
二、軟件開發和傳統行業應該怎么對比
普元很喜歡把軟件開發同傳統產業進行類比,在接口問題上,我們也來看看傳統的機械產業有沒有類似的概念吧。螺絲和螺帽是我們最常見的兩種構件,也是大規模工業化生產機械裝置的基礎,那么螺絲和螺帽的接口是不是寬松和自適應的呢?不是!他們是強耦合的接口,而且我們有上百萬中不同規格的螺紋規格,或者說接口,每一種都定義的非常精確和有針對性。我們還有不計其數的齒輪的規格,有多少個齒輪可以用其他型號的代替呢?很少。當然機械裝置中也有弱耦合,比如膠水、塑料、樹脂。但是有沒有利用弱耦合的結構來大規模生產機械裝置的呢?我一時間想不出這樣的例子。
類比得出的結論是,如果我們要學習傳統的機械產業,我們應該定制上百萬種嚴格的強耦合接口標準,然后大量的廠商按照標準生產上百萬種構件。看起來好像構件時代離我們還有點遙遠哦。不過也未必,類比得出的另一個結果是,用EOS這樣松耦合的構件來構造軟件,就象用萬能膠水粘到一起的一組齒輪、軸承和螺絲螺帽來做變速箱。
我們不要理所當然的認為這樣的變速箱沒有用,這正是軟件和機械的不同。這樣一個變速箱只要設計合理、能夠承載所需要的負荷,他是真的能夠一直工作下去的,我們不需要面對金屬疲勞、膠水老化和磨損這樣的問題。也許這正是面向構件開發的實質吧:能用膠水粘到一起的東西,就不要用螺絲。
是的,我的類比存在問題。再寫上面這些文字的時候我腦子里面反復想起Jack Reecves的名言:源碼就是設計,而軟件的生產過程僅僅是廉價得幾乎免費的構建過程。不錯,我們可以機械化、自動化的生產大批的汽車、冰箱,可是我們還可以更容易的構建軟件的拷貝。我們在抱怨軟件的生產不能象汽車那樣一臺接一臺的出廠,可是汽車廠又何嘗能夠一臺接一臺的批量設計汽車呢?
昨晚碼字之前喝了點紅酒,思路好像不是太清晰,有點自相矛盾的傾向… …