2008/08/25

UML物件裏的Generalization

在 UML 裏,有一種關係叫 "Generalization"。一般而言,我們把這個關係當作物件「繼承」的表達。不過,在此之前,一直對 "Generalization" 圖示的方向性有疑惑:為什麼他的方向是從 "子類別" 指向 "父類別" 呢!?

很早以前,大概從高中剛始,自己對哲學就一直很有興趣,還曾一度想以哲學系為目標;只是因為自己對科學"更"有興趣 (也有未來出路的考量),所以選了電子系。然而,自己對哲學的興趣一直沒有消失,所以大概從三年前開始,跑去洪建全基金會上傳佩榮教授的「西洋哲學」課程。這個課程,對我有很大的幫助;其幫助不是在人生觀或人生態度的建立,而是在「思考過程」的進步。是的,我特別強調了「思考過程」這個概念,這個概念表意著一個「活動」,而這個活動體現了我的「存在」...

上面那一段其實是廢話。我在學哲學的時間,跟我在學 UML 的時間差不多剛好重疊;這也讓我在學 UML & OO 時,有了一些與他人不同的思考視野 (也不知道是好還是不好)。針對本文一開頭的問題來說,一般多數的"華語"人士,大概都是這麼解釋:「祖先不知道子孫的存在,可是子孫卻知道祖先的存在...」(此段文句取自 "OCUP UML初級認證攻略";另外,我大學時的 C++ 老師也是這麼解釋)。

一般而言,這樣說應該也沒錯,而且,知道怎麼用就好了,不是嗎?? 不過呢,在我上過哲學課程之後,我卻對 "Generalization" 有了些不同的看法。引述一段黑格爾 (Georg Hegel) 的話:「An idea is always a generalization, and generalization is a property of thinking. To generalize means to think. 」。我想,應該很少人知道 "Generalization" 在哲學領域裏所代表的意思 (大概也沒人像我這麼無聊吧!?)。這裏留下 Wiki 的連結:Wiki百科 - Generalization

我想說的是,正因為 UML 想表達的是 "Generalization" 而不再是 "Inheritance",所以箭頭方向會從子類別指向父類別;從 "實體(implementation)" "抽出(generalize)" "概念(notion)"。而這樣也更能表達英美實證主義哲學,其 "由實體歸納出概念" 的思考方向...(上面這一段文句,我還不知道該怎麼描述比較好...)。好啦,我的意思就是,"Generalization"的方向,其實是有其哲學上的意涵 - 當然,是不是真的有這種意涵,我也不知道 - 反正,知道怎麼用就好了啦~~~~

不過,我也想知道,一開始的時候,為什麼是用 "Inheritance" !!?? 個人的猜測,一開始時候,也就是 "Inheritance" 的時代,物件導向的 "學術概念" 還沒很完備。一直到 Java 時代,也差不多是 "Generalization" 時代,物件導向概念與方法才算比較成熟,所以才把 "Inheritance" 換成了 "Generalization"。當然,直到今日,這些東東仍然不斷在演進,就像 UML 的版本仍不斷在更新。未來,這些概念的用詞,是否會再改變,我想答案是肯定的吧!?

PS:我個人其實不怎麼喜歡 "知道怎麼用就好了" 這一段話,這樣的態度,某種程度上的阻礙了學術的進步。不過,那是另一個issue了...


2008/08/12

OCUP-UML 初級認證

一直以來,對於認證考試都有一種...微妙的心裡障礙。應該是一種恐懼感,亦或是一種不信認,還是只是讓自己發現自己原來不過爾爾的酸葡萄!!?? 用UML做系統分析其實也有好幾年了,一直很希望能將這個語言推廣出去,成為一個組織團體合作時的共有溝通橋樑。是呀,共有的溝通橋樑,有誰認真想過一群人在一起合作開發系統時,居然還需要有-除了母語之外的-其他的語言作為共有的溝通橋樑!? 其實,我也搞不懂,長官們是否有認真想過這個問題,是否也會覺得這很重要? 或是他們只是覺得這很重要卻又不是這麼重要。很重要,最好有人去 Survey;不是那麼重要,不值得讓組織願意動用資源去投資...所以最好有人可以只利用自己的時間 (不佔用組織資源,或只佔用一小點點組織資源) 的情形下,將這個好像很重要但又好像不是重要到值得動用組織資源去投資的東西推廣出去... 考認證,那是另一個層次的問題,也就是說,組織是怎麼個樣我已不想管了。雖然自己真的很討厭考試,還是得強迫自己屈服,總是得為未來在台灣這個文憑主義的社會中找新出路而打算。考試考上了~~YA~~公司快倒了~~哦YAYA~~

2008/05/22

Espresso & OpenMind

因為喜歡喝咖啡,所以在辦公室放了一台 Espresso 咖啡機,每天泡咖啡。之前舊的咖啡機,是很便宜+簡單的蒸汽式咖啡機。這種咖啡機的壓力不足以煮出好的 Espresso,但打打奶泡卻還夠力。讓蒸汽管依著杯子邊緣、讓管口浸在奶平面下一點點、讓蒸汽沿著杯子邊緣衝入奶水中、讓奶水旋轉、讓奶泡混合均勻。為何要讓蒸汽管依著杯子邊緣呢? 主要"好像"是為了讓奶泡旋轉,而且看別人都也是這樣做...就沒去想太多了...

後來換了一台幫浦咖啡機 (la Pavoni),這台咖啡機的壓力夠,可以煮出不錯的 Espresso & Cream,可是打奶泡的蒸汽之強度卻稍有不足 (果然是便宜貨),用之前的奶泡打法,總是無法讓奶泡混合均勻。一天,一位同事問,"為什麼打奶泡時蒸汽管要靠著杯子邊緣"...嗯,好問題 (只要是那種...讓我發現那是平常的我所不會去想到的問題,通常我就當它是一種好問題)。既然 "用這台機器打不好奶泡" 是個我一直無法解決的瓶頸,何妨死馬當活馬醫。試著把管子往中間移動,哇塞,本來轉不大動的牛奶居然旋轉度變強了,奶泡的的混合度也變得比較均勻了... 說的也是,因為力矩變小了嘛!!

這篇文章不是要談論怎麼泡杯好咖啡,而是希望來思考一下:當我們遇到解不開的問題時,是不是只是因為我們習慣性的讓問題的根源總是被我們狹隘的視野給過濾掉 - 即便"他"其實一直在你面前遊盪!? 因為過去的成功經驗,所養成的做事與思考的習慣,是不是就是讓問題的解答難以浮現的死角暗箱!? (參考一篇有趣的網路文章"熟練的無能")

" 跳脫習慣" 與 "OpenMind" 其實有著類似的概念。"習慣"是一種流程的慣性養成,雖然我們會把習慣分成"好"跟"壞"的,但習慣的養成,原本就是因為實際經驗的"非失敗性" - 不管是"好"習慣還是"壞"習慣 - 也就是說,至少,在習慣養成中的當下,是"快樂"的。先不去探討有關人類 "習慣" 一詞的論述,回到前一段文章裏的一句話 "過去的成功經驗,所養成的做事與思考的習慣",卻反而讓我們在遇到環境或事物變遷時,創造了自身未來發展的陷阱與障礙。

OpenMind - 打開心胸,第一件事:別再以為過去所以為是對的事就是對的 (笛卡爾 - 人,終其一生,至少要有一次,懷疑所有可以被懷疑的事)......話是這麼說啦,這可不是一件容易的事。在忙碌的工作中、在時程的壓力下,要能停下來、慢下來,重新省視自己 (群體、公司、組織) 每一項過程裏的每一個平常不會注意到的習慣 (包括行為與思考上的),這可是要有一種..."豁出去"的決心 (列出你願意付出的代價),才有可能辦到。所以呢,大多數的情形常常是,把"危機就是轉機"掛在嘴邊,卻在"不怎麼願意付出什麼了不起的代價"的心態下,讓"危機"的黑洞愈挖愈深,而"轉機"的大餅卻是愈看愈虛幻......

回頭看看,我們每次的反省檢討 - 不論是自身的或是團體的 - 所討論的反省項目裏 (如果我們有反省的話),是不是有某一些"理由",總是常常出現在"遇到的問題之原因"的清單上...該是停下來的時候了!!

2008/04/20

詐騙電話

我其實常常接到詐騙電話,有時甚至喜歡跟對方亂哈啦 (反正花他們的電話費)。不過,今天接到的這一通有點不一樣,事實上,我還一度以為他們是真的,情形如下:

我先接到一通有號碼顯示的電話 (看到有電話號碼顯示,先安心一半...),對方說他是北縣警官,前一陣子破獲一個詐騙集團,因為有發現我的偽照證件與個人資料,所以打電話給我要跟我釐清案情,這第一通電話之所以讓我覺得可能是真的,是因為大部份的時間都是對方在努力說明案情,對方也有問我一些資訊,例如我有哪些銀行帳戶...但因為對方沒有要求進一步的詳細資訊,加上我一時好奇心的作祟,居然一時笨笨的真的告訴人家我有哪幾家銀行帳戶。第一通電話結束前,對方還交代,這是偵辦中的案子,請不要對外公開。另外,他們會把資料傳給檢查官,檢查官會再打電話給我。直到這裏,我還只是半信半疑,直到第二通電話進來...

沒多久,第二通電話就來了 (真有效率)。這通電話是保密號碼,這時我才開始覺得怪怪,對方說他是書記官,要向我詢問問題,以釐清疑點。然而,對方卻只是很努力的圍著我的銀行帳戶資訊打轉,而我就用裝迷糊的方法說我人不在家,所以無法立即提供這些資訊。對方還要我趕快回家:「我們希望在第一時間排除你的涉案關係,如果你無法在第一時間釐清,我就必需發傳票給你,到時你得自己準備資料出庭應詢...」。天啊,我還真是豬罐頭,我一直到這個時候才確定我遇到了詐騙電話。人,有時候太好奇,還真的是很危險。我說:「不然你告訴你的辦公室在哪裏,我直接收收資料去你辦公室...」,然後對方就掛我電話...

不管是警方辦案或是檢查官偵訊,都不會用電話方式做詢問,一定會用正式的郵寄通知。這個我很早就知道了,卻還是因為自己的好奇心而掉入陷井,我想我真的是太大意了。最讓我悔恨的,是我不小心報出了我的身份證字號。第二通電話,那位自稱是書記官的傢伙,跟我核對我的個人資料,而我居然不小心不小心去糾正身份證號碼的錯誤 (我猜他有我一些簡單基本資料,但沒有身份證字號,結果我卻主動奉上),我想我這下麻煩了...

這是我第一次打防詐騙專案 165,服務人員跟我說,第一通電話所顯示的電話號碼是竄改過的號碼。這還是我第一次知道,原來電話號碼顯示是可以被竄改的。只是因為我是接完詐騙電話立刻打給詐騙專線,所以他們有機會去追蹤來源~~~唉~~~加油吧~~~