Dilbert漫摘 - 2007/12/23
- 講得正確…「His interview skills are crazy good」
- 打工仔日日都在進行Progress啊!
- 這個正點!正是大家對Agile的濫用!「I’m glad it has a name.」
- 這種事我倒沒遇過,朋友倒常常遇到呀,陰公。
- 做唔掂啊?整隻山羊囉!
- 這個邏輯很不錯!臨近年尾,大家要好好學習啊!
何謂Natural Order?就是Ascending Order,順序排列。
幾乎每種Programming language都有Natural Order Sort的built-in function。以Java來說,就以Arrays.sort()為例︰
String[] strings = new String[] {"Dog", "Cat", "Bird", "Cow"};
Arrays.sort(strings);
for (String string : strings) { System.out.println(string); }
毫無疑問Output是︰
Bird
Cat
Cow
Dog
很好,現在我們保留這段code,不過內容改變一下,改為Filename︰
String[] strings = new String[] {"A2.txt", "A10.txt", "A1.txt", "A20.txt"};
Arrays.sort(strings);
for (String string : strings) { System.out.println(string); }
答案依然很簡單︰
A1.txt
A10.txt
A2.txt
A20.txt
現在,隨便的在你的電腦開一個Folder,開四個File︰A1.txt、A10.txt、A2.txt、A20.txt。把Folder以Filename作排列︰
如何?兩種sort都一樣是Natural Order Sort,但結果竟然不一樣。原因很簡單,定義不同。Programming Language的Natural Order是指ASCIIbetical,你電腦的Natural Order是指Alphabetical。
兩者是不一樣的。簡單舉個例,作為一個User,我管它甚麼ASCIIbetical,我壓根兒就不知道ASCII是甚麼。因此,作為一個User,看到System的ASCIIbetical Order,不禁會不明所以,甚至投訴System有bug云云。
教訓︰定義要清楚而有共識,而且要確認我的共識跟你的共識是同一共識。
參考︰
Alphabetical != ASCIIbetical
Sorting for Humans : Natural Sort Order
Natural Order String Comparison
The Alphanum Algorithm
在Google Talk About Blog看到Gtalk建立了幾個做翻譯的account︰

首個反應,呸呸呸,Google大賊!這個idea老早就被小弟用了在MoliuSN(註*)上啦!不外乎是Google Translate的活用罷了!
對MoliuSN這種自家寫的application來說,很簡單的用HTTP call去Google Translate做integration可以理解。可是假如是Google自己推出的話,我倒是會預期應該不會像我一樣用這麼頹的implementation…而且Google Translate是有問題的呀,參看《古古怪怪的Google Translate》一文。MoliuSN不負責任當然可以,因為你吹得我漲呀?Google不負責任,Google又能不能說同一番說話,講一聲吹佢唔漲呢?
也許,這個feature早就被我「完‧全」早一步implement了的關係,毫無驚喜,所以格外的差強人意。加上說到底,那個Translate的engine還未成熟,Beta了好幾年,這種連小弟這種頹人才會用的implementation Google竟然會用,著實有點失望…
(註︰MoliuSN乃係小弟一個小小MSN Robot,用作看看新聞查查股票做做翻譯望望天氣等等等等之用)