Li-Wen Hsu’s Blog

June 29th, 2007

Tools

It is impossible to sharpen a pencil with a blunt ax. It is equally vain to try to do it with ten blunt axes instead.
Edsger W. Dijkstra

Dijkstra 資工系的同學一定都不陌生,講到最短路徑問題,一定都會提到他的 Dijkstra’s algorithm
還有 Floyd–Warshall algorithm。當然,Bellman-Ford algorithm 也很重要,
因為在 Dijkstra 的方法中,不允許負邊存在。
(上面的「陌生」要擺個 link 到國語辭典去的原因是,原來我已經廢到連是那個「陌」都想不起來了…)

dds@ (Diomidis D. Spinellis) 的 blog 看到這篇 The Tools we Use [1]

dds@ 是 Code Quality: The Open Source PerspectiveCode Reading: The Open Source Perspective 的作者,
看起來都是相當值得一讀的好書。
Code Reading 好不容易排隊借了回來,但是只看完第一章就一直丟在旁邊了。
今天發現後面又有人預約,看來又要重新排一次隊了…
而 Code Quality 這本在我連推薦了三次之後,我們的浩然終於在六月20日發訂了…
(隔壁王水大圖書館早在四月24日發訂了,但是是過了兩個月還是在發訂中…照這樣的處理速度…民國那一年才會看到書阿 @_@
真讓人有點想就敗下去了…Code Quality, Code Reading,必竟也好久沒有買書了,把錢花在這也比買糟糕物好得多。)

說了這麼多不太相關的東西,來談談 dds@ 的這篇文章吧,
首先他拿出了一張圓餅圖,展示了在 FreeBSD ports 裡面的軟體要 build 起來需要用那些工具,還有執行多久。
原來之前他在 -arch@-hackers@ 討論關於 Process accounting changes
acct(5) 的精確度從 15ms 調到 1ms 是是為了要做這個實驗阿(當然也有可能是相反過來,做完了這個以後才想找個東西來實測看看。
不過我相信,任何 work 都會有他的動機在,就算是 just for fun,也是很棒的阿! :-)

第二段的一句相當有意思:

Using a shiny IDE on top of 1970’s technologies is equivalent to wearing an iPod while ox-ploughing: the work becomes less burdensome, but we’re unlikely to reap substantial productivity improvements from such a change.

所以在後面他說只有把 abstraction 的程度提高,才是真正增加生產力的方法。

在文中他也提到了 C++ compiler 平均一次執行的時間是 1.6s,遠比 C 的 0.17s 多,代表了隨著技術的進步,
電腦和人腦的 trade off 越來越不平衡。也就是說,人可以越來越懶?或著是說,人可以把更多的心思花在更深層的思考上,
旁枝末節的苦工,就交給電腦去做吧。就像唐鳳說過的「大巧不工」— 「最巧妙的程式,就是不用寫程式的程式」。
所以 Perl 像強力膠一樣把 CPAN 黏在一起,而大家也像是吸了強力膠一樣,為 perl 深深著迷。

dds@ 說:

However, nowadays CPU power is a resource a) we can afford to use and b) we can’t afford not to use.

其實我們的聖杯戰爭也一樣,人腦強的是 symbolic reasoning 的能力,
歸納出方法之後,交由電腦的 concrete execution 去完成我們想的工作。這也是電腦科學中,演算法令人著迷的地方。
(為什麼我會想到求婚大作戰中那個妖精說的:「祈願吧,說出來我就替你實現!」呢?哈利露亞~thesis~ XD)

上過 Compiler 課的同學應該都聽老師講過這個故事:

Two success stories of the 1970s that raised the level of abstraction for a specific domain were Stephen Johnson’s parser generator yacc, and Michael Lesk’s lexical analyzer generator lex. Together these two tools and the theory behind them transformed the task of writing a compiler from wizardry into a standard rite of passage for computer science undergraduates.

yacc 和 lex 就是 abstraction 提高生產力最好的例子。

另外這也道出了,科學家和工程師另人著迷的地方,就是讓不可能成為可能,最後變成我們生活的一部份。
Google 說的 R==D 這種態度才是對的阿!)

最後,每次提到 tools 相關的東西,就一定會想到 gugod 的 talk: 利器善事。這是 OSDC.tw 2006 中,我最喜歡的一場。那句結語令我印象深刻:(沒錯,我又忘了是那個「象」了…)

Teach your tools to teach you to do the right thing.

說了這麼多(而且覺得好亂好沒內容 @@…) 還是乖乖回去造我的輪子吧…


[1] Diomidis Spinellis. The Tools we Use. IEEE Software, 24(4):20–21, July/August 2007

Filed under: Murmuring, Research, Computer, Programming — lwhsu @ 06:27

June 14th, 2007

電腦科學的聖杯

According to Wired News on Nov 10, 2005:

When Bill Gates announced that the technology was under development at the 2002 Windows Engineering Conference, he called it the holy grail of computer science

這篇講的是 Microsoft ResearchSLAM Project。原文是:

“Things like even software verification, this has been the Holy Grail of computer science for many decades but now in some very key areas, for example, driver verification we’re building tools that can do actual proof about the software and how it works in order to guarantee the reliability.”
Bill Gates, April 18, 2002. Keynote address at WinHec 2002

這在玩什麼我就不多說了…反正有興趣的人真是少之又少…
待在這邊的大概就是超級強者之輩,還有我們這種跟在別人後面走的笨蛋…
(往好處想好了,知道自己是笨蛋代表知道還有那邊可以努力的地方;
真正的笨蛋是連自己是個笨蛋都不知道…)

之前 survey SLAM 看到這些話的時候只有一笑置之,後來在上個星期到 iis.sinica
Edmund M. Clarke 的演講:Model Checking: From Hardware To Software And Back Again 看到投影片上面時就覺得很熟悉,今天老師提的時候才再想起來。

原來,我們打的是電腦科學裡面的聖杯戰爭阿!

看到這些消息,沒出息的在下,心中想到的卻是,

阿我的 Saber 在那裡呢?我也想要有個愛玩 cosplay 的魔法少女戰友阿!
不然…會作菜的溫柔學妹呢?(沒有補魔力還算聖杯戰爭嗎?)
不過只會白吃白喝的 Tiger 老師就不用了,謝謝。

以上不知道我在說什麼的請參考這邊

不過,以後別人問說我的實驗室在幹什麼的時候,我就可以很帥(?)地說:

我們在打聖杯戰爭阿!

而不是說什麼:「簡單來說…就是在 debug 啦…」

阿阿,聖杯戰爭阿,原著的 45 個結局中,40 個是 Bad ending/Dead ending
魔術師的資質不如人,寶具又輸人家的情況下,這是場硬戰阿…

難到… 我只是個 Servant 嗎?雖然說真的有種被令咒命令的感覺就是了…Orz

看來,這篇的 categories 要加入 Anime/Game 了…我真是糟糕…Orz

Filed under: Anime, Game, Microsoft, Software Enginnering, Murmuring, IIS, SQLab, Research, Diary — lwhsu @ 07:55

September 27th, 2006

Programming 的熱血

大家常說,寫 code 就是要熱血阿!
有熱血的話,不知道可以造就多少「車庫傳奇」
不過要怎麼激起大家的熱血呢?

最近 Lab 大家忙著在 implement 一個東西,所以我就架起了 Subversion & Trac
想說讓大家體驗一下用 Version Control System 和 Issue Tracker
突然發現,大家會因為 revision 的編號越來越大而感到興奮 (?)
然後就很熱血的 coding, committing, 連 debugging 都覺得好玩多了!
現在 Lab 裡大家不是在喊說要打三國(好像是魔獸世界的東西…)
而是喊說:

今天一定要關掉這個 ticket!

或是

離 milestone due 還有 XX hr, 大家拼阿!

然後大家沒事的時候,就寫寫 Wiki, 開些 Ticket, 設設 Milestone, 看每天的 Timeline 都有好多東西,
真棒 :)
想不到,這些東西對於專案管理還有「激勵人心」的作用,以後一定要更大力的推廣啦 XD

BTW, 不知道老師看到這東西以後,會不會一夜之間多出一堆待解 issue 還有 milestone…
(更糟的是,還 assign 好 responsible 了…)

Filed under: Research, Software Enginnering, SQLab, Computer, Programming, Diary — lwhsu @ 00:39

August 1st, 2006

EGT, EXE, Cristian Cadar

怪物一隻, 直接看他網頁比較快: Cristian Cadar: HomePage

兩篇 Paper: (其實是 Technology report)
Execution Generated Test Cases: How to Make Systems Code Crash Itself PDF
EXE: A System for Automatically Generating Inputs of Death Using Symbolic Execution PDF
把我們 Lab 最近想做的事都做光光 XD

這下可好了,我們連造輪子的份都沒了 XD

不過要作研究,還是要把輪子弄出來,至少現在可以確定,想做的輪子是圓的 XD

Filed under: Research, SQLab, Computer — lwhsu @ 21:43

July 29th, 2006

作研究是要挖深

星期二中午12點,在實驗室的沙發床上醒來,驚覺老師坐在旁邊改paper。
整個就是被嚇到…|||
還好老師沒有說什麼,我也很心虛地去刷牙洗臉

後來就先弄 Lab 的 Mailing List,大概告一段落時,
老師請我和新來的同學一起去吃午餐。

進餐中,老師和大家談一些研究的心得,還有討論一些未來可能的方向
也說了一些實作上面的 issue

後來老師強調說,絕對不可以眼高手低(唔…我最容易犯的錯…)
作研究是要挖小,但是很深的洞
廣而淺的東西,人家都可以在很短的時間就完全掌握你的東西了。

然後他說:

就算是在 Linus 寫 Linux 的那個年代(1991?)
如果國科會計畫寫個 “要開發一個OS出來” 這樣會通過嗎?
但是誰知道他後來一直深入鑽下去,Linux有現在的一片天?

其實這個例子舉得滿好玩的 XD

Filed under: Research, SQLab, CS, NCTU, Diary — lwhsu @ 01:50

Powered by WordPress