2009-06-22

捷運上的速寫



今天因為某個緣故,上午請假,中午才去公司。
在永安市場捷運站上了車,想起今天事情很多,就拿了小冊子開始畫了起來:
今天要做的事項列表,新案子的技術瓶頸,配套措施,人力配置.....
寫到一個段落,一抬頭,發現對面有個老伯,拿著紙筆在畫我。
我的第一個反應,有被侵犯的感覺(我平日如果拿著照相機,也不敢隨便對著人拍...)。
所以,當下,我就直眼望了回去。
老伯回以微笑,繼續畫。
告一個段落後,
跟我說,你可以拿手機照下來啊....
然後我就拿手機拍了上面這張圖。

到了辦公室,上網查了查,才發現這位老伯是北科大的教授,在捷運上畫速寫已經很久了,在網路上還頗有名氣。

遇到這事,還蠻有趣,以此為記。

下面有這位老伯的作品:

讓小孩遠離速食的方法



今天的一則新聞頭條:
速食店用油 1~7天換一次
真省?速食店沒天天換油 學者:高溫、重覆油炸易致癌

速食店用油 3~4天換一次油
油炸6小時變質 沒一家馬上換

我們一直都知道吃速食不好,油炸類的食物對成長中的小孩尤其不好。
但是,有什麼方法可以解決小孩喜歡吃速食的問題呢?
大概10年前,我發明了一個方法,應該可以從小解決這個問題。
今天看到這則新聞,就放在這裡,跟大家分享。

作法很簡單:
在小孩子很小的時候,去買麥當勞叔叔跟肯德基爺爺的服裝,然後用泡綿做的薯條跟炸雞欺負小孩。
以後,小孩在路上看到麥當勞跟肯德基外面的肖像,怕都怕死了,自然不敢進去買東西啦。

熟識我們的朋友應該會問:那你們夫婦倆什麼時候要去做呢?我想,問題應該是:沒人可以扮麥當勞叔叔.......

當然,以上都是開玩笑的,別當真啊。

2009-06-16

我對 Strong Typing vs. Strong Testing 這篇文章的意見



今天下午在看這本書,裡頭有篇文章,看完之後,在噗浪上面寫了一句話,覺得這篇文章的說法似是而非(意思就是說,這文章看來有道理,事實上卻說不太通)。

下班的途中在捷運上又想了想,就把感想寫在這裡(噗浪還是不適合回長文啊)

文章裡說得對的地方:
If it's not tested, it's broken. 這是符合現代程式開發的普遍說法,根據我的經驗,這點我同意。

我覺得有問題的說法:
Python會在程式執行時才發現型別問題,然後丟出實行期錯誤,這個機制看來有問題,但是 Python 還是獲得巨大的成功,所以,執行時期才做型別檢查沒啥問題,只要靠完整的 unit test 就好。
我的回應是:如果你有完整的測試,整個程式都沒問題了,執行時期當然不會有問題啊(廢話)。所以,這個問題被轉換成:如何保證你的程式有"足夠"的測試。
千萬不要跟我說,執行時期才做型別檢查這個作法沒有問題。執行時期才檢查型別的不堅固(爛)程式語言一堆,我應該不需要舉例子吧。

再來舉兩個例子:
  1. 假設你有定期完整詳盡的健康檢查與醫療照護,你會因為這樣就放棄運動跟正常作息嗎?
  2. 假設你是七龍珠裡的孫悟空,你會因為會使元氣玉(大絕)就不用龜派氣功嗎?
舉上面兩個怪怪的例子的原因是:要寫文章推廣好的觀念是不錯,但是不能因為要推廣"大絕"就把容易又有效的小絕招放棄吧。所以,文中的這句 Strong testing, not strong typing.
應該可以改成 Strong testing, and strong typing.

根據我的開發經驗,如果可以在開發初期就做對決策,把軟體的品質放進產品裡(利用基本機制帶來的品質保護),這會比事後再做補救措施來得容易&節省資源。

再回來談大絕(就是文中的 adequate unit tests
就像大絕很難練成一樣,要能執行 adequate unit tests,跟團隊的能力/制度有關,不能假設開發團隊都有能力&資源執行夠質足量的 unit test,更不能為了假設有大絕,就放棄簡單易用的小絕招。

最後的補充:
程式的錯誤,一般來說,有語法錯誤跟邏輯錯誤兩種,如果有編譯器可以多幫你一些忙,處理掉一些錯誤,這是好事。軟體開發耗神費力,可以有多些幫助,就該謝天謝地了。

一些背景資料:
這篇文章的作者 Bruce Eckel 很有名啊,就是Thinking in Java的作者。我以前就是看了他的書才去學Python的。
聽說這篇也很有名(沒時間細查)。但在我看來,這篇說理的邏輯不太通(這就是會有這篇的原因),講述測試的重要性也沒有特別令人信服的地方,我實在看不出這篇的重要性在哪裡。

最後的最後:
多測試沒事,沒事多測試

2009-06-01

空心菜花



昨天岳父拿了一些菜給我們吃。
老婆在整理空心菜的時候,發現還沒開的空心菜花苞。
老婆雖然是農夫的女兒,她也沒看過空心菜花。
於是昨晚把花苞放在水裡面,等它開花。
今天下班時,居然就看到了可愛的空心菜花!
覺得有意思,就寫在這裡。