框架往往會引導你的想法,讓你失去創意;框架也往往會箝制你的作法,讓你失去彈性。
我這一陣子在研究.NET 3.0的WPF(Windows Presentation Framework)框架,去年年底學習Flex/Apollo框架,幾年前使用Windows Forms框架和ASP.NET框架。上個世紀末我專注在Java Swing框架,更早以前還使用過C++的MFC框架和OWL框架。這些都是應用框架(Application Framework)。一般來說,現在的主流應用框架都是「物件導向」加「事件驅動」的,具有類別繼承階層(Class Hierarchy)、事件模型(Event Model)和Layout機制。
為什麼開發軟體時,我們需要應用框架?因為框架讓我們開發軟體更容易。只要你依循框架的開發方式,你就可以比較快、比較容易、比較保險地開發出軟體。甚至搭配該框架的視覺設計工具、程式碼產生器、雙向同步工具,軟體的開發時程可以進一步縮短。
另外,使用框架有兩個缺點:框架往往會引導你的想法,讓你失去創意;框架也往往會箝制你的作法,讓你失去彈性。使用同一個應用框架所產生出來的程式,往往會長得很類似。例如在MFC框架的時代,幾乎有一大半的程式都是MDI(Multi-Document Interface,多重文件介面)程式,都長得差不多,操作方式也都一樣。當框架說「不行」,不允許你這麼做,你很可能得乖乖放棄原有的想法。
你可能願意為了方便而放棄創意和彈性。「長得差不多、操作方式雷同,基本上也是好事呀!」你這麼認為。在速食、工業化的時代,像你這樣的想法很普遍。
框架何止軟體,人生不也充滿了框架。符合這些框架,成為人們努力的目標。婚姻、房子、車子、權力、地位、事業、財富、健康…這些都是人生框架中的類別(Class)與介面(Interface),等待我們去繼承(Inherit)、去實踐(Implement)。如果你選擇不使用人生框架,你等於為你的人生選擇另一條比較辛苦的路。
有了框架,就會有樣板。MFC時代最著名的程式樣板就是Scribble程式(繪圖程式);電視上也充斥著「成功人生」的諸多樣板。程式員被套上框架,從程式樣板學習;一般人被套上框架,向人生樣板看齊。
在「成功人生」的樣板中,先生是高收入的醫師,妻子是美麗的社交名媛,家住在臺北天母高級社區,育有一子一女,女兒正在國外讀哈佛,兒子就讀建中。夫妻兩經常聯袂參加慈善活動。
在「奮發向上」的人生樣板中,生長在三級貧戶的環境的他,卻認真求學,奮發向上,從小到大包辦了所有的第一名,後來當上總統。(儘管後來卻把國家的政治經濟外交全都搞砸了!)
有時候,樣板將我們狠狠地比下來,讓我們無地自容,對我們的心理造成很殘酷的傷害。當你一個人在深夜11點離開公司,開車回家時,你會忽然想到「為什麼我的兒子成天在網咖鬼混、老婆和我形同陌路?為什麼動用私人飛機和香港女星一同出遊的不是我?…唉!」
學生有學生的框架(上課前預習,上課後複習,有問題必求甚解);上班族有上班族的框架(為公司賣命,一步一步往上爬);女人有女人的框架(世界上沒有醜女人,只有懶女人);男人有男人的框架(維持強者的形象,不輕易流淚)…我們都活在框架之中,用崇拜與嫉妒的眼神看著樣板。
就連古代人也逃脫不了框架。子曰:「吾十有五而志於學,三十而立,四十而不惑,五十而知天命,六十而耳順,七十而從心所欲不踰矩。」如果你是古代人,而且你「三十未立,四十而迷惑」的話,可就不妙了。
依循框架,我們可以擁有比較「正常」的人生,但是在框架枷鎖中的生活,真是我們想要的嗎?有多少人敢跳脫框架,活出自我?
或許,當臺灣和中國不再惡鬥、升學主義不再是主流、在便利商店打工的40多歲中年男子不再被視為loser、每個家庭訂有自己的團圓日(不用擠在除夕或聖誕節)、同性戀人在街頭擁吻不再被路人指指點點、莉莉小鄭(女方比男方大超過30歲)的感情得到社會的祝福、不婚族與頂客族不再被投以異樣的眼光…那個時候,才表示我們大多數的人都跳出了人生的框架,才表示我們都被解放了。
或許到那個時候,我們才會發現,只有將框架解構,我們的心靈才能真正演化,進入2.0版;只有將樣板拋棄,我們才能活得快樂,釋放壓力。
但這似乎遙不可及,所以我還是翻開WPF框架的書籍繼續閱讀、寄出浮誇的履歷想要出人頭地、勤於上健身房維持自己的外表、過年期間人擠人只為了吃除夕一餐…。
儘管我已經丟棄一些框架,但我還是保有大部分的框架,而這些框架偶而會把我壓得喘不過氣,特別是在夜闌人靜的時候。