演化(evolution)永遠在進行,但這個世界卻不是每天都有革命性(revolution) 的事物發生。動不動宣稱自己(或自己的產品)是劃時代的革命性的,帶來的影響就像時下滿街跑的大師一樣使我們漸漸無動於衷( 大師不可能滿街跑)! 但是 Application Framework 的的確確在我們軟體界稱得上具有革命精神。
什麼是Application Framework?Framework 這個字眼有組織、框架、體制的意思,Application Framework 不僅是一般性的泛稱,它其實還是物件導向領域中的一個專有名詞。 基本上你可以說,Application Framework 是一個完整的程式模型,具備標準應用軟體所需的一切基本功能,像是檔案存取、列印預視、資料交換...,以及這些功能的使用介面(工具列、狀態列、選單、對話盒)。如果更以術語來說,Application Framework 就是由一整組合作無間的「物件」架構起來的大模型。喔不不,當它還沒有與你的程式產生火花的時候,它還只是有形無體,應該說是一組合作無間的「類別」架構起來的大模型。 這帶來什麼好處呢?程式員只要帶個購物袋到「類別超級市場」採買,隨你要買 MDI 或OLE 或 ODBC 或Printing Preview,回家後就可以輕易拼湊出一個色香味俱全的大餐。「類別超級市場」就是 C++ 類別庫,以產品而言,在 Microsoft 是 MFC,在 Borland是 OWL,在 IBM 則是 OpenClass。這個類別庫不只是類別庫而已,傳統的函式庫(CRuntime 或 Windows API)乃至於一般類別庫提供的是生鮮超市中的一條魚一支蔥一顆大白菜,彼此之間沒有什麼關聯,主掌中饋的你必須自己選材自己調理。能夠稱得上Application Framework 者,提供的是火鍋拼盤(就是那種帶回家通通丟下鍋就好的那種),依你要的是白菜火鍋魚頭火鍋或是麻辣火鍋,菜色帶調理包都給你配好。當然這樣的火鍋拼盤是不能夠就地吃的,你得給它加點能量。放把火燒它吧,這火就是所謂的application object(在 MFC 程式中就是衍生自 CWinApp 的一個全域性物件)。是這個物件引起了連鎖反應(一連串的 'new'),使每一個形(類別)有了真正的體(物件),把應用程式以及Application Framework 整個帶動起來。一切因緣全由是起。
Application Framework 帶來的革命精神是,程式模型已經存在,程式員只要依個人需求加料就好:在衍生類別中改寫虛擬函式,或在衍生類別中加上新的成員函式。這很像你在火鍋拼盤中依個人口味加鹽添醋。 由於程式碼的初期規模十分一致(什麼樣風格的程式應該使用什麼類別,是一成不變的),而修改程式以符合私人需要的基本動作也很一致(我是指像「開闢一個空的骨幹函式」這種事情),你動不了 Application Framework 的大架構,也不需要動。這是福利不是約束。 應用程式碼骨幹一致化的結果,使優越的軟體開發工具如 CASE(Computer Aid Software Engineering)tool 容易開發出來。你的程式碼大架構掌握在Application Framework 設計者手上, 於是他們就有能力製作出整合開發環境( Integrated Development Environment,IDE)了。這也是為什麼Microsoft、Borland、Symantec、Watcom、IBM 等公司的整合開發環境進步得如此令人咋舌的原因了。 有人說工學院中唯一保有人文氣息的只剩建築系,我總覺得資訊系也勉強可以算上。帶藝術氣息的軟體創作行為(我一直是這麼認為的)將在 Application Framework 出現後逐漸成為工匠技術,而我們都將只是軟體 IC 裝配廠裡的男工女工。其實也沒什麼好顧影自憐,功成名就的冠冕從來也不曾落在程式員頭上;我們可能像紐約街頭的普普(POP)工作者,自認為藝術家,可別人怎麼看呢?不得而知!話說回來,把開發軟體這件事情從藝術降格到工技,對人類只有好處沒有壞處。不是亨利福特,我們又如何能夠享受大眾化的汽車?或許以後會出現「純手工精製」的軟體,誰感興趣不得而知,我自己嘛...唔...倒是從來不嫌機器饅頭難吃。
如果要三言兩語點出 Application Framework 的特質,我會這麼說:我們挖出別人早寫好的一整套模組(MFC 或OWL 或OpenClass)之中的一部份,給個引子(application object)使它們一一具象化動起來,並被允許修改其中某些零件使這程式更符合私人需求,如是而已。
阅读(1799) | 评论(1) | 转发(0) |