Monday, July 30, 2007

The furture of Search - Start with "What is search and what is not"

今天 (2007/07/30)開始,AltSearchEngine連續三天發表一系列的搜索引擎概念介紹的文章。第一天,也就是今天,將要談「搜尋引擎什麼?」,明天則是談「搜尋引擎不是什麼東西?」,第三天將要談『什麼是 ASE(Alternative Search Engine)』。

這三篇文章不是出自同一人之手,而是由 Richard MacManus, Nitin Karandikar 和 Kaila Colbin 分別撰寫的,Kalia 在他的文章裡說,這三篇文章都是獨立撰寫,完全是撰文者個人的觀察與意見,但也正因為如此,這系列的文章才耐人尋味。
You should also know that Nitin, Charles and I wrote our contributions independently of each other, so our claims may be blatantly contradictoryan excellent opportunity to discuss our different perspectives.
有不同的意見,才有火花,才有進步的空間,很好!首先,談下一代的搜尋引擎之前,先問搜尋引擎究竟是什麼東西?這是打頭陣的第一篇...




今天的簡介裡,作者列出了他認為未來搜尋引擎應該有的基本功能 (Essential Features):
AltSearchEngine 編輯的百大替代搜尋引擎列表(July,2007)(更新:八月份名單出來了)裡有不少很有看頭的新技術,結束這一系列的基本介紹後,拿這個名單和這三天的介紹互相參照,一定很有意思。

總而言之, Stay tuned , buddy....

Updated: Aug 02,2007

Creative Approach 有什麼不同 (2) - 談談數學歸納法

之前我曾談過Udi Manber 寫作的演算法書籍 Introduction to Algorithms: Creative Approach花了一整章介紹數學歸納法,作者設計這本書的思路,是很值得思索和品味的。

歸納還是演繹

首先我們要搞清楚,數學歸納法,不是哲學上所講的歸納推理( inductive reasoning) ,反而比較接近哲學領域所講的演繹 (deduction)推理。所謂的歸納推理,是基於對特定目標觀察的結果,把「性質」或「關係」類推至類型,或者是基於對反覆現象的觀察,所推理出來的規律或公式。歸納推理的結論只是有較大的機率為真,但不代表一定為真

而演繹推理則是從已知事實為前提,必然得出的結論,如果前提為真,則結論必然為真。數學歸納法是基於一組已知的前提,推演出一個必然為真的結論,所以這個證明方法的精神是 deductive reasosing ,不是 inductive reasoning。

數學歸納法的基本敘述

Udi Manber 在他的裡第二章末,參考文獻與進階讀物一節裡提到,數學歸納法是由 Francesco Maurolico 所發展出來的,事實上,數學歸納法的基礎可以上溯至更早的希臘時代的歐幾里德Euclid),維基百科可以找到數學歸納法的歷史介紹,簡明扼要但資料豐富,有意者可自行深入研究。

最常見的數學歸納法敘述,是說一個關於自然數的命題 P,當這個命題符合以下兩個條件時,則這個命題對自然數恆真:

  • P(0) 成立 (有的情況是講P(1))
  • 當 P(n) 成立,則 P(n+1) 也成立

或者我們用英文的敘述(對於看不慣中文翻譯的人來說,用符號和英文反而更親切,不是嗎?):

  • The basis: P(0) is true.
  • The inductive step: If p(n) holds, then P( n + 1) holds too.

換句話說,當上面兩個條件成立,P(n) is true for all natual numbers 。

用矛盾法(contradiction)證明數學歸納法的正確性

從高中到大學,我們學習數學歸納法,都是被動的背誦數學歸納法的證明手法,鮮少在課堂上探討歸數學納法可以證明命題敘述對在自然數這個集合裡一定是正確的。其實我們可以用矛盾(又稱歸謬證明法 - Proof by contradiction)法來驗證證明這個方法的正確性。

我們的前提如下:

  1. P(0)
  2. For all n ≥ 0, P(n) ⇒ P(n + 1)

然後我們現在要證明對所有大於零的自然數,P 這個命題恆真,就是
For all m ≥ 0, P(m) is true ...................................... (3)

接下來就是證明的核心,假設 (3)是錯誤的,那我們一定可以找到一個最小的數 m' 使得 P(m') 不成立,我們現在要證明這個假設是有衝突的,所以 (3) 不可能是錯的,(3)必須是真的。

首先, m' 不可能是 0,因為前提 (1) 已經告訴我們 P(0)必須成立,所以這個 m' 如果存在,一定大於 0。當我們找到這個所謂的 m' ,我們知道前提 P(m' - 1) 是成立的,因為 m' 是最小的令命題 P 不成立的數字,但是前提(2)告訴我們,P(m'-1+1)=P(m) 這個敘述必必須為真。這和我們的假設是衝突的,所以不可能找到令 (3)不成立的數字m'。換言之,P(x)這個敘述對於所有自然數都成立,我們已經證明數學歸納法在前提確立的狀況下,是打不破的。

皮阿諾公設(Peano's Axioms)

用今日數學的術語來說,數學歸納法就是皮阿諾公設(Peano's Axioms)中的第五公設。所謂公設(或稱公理 axiom),就是在某些學門中不需要證明,但卻必須被承認的敘述或命題,有的書籍翻譯為公理。公理是一門學問的基礎,這門學科的所有理論、定理,必然可以由這些最基礎的公理推演而來,如果基礎不被承認,這門學科也就無從存在,公設的重要性由此可見。

義大利數學家 Giuseppe Peano (皮阿諾) 在 1889 年以拉丁文寫作一本小冊子 Arithmetices principia, nova methodo exposita ( The principles of arithmetic, presented by a new method ),這本書將自然數的性質抽象化得到一組公設。希望藉著這組公設,透過邏輯的推演,可以演繹出自然數的所有性質。 皮阿諾把每一個自然數的下一個稱為這數的「後繼者」(successor),用後繼者的說法, 這組皮阿諾公設可以寫成下面的形式(括弧裡是用符號的寫法,其中 n+ 表示自然數 n 的後繼者):

  1. 0是一個自然數。
  2. 若x是一個自然數,則另有一個自然數X'(緊隨X之後)。X'稱為X的直接繼數。
  3. 0不是任何數的後繼者
  4. 對任何自然數X與y,若X'=Y',則X=Y。
  5. [歸納原理]若P是一個性質(Property),並且(i)0其有性質P;(ii)若任何自然數X具有性質P:則X'具有性質P,則所有自然數其有性質P。

數學歸納法不同的面貌

標準的數學歸納法證明,可以分為三個部分

  • The Base Case (in the domino analogy, this shows the first domino will fall)
  • The Induction Hypothesis (in the domino analogy, we assume that a particular domino will fall)
  • The Inductive Step (in the domino analogy, we prove that the domino we assume will fall will cause the next domino to fall)

只要遵循以上三部曲的建構方式,通常都能順利找到證明的思路,發展出 induction step 來證明所欲證明的標的。事實上,在作數學歸納法證明時,有許多技巧上的變化,比如說:

☆(1)先證明n=1,n=2時命題成立;

 (2)假設n=k-1,n=k-2的時候命題成立

 (3)證明在此情形下,n=k時命題也成立。

或者像這樣

☆(1)先證明n=1到m時命題成立;

 (2)假設n=k的時候命題成立

 (3)證明在此情形下,n=k+m時命題也成立。

數學歸納法,並不是只有一個面貌,經過長久的發展,數學歸納法已經發展出許多的變異模式,適用於不同的場合與目的,甚至有些數學家開發出將數學歸納法延伸至自然數以外領域的模型出來。以最精簡的符號來表達,我們一般常見的數學歸納法的變化形式可能包括以下幾種情形:

Standard Formulation

  • The basis: P(0) is true.
  • Induction hypothesis: assume P(n=m) holds.
  • The inductive step: If p(m) holds, show that P( m + 1) holds too.

Strong Induction

  • The basis: P(0) is true.
  • Induction hypothesis: assume for all n <= m, P(n) holds.
  • The inductive step: If p(n) holds, show that P( n + 1) holds too.

Reverse Induction

  • P(M) is true for some M
  • If P(n=k+1) holds, show that the property holds for n = k.

依照上述證明方式,我們得到結論: The property holds for all values n <= M

Transfinite Induction

Transfinite induction 一般而言是應用在 well-ordered set 上,通常只有真正念數學的人,才會關心這個咚咚吧? 根據 PlanetMath 的說明, Transfinite induction 的定義如下:

證明的陷阱,切記!切記!

前輩數學家華羅庚曾經講過一個故事 :一位買主買了一隻公雞回家。第一天,餵公雞一把米;第二天,又餵公雞一把米;第三天,還是餵公雞一把米。連續十天,每天都餵給公雞一把米。公雞就這十天的經驗,下了一個結論說:每天一定有一把米可吃。但是就在得出這個結論後不久,家裏來了一位客人,公雞就被宰殺成為盤中飧請客人了(這個故事可以在昌爸工作坊找到)。

有人建議把數學歸納法想像成骨牌效應(falling dominos ),一張骨牌倒下來,下一張骨牌接著倒下去,就這麼一張一張倒下去,用遠不會停。問題就在這邊,我們必須確認一張骨牌一定接著一張,才能確保數學歸納法的正確與適用。

換句話說, P(n) 成立,不代表 P(n+1) 一定成立,千萬不要認為理所當然,我們的任務是確認 P(n) ⇒ P(n + 1),不是默認 P(n) ⇒ P(n + 1)。

為什麼寫

原本只是打算在複習演算法時,順手記錄看書時的想法,但是在唸時,看到第二章,在回顧自己學習數學歸納法的過程時,冒出許多想法,所以就順手把找到的東西發展出一篇完整的東西。

Sunday, July 29, 2007

有一種感覺

一種感覺,會在心中無預警地出現,來去無時,無以名之....

『儘管被真誠的朋友包圍著,儘管妻子就在身旁,但總是感到孤獨。』

『人的生命現象真是奇特,任何安慰,任何溫情,任何美麗的故事都無法抹掉籠罩於心中的孤獨感。而且愈想抹掉它,它就愈顯得沉重。常常沉重得喘不過氣。』

『孤獨真會使人頹廢。也許頹廢真是對獨孤進行抗爭的形式。』

有些人,有的時候,也許會有這樣的感覺。

本來,一切都顯得如此美好:在一個陽光溫煦的春天的中午,我們坐在咖啡館寬大明亮的窗前。生活的不同側面都幾乎是一帆風順:我們的事業正在按照設想進入軌道,下午的工作會議上要提出的報告剛剛完成....

.....

在這個春天的中午,我們懶洋洋地沈浸在一種心情中,也許是幸福,也許是滿足,至少,一切都顯得如此美好。

然後彷彿電線突然短路一樣,沒有預警,沒有醞釀。我們聽到自己的內心深處,就那麼卡噠一聲,突然,一種惶恐慢慢地在心中由點滴凝聚 ...

總是平白無故的 難過起來 然而大夥都在

笑話正是精彩 怎麼好意思 一個人走開

不是沒有想過 隨便談個戀愛

一天又過一天 三十歲就快來

往後的日子 怎麼對自己交代

..........

這一次我的心情 不高不低 不好不壞

Friday, July 27, 2007

The Future of Search - Google Edition

MIT Technology Review 是一本深度、廣度兼具,介紹科技新知的雜誌,最近這本雜誌訪問 Google 的研發部門主管(Director, Google Reseach)Peter Norvig ,雜誌網站在今(2007)年7月份發表了訪問的內容。看了這篇訪談,讓我想起去年初(2006年2月)的一則科技新聞...

背景回顧

去年二月在費城舉行的 Wharton Technology Conference 2006 中,三大搜尋引擎巨頭 - Google, MSN, Yahoo - 產品主管齊聚,各自陳述對未來搜尋引擎的看法,ZDnet UK 在會後發表了一篇新聞 Google and MSN disagree on future of search ,精簡扼要的將三個公司主管的發言排列比較,讓讀者領略這三家公司各自不同的戰略。簡單地說,MSN 認為使用者應該學習(換句話說就是被教育)改變搜尋的習慣,因為 MSN 的未來的策略是精進並改變搜尋引擎的介面,讓使用者和搜尋引擎有更多、更有益的互動,讓搜索更精準、更有用。Yahoo 則押寶在社群這個方向,認為搜尋的精度和準度,要靠 social search 的策略方向來達成。Google 則一派邪惡科技帝國模樣,認為重點是底層(underlying)的技術,以研發能力取勝。

部落客 Geeking with Greg 引用 ZDNet 的報導,將這三家公司的異同,作了畫龍點睛的陳述 Different Version of futire of search

MSN (and, until recently, A9) wants to give you more powerful tools. Yahoo wants the community of users to help improve search. Google wants computers to do all the work to get you what you need.

Peter Norvig 在訪談中,明確的表示, Google Research 的「核心研究課題」就是搜尋技術廣告,還有使用者如何和搜尋引擎互動,以此三者為軸心,開展的各項研究,目的還是在於 help us serve them better。身為未來所寄的研發部門主管,從他口裡透露 Google 對於搜尋引擎技術的立場和進行中專案的描述,是很令人期待的,雖然訪問的篇幅不算很長,但是畢竟我不是專業譯者,逐字翻譯對我來說實在太麻煩了,所以我試著將內容消化,並加上一點點自己的經驗和想法,所以這份摘要不能算是真正的翻譯(逐字翻譯在法律上也站不住腳,唔,又是一個偷懶的好藉口):

機器翻譯和語音辨識

根據 Peter 的說法,目前獲得最多財力和人力支援的專案是機器翻譯(machine translation)和語音技術(speech)的案子,Peter 說他並不認為這兩個技術對於視訊(video)資料的搜尋有很大幫助,因為視訊的搜尋還不是主流;但是他認為語音辨識是對於提供電話介面(用電話作搜尋介面)是很重要的技術,而且改善語音技術能夠對對聲音文件作更好的索引(indexing audio files)video search 的貢獻。

根據他的說法,在瞭解現有市場上可用技術後,他們決定自己開發相關技術,而且他認為以 Google 的資源和能力,一定可以對這個領域做出貢獻(他還用 advance 這個字眼)。 有一點特別值得一提,他說 data trains algorithms over time,這點讓我特別有感觸。作研究的人都知道,擁有 data 的可貴,能掌握資料源,就有發表論文的機會,不管是作什麼題目都好;沒有 data ,完全沒戲唱。

Peeter Norvig 本人在另外一次演講時,講了另外一段話,他認為 recommender 演算法根本沒有什麼好比較的,不管演算法再怎麼不入流,只要擁有更多資料,自然可以把演算法教育 (trains)成人,打敗原本的 winner 。

Rather than argue about whether this algorithm is better than that algorithm, all you have to do is get ten times more training data. And now all of a sudden, the worst algorithm ... is performing better than the best algorithm on less training data.

Worry about the data first before you worry about the algorithm.

總之,如果要作研究,擁有大量的資料,和鉅額的資本支出一樣重要。換個角度說,像谷歌這樣家大業大的富家翁,最令人羨慕的不是龐大的現金預算,而是可以使用的軟、硬體資源和最寶貴的資料(弔詭的是,這些東西是靠金錢堆積出來的)。

問題是什麼

Peter 認為,當我們在使用搜尋服務時,會面對很嚴重的 不均衡狀態(imbalance),我們可能輸入僅有兩、三個字構成的搜尋字組,但是有限的螢幕顯示空間,讓我們無法一次提供足夠多的有效資訊。另外一個問題,也值得關注,使用者需要更多的參與,才能獲得較佳的搜尋結果。只是輸入 map 或 coffee 這樣的字眼,實在很難判斷使用者要什麼,所以使用者的積極參與,對於問題的改善是正面的(這裡有點 MSN 產品經理說法的味道)。

當 TR(Technology Review) 詢問,此刻目前搜尋領域比較突出的問題是什麼? Peter 的回應是這樣的:

一般而言,主要有兩個方面的問題。 第一個是如何更佳地瞭解用戶需求,另一個則是瞭解文件內容的「意義」,不管是網頁還是視訊資料。用戶輸入資料之後,我們把輸入的詞組當作一個個的獨立字眼(individual words)來處理,但是用戶究竟是什麼意思,並不是那麼容易理解。

自然語言搜尋技術

既然如此,TR 當然想瞭解 Google 在自然語言(natual language)處理技術上的進展。如果用戶可以輸入一個完整的句子,不是獨立的若干關鍵字,似乎聽起來很迷人,很 fantatic ,很 promising ,不是嗎?

Peter 認為自然語言技術所指涉的範圍很廣,首先,Google 在瞭解同義字方面,下了許多功夫。比如說, San Franscisco 這兩個字必須是成對出現,不能單獨成立的;但是 Las Vegas 和 Vegas 雖然是兩個不同的字組,但卻是同一件事;再舉個相反的例子, New York 和 York 則是完全不同的兩回事。Google 在這方面下了不少功夫,也有相當的進展。

另外一個自然語言領域的技術,是將較長的查詢自串(longer query)分解成較小的元件(omponents),最理想的境界當然是用戶輸入一個完整的句子,處理後得到的答案也是個完整的句子。但是 Google 在這方面,沒有太多著力,我們可以處理一部份問題,像日本的人口(population of Japan)這樣的問題,我們可以給出不壞的結果。但是大部分的情況,這未必是使用者希望的,他們不一定希望在搜尋時,每個問題都要寫一個完整的句子。

至於 TR 詢問關於人工智慧(AI)技術運用的問題,Peter 則回應,人工智慧技術大部分用於解決沒有明確解答的問題,雖然人工智慧技術不能解決所有問題,但是谷歌的確用了許多人工智慧技術來開發產品。

雖然 Peter 在自然語言搜尋上,說得很保守,但並不代表別的研究機構也如此保守,目前運作中的 Answer.com 允許用戶以簡單的英文句子提出搜尋,有興趣的人可以自己是玩玩看。如果問 Who is the President of Taiwan 詢問 Answer.com ,跑出來的答案是總統府的網站。

Technology Review 近日介紹了一家公司- 的 Powerset, Inc., 以授權方式取得著名的 Palo Alto Research Center (PARC) 過去30年所累積技術的自然語言技術,將推出的自然語言搜尋引擎。這家公司的老總說,雖然自然語言技術近日沒有重大的突破(breakthrough), 但 Powerset 將整合許多PARC 的技術,推出的產品,一定會讓大家耳目一新云云。

除了上面提到的商業運轉的例子,我在一個介紹 Data Mining 技術的部落格,看到 Quanta (Beta) 的介紹,這應該是個學術界的專案,進入網站之後,畫面樸素得很誇張,沒有說明,沒有提示,版權宣示的地方,只留了一個北京清華大學的電子郵件地址,從畫面很難看出這是什麼回事。只有畫面下方兩個超連結─搜尋範例和搜尋歷史,透露這個網站可能是搜索引擎的線索。搜尋範例有許多比簡單句還複雜一點的英文句子,比如說「Who was the first person to run the mile in less than four minutes?」,「Who won the Oscar for best actor in 1970??」,看起來似乎很厲害的樣子。

我仍然用 Who is the President of Taiwan 考驗 Quanta,這個「黑箱」給出的答案是陳水扁三個字的漢語拼音,然後列出了一堆可能解答這個問題的網址。Quanta 的速度非常慢,我猜是在測試某些演算法吧,輸出結果會列出某個方法的 scoring ,然後是兩欄式的比較列表,畫面配置不甚美觀。雖然 Quanta 不是一個商業化的作品,不過從輸出結果的品質(準確度)來看,或許是個值得期待的東西吧。


Thursday, July 26, 2007

誰來教我...

O..F..Blog是一群大陸地區有傳媒背景的博客們串連成的部落格,裡面的文章品質不錯,不時抽空逛逛,有不少樂趣。前幾天,看到一篇鄭治我教徐靜蕾「蒙太奇」(註),裡面提到不同產業背景的人們,在同一個組織裡,不同的行事與管理風格。

我待過一家Startup,公司大老板有一個「擰毛巾」理論,為了打造國內第一新媒體,招集來自廣電的傳媒人、來自微軟的軟件開發人員、來自網通的運營人員,打造了一個超豪華團隊,企圖把這「三種人」"擰」在一起、以期發生「核聚變」反應。

但這之間距離實在太過遙遠,其中一種距離便是網絡生存方式與紙張公文方式的距離。軟件開發人員和網絡運營人員在工作協調中,嘴邊常說「給我一個Email」、「會後我Mail給你」;而傳媒人則打印出公文,由秘書、或由當事人親自督促各個環節審閱公文,並要求親筆簽署意見。

那時,讀到傳媒人打印出來的、往往是汪洋恣肆的文稿,然後在文件上寫下」已閱,請XX總批示」;而IT人之間Email來、Email去,有了結論卻要打印出來,請文秘們抄送N份給傳媒人……感覺很是奇特,很有頻繁跨越時空的錯覺。


很多年前,我在台灣的媒體公司待過一陣子,這段文字,讓我回想起當時參加主管會議時的情景。傳媒人和資訊人,的確是很不一樣,縱然不論政治,我們也是一個台灣,n 個世界呵!屬於不同世界的人,不僅開會的表現不一樣,搖筆桿、敲鍵盤,也有很大的不同...

開博以來,我訂閱了不少博客的RSS,平常也經常通過新浪、Donews、中華傳媒網、TechWeb 等新聞門戶閱讀其他博客。傳媒人的博文(尤其是較為年長者)往往洋洋灑灑、一不小心就寫得很長、而且很耐讀,IT人的博文一般文字功底差些。不過IT人佔了了解技術的天生優勢,有一種博文技法運用得極為純熟–那就是鏈接的運用。IT人博文往往較為簡短,但注重使用鏈接,鏈接到自己以往的文章,或者是引用的其他博友的文章,或者就是網絡上的新聞,等等。點擊IT人的博文,就仿佛進入了一個信息網絡世界,一不小心就不知道溜達到哪裡去了。而傳媒人的博文往往是發表在紙媒上的文章的轉載,洋洋灑灑但自成體系,參考文獻放在最後、一般不給出鏈接;或者是當下的自己的感觸,自由率性,披露個人世界的一角,講完自己的話就完。


更在意的是,作為一個部落格寫手,我的文章應該是汪洋恣肆(沒有倚馬之才,我辦不到);還是本文連接本文,編織一個訊息網路(好像,我也沒有這個本事)。鄭治教徐靜蕾蒙太奇、意識流、超時空跳躍 ,誰來教我,博文該怎麼寫 ?

註:

徐靜蕾何許人也,北京電影學院表演系畢業,既是才女,也是美女,演過電視劇、電影,也導過電影。得過百花獎最佳女主角獎、金雞獎最佳女配角獎、金雞獎最佳導演處女作獎、華語電影傳媒大獎最佳編劇﹔最佳新導演﹔內地最受歡迎女演員獎、52屆聖-塞巴斯蒂安電影節最佳導演大獎銀貝殼獎。她有自己的部落格,叫做老徐─徐靜蕾最重要的是我沒有看過她的電影... :(

Wednesday, July 25, 2007

[強烈推薦] 寫作論文的參考資料

從決定回到學校唸書之後,就花了許多功夫,從台大椰林批踢踢(ptt.cc)的博、碩士版的精華區挖了不少寶貴資料,有參考書單,也有寶貴的經驗談,著實獲益良多。不過這些版,都不是人氣旺盛的大版,互動性一般,資料的深度,是靠時間積累而成。

那段時間蒐集到的資料多半來自 BBS 零散的文章,或是網路上偶而搜尋到的網頁。每回想要查閱,都要登入 BBS,到精華區和討論區裡搜尋(BBS 搜尋和 Google 搜尋不是同一個檔次的東西,是地球人都知道的),要不就是在搜尋引擎前苦苦思索,當初是用那些關鍵字組合。雖然也曾經試著把找到的文章轉寄到自己的信箱裡,不過面對信箱裡好幾千封信,要找到自己想要的資料,也不是件輕鬆容易的事。雖然一直有把這些零散資料作個系統整理的念頭,但是做事一向不怎麼勤快的我,把這件事兒一擱再擱,拋在腦後,日子久了,就完全忘了有這麼一回事兒。

今年四、五月,又是即將出廠的碩士們,趕工加班的旺季,眼看實驗室裡的年輕學弟、妹們,個個忙得全無方寸,不知所云。才想起無論是渡人渡己,都應該要認真整理這份書單了。前陣子,上網搜尋,發現網友威廉整理的研究方法輿論文寫作書單,比起我自己能作的好的太多。所以我唯一能作的只有認真推薦給實驗室的同儕,我就不要再發明一次輪子了。

研究方法與論文寫作書單
威廉將推薦書單,分為四個單元來介紹,分別是:
  • 築基篇:思想方法
  • 心法篇:研究方法
  • 行動篇:論文架構
  • 模仿篇:例句大全
每本書(或是推薦閱讀的網路資料),威廉都加上自己的心得和閱讀建議,評語簡要而精闢。我自問沒有他的淵博與紮實功底,所以就不要獻醜,也樂得享受他無私奉獻的果實(謝謝)。

仔細審視這份書單後,不免開始貪心起來,如果能加上書目管理的介紹,就更好了。但是我自己在這方面素無研究,較諸研究方法,更加沒有發言權了。我自己的經驗僅止於從學校圖書館網站的線上資源得來的資料,和論文與文獻寫作管理這本書,我曾在學校的書城裡,站著瀏覽過這本書,覺得還有些參考價值,而且有一片光碟,裡面有試用軟體。實驗室的同學有買這本書,評價也還算正面。

這本書介紹了 EndNoteRefworks 兩個軟體(服務),因為敝校和 Refworks 有簽約的緣故,從入學以來,看過圖書館網站的研究資源介紹(電子資源與期刊蒐集資料的方法)之後,就使用Refworks管理論文的參考書目,從沒使用過其他工具。個人還蠻喜歡 Refworks 以 Web 方式管理書目的方式,就像管理網路書籤一般。至於 EndNote 這套軟體, 因為沒有使用經驗,無從評斷,不過從聽過、看過的資料來看,使用者不少,評價也不錯。

吾校校友阿倫,整理了一份資料,說明如何使用 Google Scholar 搭配 Refworks ,輕鬆完成書目管理,頗有參考價值。Refworks 本身提供 Refgrab-It 的 Bookmarklet,使用 Firefox 或 IE 的用戶,安裝這個增益程式之後,管理參考書目的時候,的確方便不少,也值得推薦。

(Google Scholar 的書目管理員設定畫面)
補充:
我發現各大學院校的圖書館網站,都有介紹如何搜尋資料和管理資料的介紹,每個有志於寫好文章的(ing)者,都應該理解自己有多少資源可以利用,和如何將資源的效用最大化。

參考連結:
下載:

Tuesday, July 24, 2007

Creative Approach 有什麼不同

為了準備資格考,在圖書館借了 Introduction to Algorithms: A Creative Approach 的中譯本(沒法子,找不到原版),實驗室的同學翻了翻,覺得這本書一點兒都不出奇,和別的演算法書籍沒有什麼不同,尤其和這些年被奉為聖經的 CLRS 演算法大磚頭相比,相形下有點單薄了。

的確,中文書名建構式演算法,實在不怎麼響亮,而且在建構式數學已經被污名化的今日,這樣的書名實在是讓人很難不看低這本書。

但是在我的眼裡,這本書不同的地方可多著咧。

首先,作者的來頭不一般,這本書的作者 Udi Manber 可不是蛋頭型的學者,他不僅在學術上的成就卓著,是演算法界大師級的學者,他還是一個活力十足的行動派。 Udi Manber 是agrep 和 GLIMPSE 的(共同)作者。agrep 是他和吳昇(他的著作)老師在九零年代初共同發展的,他們共同寫作的 Agrep - A Fast Approximate Pattern-Matching Tool,依照 Google Scholar 的搜尋結果,被引用次數達到 143 次,以一篇年紀這麼大的文章,被引用次數達到這個程度,是很不容易的。簡單說,他是搜尋引擎相關技術演算法的先驅者之一。

離開學界,進入產業界,他也是一條過江猛龍。1998 年,他加入雅虎,職位是 chief scientist ;2002 年,他加入亞瑪遜網路書店,擔任 chief algorithms officer,這個 CAO 職位,還引起 IT 媒體界一陣騷動,紛紛評論這個職位對於企業的意義和影響(impact)。在 Amazon 期間,他還是搜尋引擎 A9 的 CEO。後來,毫不令人意外地,他在 2006 年加入了 Google ,擔任工程部門的副總裁(之一),當我在媒體上看到 Google Snatches A9 Chief 的新聞標題, 心裡不由得覺得又是這樣,有股淡淡的憂傷在心頭走過。

其次,另外一個特別的地方是,這本書用了整整一章的篇幅,介紹數學歸納法(mathematical induction)。數學歸納法是一個非常重要的證明技法,這個方法衝破思考的侷限,將思考的限制從有限,推展到無限的領域。思考範圍的突破,是數學歸納法很重要的貢獻,而且掌握數學歸納法的證明形式與技法,對於掌握邏輯推演的技巧,也有不小的貢獻。

很可惜,國內除了數學科系之外,鮮少在課堂上針對數學歸納法,作深刻透徹的說明,所以許多學習數學歸納法的學生,很難真正理解這個證明技法在學習上的意義,更別談從這裡發展出「作」證明題的一套適合個人的思路。

所以,這本書的寫作思路,和其它的演算法書籍,的確是不同的。接下來,我想應該花點時間整理數學歸納法了吧(待續stay tuned ...)。

Sunday, July 22, 2007

Beyond Google -新一代搜尋服務

一向以為自己找資料的功夫不錯,直到看了異塵行者推介的 Top 100 Alternative Search Engines, February 2007,和他的三篇大作走出Google & Yahoo,搜尋引擎大不同—替代性搜尋引擎推薦搜尋引擎大不同之二:我愛用的Search EngineYahoo推出Alpha搜尋,對決Google的Searchmash之後,才知道自己錯的厲害,以管窺天,羞煞人也。

異塵行者的文章,解說清楚圖文並茂,並且加上他自己的使用心得,實在是不可多得。但是這些資料散在好幾篇文章裡,找起來有些吃力,所以我依照自己的使用經驗和偏好(每個人的背景和使用目的都是不同的),將一般 Web 內容的搜尋引擎,重新彙整放在同一篇裡。至於部落格文章和所謂的 Web 2.0 應用的搜尋,等我對這個領域更熟悉的時候再說吧。 我個人將這種一般型的新一代搜尋引擎服務,分為三類,這只是我個人自己為了工作方便作的分類,不是學術上或者真正業內人士所用的分類 (taxonomy / classification),真正的方家見了,請勿大笑

1. Improved Google and Yahoo


SearchMash - http://www.searchmash.com
Alpha(Yahoo) - http://au.alpha.yahoo.com
Ask - http://www.ask.com

第一類是原本的搜尋服務提供者,優化本身原本搜尋引擎的輸出,結合本身所提供的其他服務,將搜尋服務變得更豐富、更便利,也試圖讓使用者繼續留在該業者的其他服務裡,製造更多的賺錢機會。

這類型的搜尋服務,不論是 Google 的 SearchMash 還是 Yahoo! 的 Yahoo! Alpha(beta) ,甚至是 Ask.com 新的 Ask3d 介面 ,螢幕的配置和組成方式,都非常相似。 首先,不再堅持原先被認為是 Google 成功要素之一的極簡風格,多了一些色彩和裝飾;其次,螢幕的右邊,無一例外的加上「建議搜尋」和影像、視訊、部落格的搜尋指引,和自家提供各式服務的超連結。這種作法,在雅虎中國的雅虎易搜網,也可以看到。

異塵行者寫作的 Yahoo推出Alpha搜尋,對決Google的Searchmash 裡,針對 SearchMashAlpha(beta) 這兩個服務,有很詳細的分析比較,他對這兩個服務的評價如下,有興趣的讀者,可以自己試試看。

透過上面的比較,Google的Searchmash和Yahoo Alpha除了在一些特色搜索的內容上有所區隔外,Yahoo Alpha目前以可以自訂的搜索側邊攔,應該是有成為個人化式搜索首頁的野心。而Google的Searchmash還是繼續維持著Google易上手、好操作的特色,尤其可以在同一個頁面展示更豐富瀏覽方式的特色更是深得我心。有興趣的朋友可以試用看看,或許它們可以取代原本大家習慣的傳統Google與Yahoo搜索頁面。

除了 SearchMash 和 Alpha 之外, 新改版Ask.com 也不錯,個人覺得比起 Google 和 Yahoo 猶有過之,諸君不妨自行試試。尤其是畫面最左邊的 Narrow your search ,有 aggregated and clustered 的味道。不過 Ask.com 在搜尋中文資料時,實在不怎麼靈光,可能是 Ask.com 目前不打算進攻中文市場的緣故,實在可惜了。

可能是因為還在測試階段的緣故, SearchMashAlpha 的頁面沒有廣告,看來很是清爽,不知道未來正式上線,會變成怎樣?

2. Dashboard for searching


goshme - http://www.goshme.com
CrossEngine - http://www.crossengine.com
Sidekiq - http://www.sidekiq.com

我把這類的搜尋服務,稱作 Dashboard 型的搜尋服務,這種搜尋引擎服務,就像一個大型的搜尋引擎控制面版,輸入關鍵字,選擇要使用的搜尋引擎,按鈕發射,然後看搜尋的結果。

在這一類搜尋服務中,Charles KnightTop 100 Alternative Search Engines 的作者)和異塵行者搜尋引擎大不同之二:我愛用的Search Engine),對於 goshme 都推崇備至,因為他的特別全面。嚴格來講,這不是一個所謂的正統 meta search engine,因為它在接收到關鍵字之後,不是立刻將關鍵字丟到各大搜尋引擎,然後彙總(aggregate)各個搜尋引擎的輸出,作資料分群和輸出美化的動作。 goshme 先分析這個關鍵字(詞)適用的搜尋引擎,列出各式搜尋引擎的選擇,包括一般目的(general purpose)和特殊領域的(Specialized search engines)搜尋引擎和資料庫服務,使用者選擇要使用的搜尋引擎後,goshme 方才執行搜尋和呈現的動作這是 goshme 和另外兩個搜尋服務 Sidekiq CrossEngine 最大的差別。

這個點子固然有趣,goshme 真正出色的地方在於它的全面,goshme 搜尋的對象除了幾個有名的大搜尋入口外,還包括各領域的垂直搜尋引擎(specialized search engine)或資料庫。goshme 在畫面左方的過濾器(Filter,見上圖)列出更細的選擇,它的選項包括 Recreation、Information、Tourism、Business、Arts、Movie、Arts、Games、Social Science、News、Sports、Shopping、Law、Kids、Adults、Home & Garden 等等,每個選項底下還有更細的子選項,例如 Tourism 之下,再細分為 Transportation、Guides 和 Information。 收羅之廣,令人嘆為觀止。還有,使用 goshme 需要先註冊,手續很間單,只要輸入電子郵件位址,設定一個使用密碼即可。

至於 Sidekiq 和 CrossEngine ,兩者在本質上非常相似,只是所包含的搜尋引擎數量,有很大的差異。Sidekiq 的搜尋引擎數量和廣度,屬於包山包海那一型,僅僅 The Web 一項,就包含 14 個通用型的 Web Content 搜尋引擎。選擇了要使用的搜尋引擎後,Sidekiq 呼叫該搜尋引擎,將輸出嵌在右邊的 Frame 裡面,Sidekiq 並不作整理和解讀。


CrossEngine 是這三者中最樸素的,可選擇的搜尋引擎按鈕只有十個,可以將控制面版放在上方或是螢幕左方,雖然沒有前兩者這麼豐富,對於一般的使用者,我想應該是足夠了。畢竟,不是每個人都有作 researcher 的必要(苦笑)。

3. Aggregated and Clustered

PolyMeta - http://www.polymeta.com
Clusty - http://www.clusty.com

第三類則是所謂的分類式引擎,基本出發點,就是所謂的三個臭皮匠,勝過一個諸葛亮(More heads better than one)。這種搜尋服務,將使用者輸入的關鍵字,送至其他各大搜尋業者的引擎,將不同引擎的輸出彙總在一起,然後應用 clustering 和 textual analysis 的技術,將結果重新整理,以分類的方式,呈現給使用者。使用者可以從分類的選單裡,找出自己真正感興趣的部分,繼續追蹤下去。

比如說,當我們使用 Google 搜尋 Coffee 這個關鍵字時,會產生大約 203,000,000 筆資料輸出,要在這樣大量的資料裡找到我們需要的資料,難度仍然不是普通的高。如果搜尋結果採用 aggregated and clustered 技術加工後,可以將輸出資料分群為咖啡豆、產地、咖啡因、健康、雜誌、烘焙、歷史、咖啡與茶、飲料等等分類,我們可以從這些分群後的結果,找到我們需要的入手處,這樣要找到合適的資料就容易多了。而且分群後的輸出,經過適當排版,可讀性提高,當然更容易找到資料。


這類的搜索引擎有不少,例如 jux2, mamma, dogpile, clusty,polymeta 等,依個人的使用經驗,PolyMetaClusty 的輸出結果,真正應用了 clustering 的技術,將搜尋結果分類,而且螢幕的配置易於閱讀,不會讓人迷失在大串資料裡,找不到重點和入手處。PolyMeta 使用的搜尋引擎主要是 Ask 、Exalead、Google、MSN 和Yahoo, Clusty 主要使用的搜尋引擎則包括 Gigablast、MSN、Open Directory、Wikipedia 等,所以輸出結果會有差異,兩者可以交替使用,互相參照

用得順手,就是好工具

不論是已經獨霸搜尋市場的 Google ,或是力圖挽回使用者難測的心的 Yahoo,抑或其他 Meta Search Engines 業者,都在努力改善自家的搜尋引擎的搜尋能力和輸出品質,提供更好的分類能力,整合多媒體的搜尋,競爭的結果,讓使用者擁有更便利、更人性的工具完成手上的工作,這是絕對值得稱許和期待的。不過,千萬不要忘了,每個人的工作習慣與工作目的都不同,所以沒有一個標準萬用的最好工具,只要用的順手、用的熟練,就是好工具

實際動手試試看,用你工作上常用的字詞,作個小小測試,就知道那一個服務最適合你了。

補充:Firefox Search Plugins

使用 Firefox(或是 Netscape)的讀者,可以在網路上找到現成的上面所介紹的搜尋引擎的 search plugins ,不知道從何找起的讀者,可以試試看下面幾個網站:

安裝後的效果如下,看起來挺不錯的(grin):

Friday, July 20, 2007

The First English Coffee House - 1650 or 1652

每到一個新環境,就會尋找補充咖啡因的所在,已經變成根深蒂固的習慣。剛到淡水唸書的第一年,對於人與地都很陌生,只能在校園邊的 7-11 買杯 City 牌的現煮咖啡,作為咖啡因的來源。獨來獨往了一年,終於和同個實驗室裡的年輕同學們漸漸熟稔,才發現圖書館旁的側門外,有一家手藝相當不錯的 coffee house,此後到「陽光小鎮」買杯現煮的咖啡,變成每日必辦的大事,若是到了淡水,沒有喝上一杯肯亞,今天日子肯定白過了。

Book Cover - Coffee Book不過我這人有個壞毛病,喝了咖啡話就多,這種症候,古時候人叫清談,四川人叫擺龍門陣,北方人叫侃大山,話題無限,只嘆午後 coffee break 時間太短 。言多必失,牛吹多了就會破,有次正巧和實驗室的同學談到咖啡屋的典故,我憑著先前在 The Coffee Book 讀過文章的一點印象,斬釘截鐵,毫不猶豫的說第一家英國咖啡屋,是 1650 年開在倫敦。同時還侃了一堆咖啡和保險的關連 (Lloyd's of London這是另外一篇文章的題材了),還有一些咖啡和回教文化千絲萬縷的關係,總之是拾人牙慧,硬般亂套,胡攪一通。

回家後,總覺得有一事如鯁在喉,怕自己吹牛吹過了頭,趕緊上網查查資料,看看真相究竟是怎麼回事。查過資料之後,如釋重負,牛皮吹得還不太大,只差了兩年


Wikipedia 的文章是這麼說的
The first Turkish coffeehouse in England was set up in Oxford by one Jacob or Jacobs, a Turkish Jew, in 1650. The first coffeehouse in London was opened two years later in St. Michael's Alley in Cornhill. The proprietor was Pasqua Rosée, the Ragusan servant of a trader in Turkish goods named Daniel Edwards, who imported the coffee and assisted Rosée in setting up the establishment.
The Coffee Book 的說法和 Wikipedia 的文章差不多,書中插圖 The Timeline of Coffee History 在 1650年標示第一家咖啡屋在 Oxford。而 Encyolpedia.com 的文章 The rise and fall of English coffee houses,則是說
The first English coffee house was opened in 1652 by a Greek Orthodox servant from western Turkey, Pasqua Rosee, in the City of London, already England's financial capital. He worked for a Turkish merchant named Edwards. His coffee house was sponsored by merchants from the Levant Company, the trading house that organized trade with the Ottoman Empire (present-day Turkey). Levant Company officials had become accustomed to drinking coffee--the coffee bean was called the 'Mahometan berry'--during their extended trips across the Ottoman Empire and wished to have coffee when back in London.
不過 About.com 介紹咖啡歷史的文章 The Evolution of Coffee House,則是只用一句 "Coffee establishments continued to spread, with the first one opening up in Britain in 1652." 交代這件事。

雖然不同出處的資料略有出入,綜合以上從網路得到的資料,對照 The Coffee Book 的原文, 我們可以得到一個還算可以接受的結論:大不列顛第一家咖啡屋,在1650年成立於 Oxford;而倫敦(London)第一家咖啡屋的成立時間,是 Oxford 咖啡屋開門的兩年後,西元 1652 年。

PS.
TIPS 這個英文字,也是發源自咖啡屋,意思是 To Insure Prompt Service,咖啡屋文化可真是多采多姿...


Drafted: 2007/07/04
Published: 2007/07/20

Thursday, July 19, 2007

搜尋中文資料的另一個選擇 - 雅虎易搜

因為以前的工作需要和個人興趣使然,常需要搜尋以簡體中文編寫的資料。過去,我對吳昇老師領軍的網擎(OpenFind)在中文搜尋市場的角色定位寄予厚望,但是在網擎決定專心致力於企業市場後,剩下來的「較好選擇」就是百度Google CN 了。不過,現在我們又有了新選擇 ─雅虎易搜

老店新開

易搜的前身 ─ 以「一搜天下小」作為 slogan 的一搜網,是雅虎中國力抗 Google 進軍中國所推出的搜尋服務,同時還包含了討論群組等綜合服務,在一陣喧騰後,盛極而衰 ,銷聲匿跡。然後的故事,大家都知道啦,雅虎在中國的搜尋市場,變成可忽略的少數了...

雖然搜尋引擎市場的大勢已經底定,所有的搜尋引擎廠商還是致力於改善搜尋引擎的效能和呈現的方式,尤其是如何將大量的數據整理成最合理的組織方式,以有效、直覺、有趣的呈現方式,讓使用者在最快時間內,找到所需要的資料。

在全球市場(或者說英文為主的市場)上,我們看到 許多新的點子,例如 Google 的 SearchMesh 、 Yahoo 的 Alpha Search、MS 的 Miss DeweyClustyPolyMetaJux2DogPile 等等。有些是原本的搜尋引擎巨擘,對自家搜尋結果的呈現方式的優化;有些則是整合其他搜尋引擎輸出,重新整理分析,作組織化呈現的 Meta Search Engine。在中文市場,我們看到老店新開的雅虎易搜

重灌狂人曾經介紹過雅虎易搜,在他撰文的時候,易搜的版本還是1.0.12,到今天為止,這個老店新開的搜尋服務,已經是版本 2.0了 (到 2007/07/19 為止版本編號是 rev 2.0.14)。

簡潔介面和豐富輸出

易搜的網址是 www.yisou.com ,開啟首頁後,介面非常簡潔,風格與 Google 神似,看來這種簡潔風,是成功的搜尋引擎的充分條件之一了。中間是輸入搜尋關鍵字的文字框,右邊則是可搜尋選項,和指向幾個雅虎服務的連結。目前易搜提供全網、影像和音樂三種資料的搜尋服務。如果只要搜尋影像或音樂,將最前面的域名改成 image 或 mp3就可以了,所以搜尋影像的網址是 image.yisou.com ,而搜尋音樂的網址則是 mp3.yisou.com 。


易搜的特色就是搜尋結果的呈現方式,如果搜尋輸出太多,無法在一頁呈現(在這個資料過剩的年代,這是必然的結果吧),易搜以非常 cute 的標籤式介面來換頁。相關搜尋的建議詞彙,放在螢幕的右邊;如果搜尋結果含影像的話,顯示在螢幕右邊,相關搜尋詞彙的下方。這種螢幕配置方式,和 Ask.com 在上個月推出的新版搜尋介面 Ask3D 非常神似,想來這是目前各方「豪傑」最能認同的配置方式之一吧。

下面的插圖,是以王建民作為搜尋關鍵字的輸出結果,可惜圖形縮得太小,不能看清王建民的英姿,讀者若有興趣,不妨自行試試


(這是雅虎易搜搜尋王建民的結果)


(這是用 Ask.com 搜尋 chien-ming wang 的結果)

新版的易搜,支援站內搜索,只要在搜索字詞的後面加上site:域名即可。比如說,要在小弟的部落格,搜尋 Data Mining 這個字眼,直接搜尋 Data Mining site:blurkerlab.blogspot.com 就可以了,下圖是搜尋的結果。(抱歉,我得承認這不是個好例子,雅虎在搜尋部落格內容這方面比 Technorati 差多了,我只是要展示易搜可以作站內搜索而已)。


易搜還可以接受拼音輸入,比如說輸入 kafei ,易搜會認為你要搜索「咖啡」。這也是個值得一提的功能,不過台灣使用者比較少使用漢語拼音輸入法,這一點不能算是加分

使用易搜的建議

事實上,一般的文字搜尋,使用雅虎易搜的搜尋結果,和直接到雅虎中國(cn.yahoo.com)門戶網站首頁執行搜尋的結果是相同的,但是易搜勝在資訊呈現結果的方式,可讀性和視覺效果都比較出色。而且經過重新設計的螢幕配置,可以顯示更多的資訊,例如類似搜尋關鍵字,以及影像檔的顯示等。

不過,不論是百度(www.baidu.com)還是易搜,強項還是在於簡體中文的資料,如果要搜尋台灣本土的資料,Google TW 才是王道。還有一點要注意,畢竟大陸那邊人多,如果搜尋像「王建民」這樣的人名,搜尋結果一定讓以「台灣本位」為最高原則的使用者失望。百度和雅虎搜尋王建民的結果,包括新華社記者,波音中國副總裁等等,期待 Taiwan Lightning 結果置頂的使用者註定要失望地,大陸上叫做王建民的人太多了(唉)。

結論

在大陸網民中,對於雅虎的經營策略,有許多正反不同的意見,尤其有不少人不贊同雅虎換掉「一搜天下小」的豪邁氣魄,變成份量輕薄的「搜」。不過我個人沒有用過一搜,並沒有這種情緒,我對於「易搜」的服務,還是相當認可的,如果要找中文資料,尤其是簡體中文資料,雅虎易搜是個可以考慮的不錯選擇


延伸閱讀
後記:
總是拿 Ask.com 拿出來比較,或許是因為我個人的特殊情結作祟吧,雖然依照 comScore 公布的數字,連兩季 Ask.com 市場佔有率只有 5% 上下,實在談不上 significant。不僅是因為我真的尬意 Ask3D,也或許是因為它的技術部門總裁 Tomasz Imielinski 是我心目中神人的緣故。


(本文同步發表於 欄杆拍遍)

莫等閒,白了少年頭,空杯切

咖啡喝完了,才想起來拍照,這就是所謂的 ─ 莫等閒,白了少年頭,空


A picture paints a thousand words - No. 2

Sunday, July 8, 2007

Imaging having that in your tommy

濃郁的 Espresso 咖啡加上綿密柔軟的牛奶泡沫,是義大利式式咖啡如拿鐵、卡步奇諾的魅力所在。在牛奶泡沫上作畫,在嗅覺、味覺的享受外,加上視覺的刺激,是標準的錦上添花

台灣的咖啡書籍或網站,一般稱呼這種錦上添花的進階技巧叫拉花。使用 Frothing 或 Latte Art 這兩個關鍵字,可以找到不少介紹拉花的教學網站,在 YouTube 上可以找到拉花的影片, Flickr 相簿上也有許多漂亮的照片

剛剛發現 Hemmy.Net 這個網站上也有許多拉花的照片,質和量都相當可觀。最有意思的是,讀者評論區有一則留言說,想像一下這些玩意兒在你的肚子裡....


Friday, July 6, 2007

即將走出人們視野外的 SDG 2.0

最近,有個朋友接了個不大不小(不是 quick and dirty 的小案,但也不是可以讓供應商穿金戴銀的數字,所以叫做不大不小)的系統開發案,甲、乙雙方為了文件交付標準,起了不小的爭執。經過協調,最後兩方都同意不用 CMMI 的標準(天曉得什麼是 CMMI 文件標準),改用最低的標準「 SDG 2.0」作為文件的撰寫。

過去十幾年來,大部分政府的軟體開發案,都要求以軟體發展指引(Software Development Guidelines簡稱為SDG)2.0,作為交付文件撰寫的標準。有點資歷年紀的老骨頭們,對於這套東西都很熟悉。當時,只要案子的規模大一點,每個廠家都得照著規矩弄出一套套的 FSD、 SDP、 SRS、 SSS、 SDP、 STP、 SDD、 SUM、 OPM 等等...


SDG (軟體發展指引) ,是經濟部於民國七十五年委託資策會以美國國防部的 DoD-STD-2167A(1,2)為藍本,參酌國內的情形,所制訂的軟體發展方法與準則,規範軟體發展的作業程序,並且提供了一套文件撰寫的範例。1986年3月,資策會發表 SDG 1.0,1988年12月1日SDG 2.0出版,全套共18冊。

1. 軟體發展指引總論 10. 系統規格指引
2. 建議書徵求文件指引 11. 軟體需求規格指引
3. 建議書指引 12. 軟體設計規格指引
4. 合約指引 13. 軟體測試規格指引
5. 軟體發展計畫指引 14. 軟體使用手冊指引
6. 軟體建構管理計畫指引 15. 操作手冊指引
7. 軟體品質保證計畫指引 16. 介面需求規格指引
8. 可行性研究文件指引 17. 介面設計文件指引
9. 成本效益分析文件指引 18. 版本說明書文件指引

稍後,資策會和凌群電腦合作開發 SDG Workbench,可以自動產生符合 SDG 2.0 規範的文件章節架構,協助開發人員製作和交換文件。當時,我用 workbench 產生了一份章節架構的空白文件,現在還在我的書架上(參閱上圖)。而當年凌群電腦研發處參與這個案子的工程師,現在已經是凌群電腦的處級主管了。


因為 SDG 主要是以承襲(翻譯乎?抄襲乎?)自美軍的 DoD-STD-2167A,所以自然也繼承了 2167A 的缺點。在 Wikipedia 的文章裡,介紹了業界對於 2167A批評(See below)。而受了軍方行事風格影響,文件的種類、格式過於繁雜、冗遢,則是我個人最受不了的地方;工業局軟體工業五年發展推動計畫(軟五)的軟體技術文件指引手冊前言中,也自述新的文件指引比SDG 2.0 精簡;ISO/IEC12207標準中也主張「在軟體專案發展流程中不要像DOD-STD-2167A要求許多繁雜的文件手冊」之原則,可見在這一點上,英雄所見略同啊。

One criticism of the standard was that it was biased toward the Waterfall Model. Although the document states "the contractor is responsible for selecting software development methods (for example, rapid prototyping)", it also required "formal reviews and audits" that seemed to lock the vendor into designing and documenting the system before any implementation began.

Another criticism was the focus on design documents, to the exclusion of Computer-Aided Software Engineering (CASE) tools being used in the industry. Vendors would often use the CASE tools to design the software, then write several standards-required documents to describe the CASE-formatted data. This created problems matching design documents to the actual product.

One result of these criticisms was to begin designing a successor standard, which became MIL-STD-498. Another result was a preference for formal industry-designed standards (such as IEEE 12207) and informal "best practice" specifications, rather than trying to determine the best processes and making them formal specifications.


隨著軟體開發方法論的進展,以及網際網路的盛行,今日所開發的軟體規模、複雜度都比當年要龐大複雜多了,原本的指引已經不敷使用。時至今日,美軍已經用 MIL-STD-498 取代 2167A,軟五辦公室也用軟體技術文件指引手冊取代了SDG2.0。跟著 SDG 一起度過江湖歲月的年輕人,也變成江湖裡的老骨頭,變成更年輕的傢伙們口中討厭的前輩了。

雖然 SDG 文件範例和指引,沒有考慮到新的軟體工程進展,也不像新的文件指引那麼彈性,但是其中所蘊含的養分,恰好是那個年頭台灣軟體產業所缺乏的。許多我這一輩的同儕,從那些枯燥、乏味的文件裡,各自找出一套理解這個世界的方法,發展出屬於個人的武功。從這個角度來看,SDG 的貢獻比想像中要大得多了。

SDG 2.0 不完美,也快走出人們的視野外,(網路上已經很難找到 SDG 2.0 的資料了)。不過在那個時空環境,帶給業界和許多從業個人的影響,不容抹煞、忽視,也不可能輕易被抹去消失的。

Thursday, July 5, 2007

消失的一天

和咖啡結緣,是在高中畢業那一年,考完聯考的那個下午,覺得無顏見江東父老,於是在考場校園外踱步徘徊,遲遲不敢走向回家的路徑。猶豫半晌,牙一啞,推門進了路邊的咖啡廳,點了一杯冰咖啡。這是我和咖啡的一次接觸。

人生的第一次重大不如意,隨著年紀漸長,和著咖啡的苦澀,終於變成了往事。但是和咖啡的緣分,卻愈結愈深。每到一個新環境,就會尋找補充咖啡因的所在,已經變成根深蒂固的習慣。剛到淡水唸書的第一年,對於人與地都很陌生,只能在校園邊的 7-11 買杯 City 牌的現煮咖啡,作為咖啡因的來源。

獨來獨往了一年後,終於和同個實驗室裡的年輕同學們漸漸熟稔,透過他們,才發現圖書館旁的側門外,有一家手藝相當不錯的 coffee house,水準完全不輸以前曾經接觸過發燒友名店。此後到「陽光小鎮」買杯現煮的的肯亞咖啡,成為到淡水校園上課、辦事必不可少的儀式之一。

用過午膳,大夥兒一起晃悠著走到圖書館邊的後門,每個人隨自己喜好點一杯咖啡,有人愛拿鐵,有人愛焦糖,我則特別鍾愛用Syphon煮的肯亞。其實,紙杯和店裡的磁杯比起來,還是差了點味道的。不過每個實驗室的伙伴手頭都有不輕的工作(趕論文、系統,etc),很難得有空閒坐在店裡玩玩小資階級的 Coffee Break,所以只好每個人捧著屬於自己的紙杯,踱回實驗室,邊趕工,邊繼續午餐前未竟的話題。

若是哪天剛巧老闆沒空,恰巧不在店裡,沒法子補充足夠的咖啡因,那一天在行事曆裡變成空白,變成消失的一天。不幸的是,口味被養刁了,再也不想回頭喝 City 牌的咖啡了。

如果我的心是一朵蓮花

~ 林徽因 · 馬雁散文集 · 蓮燈 ~ 馬雁 在她的散文《高貴一種,有詩為證》裡,提到「十多年前,還不知道林女士的八卦及成就前,在期刊上讀到別人引用的《蓮燈》」 覺得非常喜歡,比之卞之琳、徐志摩,別說是毫不遜色,簡直是勝出一籌。前面的韻腳和平仄的處理顯然高於戴...