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

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 28th, 2006

Django is snakes on a plane

最近在看 Django 這個 python web framework,也就順道去 freenode 的 #django 看了一看。
有意思的是,#django 的 topic 是:

http://www.djangoproject.com/download/ | Please read the docs! http://djangoproject.com/documentation/ | Please paste code in http://paste.e-scribe.com (pastebin is down) | Channel is logged at http://simon.bofh.ms/logger/django/ | Ruby on rails, Django is snakes on a plane.

哈,”Ruby on rails, Django is snakes on a plane.” 真是幽默 :p

Filed under: Python, Programming, Diary — lwhsu @ 22:52

August 14th, 2006

中國的標語文化

還記得高一的時候參加了學校辦的什麼 “千禧領航江南行”
隨著校長去了大陸幾個 “重點學校” 逛了一圈
那時後,我們印象最深的,就是他們的標語文化了
(除了什麼 “我們家裡有熱水” (註一) 以外最深的吧)

那時候就親眼看到了什麼

上海市全體公安向不闖紅燈的市民致敬

那時候(不知道現在怎樣)大陸人闖紅燈不走斑馬線真的很強,
八線道的十字路口就斜斜地走過去,看到完全令人傻眼
而且他們開車的人也不是像國外一樣會禮讓行人的呀 @_@
不過…我們住了兩天以後也學會了就是
(也就是說,入境隨俗?)

其他的…想不起來了 XD

今天看到篇 “Google 实习拾趣” 最下面的 “一些好玩的 Google Talk 签名”:

“爱生活, 爱 Coding”
“早起修 Bug, 一天工作都有劲”
“每一个整洁的接口背后都有一个龌龊的实现”
“自从咱用了 Unit Test,,腰不酸了,背不痛了,腿也不抽筋了”
“珍爱小拇指,远离 Emacs”

為什麼又讓我浮起了當年的感覺呢?

另外 “存在即合理” 的:

Google 的工程师干活最常用是 VIM、Emacs 和 Eclipse。用 VIM 或 Emacs 的人占多数,用 Eclipse 人较少。于是少数派经常遭到众人鄙视。少数派认为,存在即合理,因此用 Eclipse 是合理的。众人认为,存在即合理,因此众人的鄙视是合理的。

裡面總覺得有種說不出來的怪,不過這是某種幽默吧,我想。

讓我嘴角上揚的,則是 “程序员的冲动”:

我实在太喜欢 C++ 了。每当打开一个空白文档,手指有一种莫名的冲动,会不由自主地键入”#include “。

不過,早點用 gugod 說的 snippetsEmu 吧,「節省打鍵,手指拯救」
厄…這東西可是從 Emacs 上學來的耶,別對 Emacs 有偏見嘛 XD
(我承認,我一開始玩 Emacs 就是被那個 meta 鍵給打敗的…)

註一:

參訪上海交大附中的時候,有位接待的上海交大附中同學在寒喧的時候說:

台灣的生活應該很苦吧,對了,你們知道嗎?我們家裡有熱水耶!

語畢,我們這邊的同學完全不知道怎麼回應好
(事後有人說,應該回句「我們家裡還有冰水喔!」
不過那時剛到「祖國」還是安分小心一點好)

Filed under: Murmuring, China, CK, Google, Programming — lwhsu @ 00:50

August 7th, 2006

Zeroth

http://en.wikipedia.org/wiki/Zeroth
這…也算是因為計算機科學造出來的一個新字吧 :)

剛剛看 paper 的時候,看到一句不懂的英文:off-by-one error,找了Wikipedia
才知道是什麼東西:
http://en.wikipedia.org/wiki/Off-by-one_error
另外有一個相關的條目:
http://en.wikipedia.org/wiki/Fencepost_error

最後發現, Wikipedia還有Programming bugs這個Category呢!
真是有意思 :)

Filed under: Wikipedia, SQLab, Computer, Programming — lwhsu @ 03:20

Powered by WordPress