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