前言 這是我嘗試的第一篇小說,也是因為是第一篇小說,我想要把我對這個大環境表現在這篇小說裡面,或許這篇文章需要有點物件導向的觀念,不過我在裡面都有解釋我要說的觀念,所以我相信不懂電腦的人不但看得懂,反而能多學一些有關物件導向程式的知識.麻煩各位過目,並且寫信給我指教.
文章開始 第一章 關於凱爾
很多人對很多職業都有特定的刻板印象。 像醫生和會計師就是很忙又無趣。 藝術家就是自負又機車, 特別好笑的是大家都覺得法官是正義的而律師是邪惡的。好笑是因為法官和律師都是同樣的學習背景,怎麼可能會因為一個司法官或律師考試而改變一個人的個性。 而一般人對於軟體工程師的印象就是話很少,沒有和人類的溝通能力, 還有可以坐在電腦前面保持除了手指以外,身體沒有一個地方會動的特異功能。 這也不盡然。 我也認識很多軟體工程師裡面,也有會去酒吧的,會去少男殺手蔡依琳演唱會的,還有舌戰群雄的。 不過我們的主角,凱爾, 就很符合這種刻板印象。 個子瘦瘦小小,帶著一個很厚的眼鏡, 頭髮比碎紙機碎過的紙還要亂。 用ICQ和人家講話的字數是用嘴巴講的十幾倍。 這就是凱爾。 台灣人,正在美國德州大學讀資訊工程碩士。 雖然是唸工程的,不過他酷愛歷史和哲學,古典音樂. 不過,比起來他還是比較喜歡寫程式。 這時候凱爾正在參加聚會的路上,在美國唸書的台灣人說少也不少。 不過凱爾都不太認識,所以他的好友克理斯特地說服他去參加一個達拉斯的聚會,讓他多認識一點女孩子,也見見世面。 和男人一直都說紅顏禍水,而看到美女卻還是流口水一樣。 如果你去隨便sample, 至少會有一半的女生會說他們要的的對象不需要帥,也不需要有錢。 只要很溫柔,善良,老實就夠了。 這當然是謊話。 若這些女生說的是真的,至少會有一半的女生會愛死凱爾。 事實上,完全沒有這種事,聚會裡沒有女生想要跟凱爾講話。 那褲子和衣服顏色的不搭配; 像鳥窩一樣的頭髮, 讓凱爾在聚會裡面變成人家私下嘲笑的對象。 不過凱爾倒是沒那麼在意別人對他的指指點點。 當他正要從口袋裡把紙和比拿出來計劃他的偉大程式計劃的時候,就一把被克理斯拉過去。 我在這裡先簡單介紹一下克理斯。 他是和凱爾同一個學校唸MBA的,和凱爾不同,克理斯出身名門。 他雖然不穿什麼名牌衣服,可是他的名門氣質可以從他的談吐和行為看得出來。他喜歡女人,所以克理斯的嘴巴比瑞士巧克力還甜,他彈一手好琴,也是因為這樣才和凱爾變成好朋友。這時候前面是五六個盛裝打扮的女生。 克理斯簡單介紹了凱爾, 不過那些女生還是沒正眼看凱爾一下, 而是津津樂到的吵著聽克理斯在軍樂隊發生的故事。 凱爾只是低著頭乖乖的一起聽故事。 在一群女生的可愛笑聲以後,克理斯又講起他買歐元賺了很多錢的事情。 ‘所以啊,預測國際市場還是還是要知道經濟學的基本原理的’克理斯慢慢把話題移到凱爾有興趣的經濟學的問題上, ‘對了,凱爾,你不是對經濟學很有興趣嗎’ 身為凱爾的好朋友,克理斯一直再想辦法讓凱爾再女生面前有自信一點。 ‘沒…沒有啊’, 凱爾緊張的不知道怎麼回答。 ‘有啦,上次你跟我說的渾沌理論那個’克理斯邊擠眉弄眼跟凱爾說。 這時候,凱爾才知道克理斯的用心良苦‘喔 對了’ 凱爾傻笑了一下,就開始高高興興的說他所謂的渾沌理論: ‘如果一個水滴從一百公尺的高處掉下來,可以計算出他的落點, 這是牛頓第二定律,不難。 如果有兩滴,這也頂多要多算出兩個水滴之間的作用力罷了.不過如果我要觀察一個瀑布最高點的某一顆水滴最後的落點,我沒有辦法,即使這幾百兆顆水滴都是只有簡單的力學作用關係,可是我就是算不出來,因為這些個體的量已經改變了整個群體的行為模式。 馬克思和亞當史密斯都曾經對市場經濟有非常簡單的理論兩個人的假設都非常符合邏輯,整個市場說穿了也只不過是供需和物品交換罷了,如果市場上只有兩三個人,我們可以很容易的預測出一兩樣特定物品的未來需求和價錢,不過因為市場參予的個體太多,交易數量也太龐大,所以這種簡單的理論已經沒辦法解釋,甚至,已經沒有任何理論可以解釋這個經濟市場。 這個現象很奇怪, 因為人類花了很多的時間可以解釋大部分的大自然行為,或說是非人為的行為模式,我們就說這是物理吧。 然而,我們人類自己卻沒有辦法解釋人類自己的行為所延伸出的集體行為模式…。。’ 當凱爾越講越興奮的同時,他沒有發現原來很熱絡的氣氛已經降了至少幾十度。大部分的女孩子都聽不下去了,有的開始檢查手上的指夾油是不是脫落,有的在找頭上有沒有分岔的頭髮,比較沒禮貌的假裝去上廁所。 克理斯看得尷尬, 就趕快插嘴,說, 凱爾,我今天看到這麼多美女,眼睛有點累了。想回家,我們走吧。 凱爾正講到興頭上, 說’可是我還沒說這個跟渾沌理論的關係耶’ 克理斯狠狠的瞪了他一下,凱爾才低著頭,忘了跟女孩子說晚安就回家了。 坐上克理斯的頂級賓士車,兩個摯友陷入十分鐘的沉默.凱爾先開始說話了.我知道講這些東西會嚇到那些女孩子,不過既然你給了我機會,我想找一個真的喜歡我的思想的女孩子.克里斯終於忍不住要發牢騷[克里斯你聽我說,沒有女孩喜歡一開始就跟你聊物理,哲學,經濟學. 人和人之間認識的規則就是要寒喧;要聊旅行;運動;八卦,等熟了一點才可以談你家人,你的專業.這個就叫做 交淺不言深].雖然克里斯年紀比凱爾小八個月,不過向來都是克里斯在教訓凱爾的做人處世,凱爾是很和善的人,很肯認真的學,不過這次的事件讓他有點不高興. 他說 [為什麼大家教朋友,甚至找未來的老婆還要這樣假猩猩的,為什麼我不能表現真實的我?]這或許就是學理科和學商科的差別.凱爾一直重視的是true,而克里斯在乎的是method.克里斯知道這點,所以也不想再繼續這個爭執,所以就轉了個話題.[對了,你不是跟我說你的生物模擬系統已經弄好了嗎,什麼…一個在你的電腦裡面製造一個虛擬生態,裡面有各式各樣動物什麼的]提到凱爾的最愛,凱爾就忘記剛剛的爭執了[對對,我在虛擬世界裡面製造了很多種生物,是用每一個生物都是單一個object][什麼叫做object?]克里斯插嘴問,凱爾就對這個資訊工程的術語做一點解釋[object是一個物件導向程式的最基本元素,每一個個別的object有他們的屬性,例如說這個動物有他固定的年紀,性別,可忍受的最高最低溫度等等. Object還有一個特性叫做function,在我的系統裡面就表示能力,例如肉食性動物有能力消滅草食性動物;又例如有的動物會飛,有些動物,像猴子,有能力互相傳送簡單訊息來幫助他們團體合作]. 唸商科的克里斯還是聽不太懂,他說[反正你就是用所謂的object來模擬你的虛擬世界裡的動物就對了]. [沒錯],凱爾還以為他的解釋很精闢呢. [不過厚,你剛剛講了一大堆的動物,你怎麼把他們分類的,還有你上次跟我說,你想用這套系統證明達爾文進化論,這好像跟你講的有點太遠了]這時候克里斯的車從達拉斯市中心開上了回學校的高速公路. [這就牽涉到另外一個術語叫做class.這有點像母集合和子集合的觀念.例如讓我寫有關幾何的程式時我會把正方形和菱形放在長方形的class下面…][你直接用你的系統舉例就好了]克里斯顯然是不想知道太多資訊工程的細節[喔,好,這個技術其實是方便我製造動物,例如貓跟狗都是恆溫,雜食,生育能力差的動物,所以我把他們歸類在哺乳類動物,所以當我在設定狗的屬性的時候,我只要先宣告狗是哺乳類動物,狗就會自動繼承這些特性,而我只要針對狗和其他哺乳類動物的不同做屬性的調整就可以了][所以狗就是一個object?]克里斯似懂非懂的問[這就是我厲害的地方了]凱爾有點沾沾自喜[我還是把狗或是任何一個種類的動物設成一個class. 每一隻狗在生育他的下一代的時候,不會製造出跟他一模一樣的狗,而是依照class裡敘述的規則生出他的小孩. 你想想,例如當環境溫度降到很低的時候,大部分的狗都會死掉,但不是所有的狗都會死,為什麼呢,就是因為每一隻狗雖然都是同一個class,但是每一個object都有些微的屬性差異,我就是利用這個來試著證明達爾文進化論]克里斯不相信達爾文進化論,但是他至少知道所謂的適者生存的原理是來自同一種動物的個別差異,而凱爾有能力用所謂的物件來製造這種差異.他接著說,[所以你有特定的規則來決定你的虛擬動物,喔,應該說是object,在什麼條件下會死掉對不對]這個問題彷彿騷到癢處[對啊,其實應該不叫死掉,應該是叫做回收,不然object越來越多,我的電腦絕對受不了.所以object需要回收]
在這個虛擬的世界裡面,凱爾設定了一個叫做’生物’的物件(object)。 像其他的java物件一樣, 這些生物物件有他們固定的attribute(屬性,特徵)和function (個別能力)。 他們從同一種類的物件裡面被fork (生)出來。 一般來說,object會在四種情況下被系統回收, 兩種是內在因素,兩種事外在因素。 前兩個是內再原因。 第一,每個單獨的物件都會被隨機分配所謂的年紀的屬性,這種屬性依照不同的class有不同的range,當年紀到達一定的數字,記憶體就會把這個物件當作死亡,並回收這個物件。 第二, 同一個物件會諄循一個共同的生物方程式,我稱這個function叫做生物數量平衡式, 依照這個方程式,每一種不同的物件(生物)都可以被控制在一定的數量裡面。 以免物件的數量太多會佔太多系統空間。 這個所謂的生物數量平衡式是我最得意的軟體工程技術的成就。在這個平衡式之下,每一個物件都可以判斷自己要生多少同種的物件,而當這些物件生太多物件時, 會有固定數量的這種物件會自動要求被系統回收。 再來就是外在因素, 第三個。 我在我的虛擬生態系統裡面有設一個環境變數,我可以自行決定把特定區域的所有物件全部清空, 這是為了方便我手動控制他要的特定物件種類數量而設的function,在他的虛擬世界裡就是類似發生大型天災.一個區域的所有動物全部死光光。 第四個, 每一個物件都有可能會在特定的條件下被其他的物件消滅。 這是我為了測試虛擬世界裡生物鏈而做的新設定,這個條件聽起來不太合理,不過事實上,有生物數量平衡式的配合,整個系統跑起來相當順利。 比如說,像設定類似像老虎這種在生物鏈頂端的物件,不會因為沒有其他的物件可以消滅他而數量一直增加,因為要諄循生物平衡式。]車子已經從達拉斯開到了學校,凱爾到了謝以後就回到房間裡繼續他的生態系統. 還沒開燈以前的凱爾的房間,只有他電腦的螢幕的光。 螢幕上面是java 的對話方塊和Borland J++ builder。 對話方塊裡面一直跳動的數字和一行一行的java敘述就是凱爾的世界。一個凱爾的虛擬世界。就在這簡單的理論和複雜的java系統之下,凱爾奇蹟似的創造了一個在他電腦裡面的一個平衡的生物系統。 在剛剛被克理斯拉去聚餐以前,凱爾已經創造了一百多種不同類型的物件, 並且每一種物件的成長消退都像波浪一般的自然。 本來迫不及待的想要把他的這套系統讓全世界的人都知道的凱爾,在這場令他難過的聚餐之後,他已經不想讓人家了解他了。 環顧他的房間, 到處是丟在地上的衣服和他上課的講義, 報告草稿。 床上的被子從來沒重新鋪過。 牆壁上羅斯扥波維琪的簽名海報已經缺了一個角。 這外在的一切都似乎證明了凱爾在現實生活的失敗。
難過的同時,凱爾有了一個新奇的想法, 他想起昨天曾經從網路上抓到一個algorism (演算法)可以讓他的物件有自己決定或是創造部分屬性的能力 。 他夢想著因為他的這個靈機一動,可以創造出一個有自主能力,創造能力的物件。 並看看這個物件怎麼影響他的整個系統。 激動的正在改程式的同時,凱爾隨手放了首二十世紀的大提琴奏鳴曲”小丑與月亮”。 這風格詭異的奏鳴曲或許連愛古典音樂的克理斯都會直搖頭, 不過這首充滿想像空間的大提琴奏鳴曲,正好符合凱爾現在內心的激動。 人家說軟體工程師的工作無聊, 事實上,軟體工程師也或許是一種藝術家, 他用新的工具,新的語言,展現出屬於他自己的創作。
第二章 關於希歐:
克里斯的房間就差很多了,雖然是富家子弟,但是希歐的房間裡的東西並不奢華,不過有一種屬於他的風格.配合著他的雙人床風格的黑色書桌上的筆記型電腦;講義,筆筒.似乎都特地調整過位置,不管從哪裡看都有一種未來企業家風格的美.他打開電腦,在試著用outlook裡近一千筆的朋友資料裡找出今天一起去吃飯的女孩子的電話,好為他的先離開而道歉.不過這同時,他床頭擺的白色March的汽車模型裡閃出一次一次紅色的光,仔細一看,才知道那是電話.克里斯優雅的把電話接起來,連hello都還沒說,電話裡就傳出了聲音[我想做一種類似人類的class,看看這個class會不會和其他物件一樣諄循生態平衡]克里斯臉上顯出有點失望的表情,呆了大概五秒後回答[你的意思是說你其他的class都會諄循你所謂的生態平衡,喔,就是你說每一種動物的object數量雖然會消長,但是都會在固定的數字上起伏是吧],他故意把類似汽車屋頂的電話拿得離耳朵遠一點,因為凱耳的聲音太大了[是啊,不過我剛剛做一個小小的實驗發生一件很有趣的事情,你知道是什麼嗎]克里斯顯然是在等其他的電話,說[我不想知道]這個答案不影響凱爾繼續說下去的心情[我把我虛擬系統的氣溫調低以後,很多哺乳類動物的數量就變得很少很少,不過當我把溫度拉回和原來一樣的時候,哺乳類動物的數量反而變得比以前還多,反而是不受影響溫度的爬蟲類動物數量會減少,你不覺得很奇怪嗎]這同時克里斯家的門鈴響了,開了門之後門口出現一個身材很好的…不算美女,但是表情非常開朗的女孩子,這女孩好像非常熟悉克里斯的房間,進了門什麼話不說就坐在克里斯的書桌前用起他的電腦.[你有沒有在聽我講啊]電話裡的凱爾有點不耐煩,克里斯優雅的在那女孩臉頰親了一下,有點心虛的回答說[沒有,只是這讓我想到了冰河時期的故事,不知道為什麼,你說人類怎樣]凱爾似乎沒有注意到克里斯房間裡有別人,興奮的繼續說[就是我想要製造一個類似人類的object,你覺得人類和其他哺乳類有什麼不同?]克里斯不經意的撥弄著那女孩的頭髮,回答說[人類可以記錄,傳承他們的經驗;人類有語言;人類有思想]電話的對面突然傳來歡呼聲,凱爾高興得說[我不是跟你說有些動物可以互相傳送簡單的訊息嗎,我可以把傳送訊息的這個function做得複雜一點,而且讓他們可以把溝通的內容寫成一個txt file,也就是文件格式檔案,至於讓object有獨立思考能力嘛,這個我沒辦法]克里斯似乎想要立刻終止這個通話,不過還是忍著說[那就去試試看吧!!]這句話才剛說完,就只聽到電話的嘟嘟聲.[又是那個怪胎啊]那女孩邊打著電腦邊說.克里斯無奈的說[凱爾又在講他的那個生態系統].女孩子接著說[那傢伙書都不唸,人際關係也差,就只會每天想這種無聊的東西].這時克里斯從後面抱著那女孩,在他耳邊嚴肅的說[我們學MBA的人,永遠永遠不能輕視任何人的夢想] 凱爾創造的第一個屬於人類class的object叫做夏娃。 這個object在凱爾啟動後的五分鐘之後,就開始生出出三個物件: 分別叫做B, W, 和Y。 並且放置在虛擬世界的三個區域之中。 因為凱爾把這種物件在生物鏈裡的的地位排在中間的地位,這新物件雖然不至於沒能力殺掉其他物件而取得系統資源,不過也有很多其他種類的物件有能力, 所以這個新物件一開始並沒有成長的如凱爾的水準。 不過當這object開始生殖後的一個小時, 可怕的事情發生了。 他發現他的新物件數量突然比標準的大了不少。 他花了四個小時debug候才發現,之所以這個物件成長速度之所以會增加這麼快,是因為這種新物件有互相溝通訊息, 還有可以把訊息寫成小型的文件檔案的能力。 因為這種的特殊能力,讓這種新的物件有可以累積經驗去消滅各種其他類型的生物物件,和更有效率運用作業系統,進而取得系統資源的能力。 這種新的能力這些訊息都是用系統的預設語言 英文 裡面記載的不只是如何生存,新物件間如何互相約束的規定。凱爾還看看到有一些文件有對凱爾的存在的敘述,不過,可愛的是,這個文件把凱爾敘述成很多的分身,像作業系統凱爾,記憶體凱爾,硬碟凱爾等等。感覺上這些新的物件對凱爾的認識只限於凱爾的電腦。平心而論,事實上這些物件也只能透過這台電腦來了解凱爾。 這新物件有可愛的也有可怕的地方, 也因為這種能力。 這種新的物件可以不受到凱爾的生物數量平衡式的約束。並且無限制的成長。雖然這個新的物件的成長速度很慢,可是總會有一天,這些新物件的數量會威脅到凱爾的電腦,更甚者,這些新物件的會因為尋求更多硬碟或是記憶體資源而威脅到凱爾的作業系統。 凱爾突然想到他唸生命科學系的好友告訴他說,人體每一個細胞都會依照一定的規律而固定新陳代謝。就像要是手指受傷,細胞會自動把他補全成原來的樣子。不過細胞不會一直增長讓手指大到跟球一樣。不過癌細胞就不一樣了,癌細胞的成長速度很快。而且不會停止成長,並且會侵蝕其他的正常細胞。這個觀念讓凱爾想要對他的新物件想要取一個類似癌細胞的名字。所以凱爾叫這個物件叫做cancer object 簡稱CO - 希歐。雖然這不是什麼好聽的名字,但是凱爾還是對他的這個新物件很有興趣,想要花時間去了解這些希歐。 想辦法和希歐溝通,這是凱爾自認的唯一解決這個問題的方法。讓希歐們認識凱爾,然後聽從凱爾的建議,節制希歐們自己的數量成長速度。 凌晨兩點, 克理斯床頭的電話突然大響. 接電話的是一個女孩子, ‘hello’ 對方一聽到是女孩子的聲音頓了一下,不過馬上回神問說’小敏嗎,我想找克理斯聽電話’. 電話的另外一端是凱爾,一邊焦急著看著希歐們越來越不正常的增植.一面聽著電話另外一端女人喧鬧的聲音”…你給我解釋清楚你跟小敏到底是怎麼樣的關係,不然我跟你沒完沒了…”在很大的甩門聲音後的三十秒,凱爾終於聽到他摯友克理斯的聲音出現在電話上 . ‘凱爾,你又有什麼問題了’ 凱爾高興的回答’嗨,克理斯,你怎麼知道是我’ ‘我克理斯在這個世界上沒什麼仇人,不過朋友裡面能笨到把我害死的人我只認識一個, 就是你. 讓我告訴你,你如果今天以後你敢跟小敏講我今天晚上跟別的女人睡, 我保證你會死的比我還慘’. 凱爾大概聽出來克理斯的憤怒了‘我真的很抱歉打擾你的運動時間,不過我現在有個嚴重的問題’,之後凱爾就一五一十的把希歐的事情講給克理斯聽. 克理斯長嘆了一聲後說“凱爾我跟你講,不要再沉迷在電腦裡面,回到現實世界吧. 你這樣沉迷下去,死的不是只有你而已. 聽我的話,把你整個生態系統delete掉就沒事了”. 凱爾聽了緊張的說, ‘不過我真的很喜歡希歐,我不相信我可以重新創造一個和人類那麼類似的java物件,和我跟你講的一樣,我真的還想留住希歐,你還有別的方法嗎’?克理斯聽了不耐煩的說‘你沒聽過諾亞方舟的故事嗎,你就想辦法找到一隻正常而且會聽你話的希歐,帶著其他生物物件上船,把船上的所有物件存起來,剩的全部殺掉不就得了,我要去洗澡睡覺了,明天十點以前別再打過來,還有今天的事情不准跟小敏講’. 凱爾聽到以後突然茅塞頓開,高興的說”凱爾,謝謝,你真是一言驚醒夢中人,你果然是我最好的…’話還沒說完,只聽到電話被切掉的嘟嘟音,和凱爾在凌晨那心臟興奮的跳動的聲音. 他高興的翻出貝多芬的第三號交響曲英雄, 享受第一樂章那種等待成功的喜悅.
這時候一個好漂亮的法國女孩跟克里斯打招呼,打斷了兩個人的對話。經過一陣寒喧之後,克里斯禮貌性的介紹凱爾給那女孩。女孩好奇的問凱爾在喝什麼。克里斯馬上插上嘴說”這個叫做白色情深,是伏特加加上杏仁和一些其他的酒,味道很特別,我幫你點一杯?”女孩客氣的笑著說”不用了,只是覺得你的朋友都和你一樣有品味”。
|