The Old Blog Archive (Traditional Chinese), 2004-2009

Archive for December, 2007

重新學C++

最近在重新學C++。簡短的感覺是,C++哪裡是什麼物件導向/「面向對象」的語言嘛。C++設計哲學的精采之處,似乎都表現在「沒有使用pointer」的地方。另外就是,傳統C有的程式庫功能,C++幾乎都有一套「符合自身哲學」的作法。從這點來說,等於是跟C斷裂了。

Objective-C就這一點來說,還是跟C貼近些(Objective-C是C的超集合,但C++不是;合法的C不見得是合法的C++)。

不過,兩者哲學天差地遠就是了。倒是C++因為有行內展開(inlining)這種超邪惡的機制,在處理複雜資料結構上,有著可怕的速度優勢。

最近感受到把某些老程式用C++重寫後獲得2x甚至10x速度的爽感──在完全不改動資料結構或演算法的條件下,一切全拜C++的ADT哲學與STL container之賜。

雖然有一種遲來的快適,不過也幸好是現在才改用C++重寫,而不是在它們還用其他語言寫時,就做很多敲敲打打。因為,套用那句經典名言:

Premature optimization is the root of all evil
過早求最佳解乃萬惡根源

PMingLiU時代

修正一句話:Vignelli的地鐵標示是1966年設計的,不是70年代。

記錄片Helvetica的DVD已經公開發售一段時間了。很推薦大家去看這部片。實在覺得在台灣應該要有個放映會的。

我可能比較傾向片中「不認為Helvetica限制了什麼」的那一派。而且即使是Helvetica也還是有時代性的。確實Massimo Vignelli的紐約地鐵標示系統不太容易讓人覺得這是1960年代的東西(據一位朋友說,紐約地鐵以前不是這樣的,以前對路線的稱呼方式和現在色環加字母的系統很不相同,是那種只有紐約客搞得懂的命名法),但是也絕對不會讓人和,好比說,American Apparel聯想在一起。字體仍然是要和它的context一起發生作用的。

有時在想,如果過去五十年有所謂的Helvetica時代這種說法,不知道繁體中文的等義詞會是什麼。

不會是…… 「PMingLiU時代」吧。

PMingLiU,或者說是「細明體」、「新細明體」,大家從Windows 3.1一路看到現在,一共也看了15年以上了吧。總覺得一定程度上這跟Arial有異曲同工之妙。因為Windows的緣故,它背負了所有電腦字體的罪惡。不過,「阿賴羅」好歹還有個理型和範式:那就是被它rip off的Helvetica。細明體呢…… 我們好像沒有那個理型的存在(不會是 stdfont.24 吧 *大誤*)。說來也奇怪,平平是明體/宋體/明朝體,日文字體就有辦法表現出那種一眼即能看出的個性和年份。莫非,這一切都是「風土條件」(terroir)造成的?

(不過,即使在 stdfont.24 的年代,大家拿到倚天,第一件做的事,就是找一套轉換程式,把國喬的 16×15 字型換過去──奇怪,或許那時候反而大家比較在乎這種事?)

倒是幾個月前對我們的「PMingLiU」時代有新的體悟。那就是去WWDC ’07的時候,為了一個繪圖系統的問題,去了他們在會場上設置的lab。幾經輾轉,最後我面前的人是…… 「Quartz主要就是他寫的啦」。「Apple的PDF是跟Adobe買的library還是自己照規格刻的?」「自己照規格刻的,應該說,是我刻的」,的那種等級的人。

談話最末,也許出自沒話找話,我問了個問題,「對了,附帶一提…… 你們能不能解決有一套繁體中文字型在PDF裡會錯亂,但關掉anti-aliasing後會正常的問題?」

「我好像知道你講的是那一套字了,你講的該不就會是……」
「PMingLiU?」
「啊,果然」

那個當下,他的反應,我唯一能想到的,只有這句台語可以形容:khùaⁿ tio̍h kúi。漢字寫作「看著鬼」,也就是一般說的看到鬼啦。

真是有夠「硬名譽」(infamous)的。

不過,我好像也曾經很愛PMingLiU呢,特別是跟另一套電腦字型的罪惡相比,那就是本國偉大政府公文書統一使用的14pt BiauKai(請恕我實在無法直呼其名諱,這種事跟不能直呼佛地魔,只能說the-typeface-whose-name-thou-shalt-not-mention是一樣的道理)。不過,那又是另外的樓層/故事了。

幾年前英國電信出了個服務,是你只要在手機上撥個號碼,然後把手機湊近,好比說,discotheque大聲放送的舞曲,幾秒鐘後就會有簡訊告訴你這是哪首歌、哪裡買得到、要不要買鈴聲一類的。嗯,其實我也好希望有這種服務是,看到喜歡的字型,用手機拍下來,發送MMS,幾秒鐘後就會有簡訊告訴你,這是哪套字 …… 不過,相對於鈴聲一首不到百元台幣,應該是不會有字型立即購這種事的啦……

聽了會有成就感的片頭

小時候看的Knight Rider(就是台灣譯為為《霹靂遊俠》的那個影集),據報紙說,明年要上映新版了(不過並不是找David Hasselhoff來當主角)。託YouTube之福,一下子就能叫出各國版本的片頭。幾種能大概聽得懂的語言裡,大概就屬德語版聽得最有成就感。全片頭只有三句話,頭兩句是:”Er kommt, Knight Rider”,以及,”Ein Auto, ein Computer, ein Mann”。天啊,完全是初級德語的程度(即使不懂德語的朋友,相信也能從第二句中,猜到要講的是什麼吧)。相較之下,「無奇不有的世界」,以及「刀槍不入,無所不能」──怎麼這麼多double negative啊──好像就真的太難了。不信的話,去師大華語中心,解釋給同學們聽,你就知道是怎麼一回事了。

那種屬於1980年代、如今看起來粗糙的科技感,真是不可思議。

據說新版Knight Rider要改掉許多當時不合理的設定(例如2秒內從0加速到100 mph)。活在「後《空想科學讀本》」時代的人很可憐。可以想見的是,當「設定」本身有越來越多限制,「故事」的重要性會越發突顯。

除了原版Knight Rider外,另一個從YouTube上找到的原版片頭是《科學忍者隊Gatchaman》,也就是台灣譯成《科學小飛俠》的卡通。據稱是少數台版主題歌完全唱原版曲的卡通歌代表──不過,小朋友唱「飛啊、飛啊」跟大叔式的唱腔「飛べ!飛べ!」(注意,那個日文字幕還要用斜體的Gothic字,驚嘆號有超傾斜的角度,表現出1970年代的日本感),完全不是能放在同一個等級比啊。另外就是有朋友說,明明日文主題歌說「地球はひとつ」(地球只有一個?),這一班人馬卻又喜歡開著高熱的燒鳥到處切來撞去,這,好像是做為正義味方的不方便真相啊。

OpenVanilla、魔獸世界、行列

花了一些時間測試了一下,OpenVanilla(以及Apple內建的輸入法,包括日文)在「魔獸世界」(World of Warcraft; WoW)的行為,可能隨著機器不同而有不同。

大體說來,在新機器上,「魔獸世界」的非全螢幕模式一定是正常的──輸入法可以用,選字窗看得到。在最新機種上(例如前陣子剛出的,可以插滿4GB RAM的MacBook)可以在全螢幕上正常使用輸入法,但老一點的機種似乎只能在非全螢幕模式上使用。

而,雖然說是「正常使用」,但選字窗出現的位置並不正確,也就是沒有跟隨著組字區的位置移動。內建輸入法也一樣。

另外,先前有朋友反映,OV的行列輸入法在「魔獸世界」完全無法使用。我們也已經知道原因了,「魔獸世界」跟iTerm有一點像,在處理組字buffer的方式跟別人不一樣。我們在不影響原本行列運作的情況下,已經解決了此一問題。

更詳細的內容,以及修正包下載安裝方式,請參考我在OpenVanilla討論區中的說明。