話說前陣子聽說了一件事:對岸管 Inner Library 叫「內庫」。據曾去中國出差的同事說,開會時內庫滿天飛,台灣同事個個臉上三條線,中國同事則是渾不覺有何不妥。

這種因用語不同而產生的誤解與不適,所在多有。我們看他們用法很奇怪,他們看我們用法也很奇怪。在台灣,似乎除了公認的譯法之外,使用原文也可以被接受。以我個人來說,雖然不計較信、雅、達三者兼具,但若最基本的「信」,也就是正確呈現原文意含,都無法達到時,我寧願使用原文。例如,「巨集」或「宏」,我都無法接受,寧願使用「macro」。

前幾天,我發了《Method overloading and naming》這篇文章,事後對於以下這句話,感到不妥,故趕緊追加註解說明:

如果今天 parameter 的意義,不是以「受詞」的方式存在,那就很有必要在 method name 上動點手腳。

註解裡說明,「受詞」一詞的用法,有所爭議。什麼爭議呢?假設 addBooks 是這麼被呼叫的:

class Librarian
{
    public void organize()
    {
        ...
        bookShelf.addBooks(newCategory);
        ...
    }

    public static void main()
    {
        Librarian librarian = new Librarian();
        librarian.organize();
    }
}

在此例中,「受詞」實際上是 bookShelf「物件」,而「主詞」則是呼叫 addBooks 方法者,也就是 librarian 物件。既然「受詞」另有其人,所以 newCategory 這個 parameter 當然不可能是以「受詞」的方式存在[1]。是故,上述該句確實是有問題的。

一樣從物件導向的角度來看,呼叫 addBooks 的圖應該這麼畫:

這張圖翻譯成句子,是這個樣子:The librarian tells bookShelf to addBooks (from) newCategory.

當畫成圖並翻成句子後,我們更明顯地看出了各參與者的地位:

  • 「主詞」是 the librarian
  • 「受詞」是 bookShelf
  • 「動詞」永遠是 tell,因為 Tell, Don't Ask
  •  所 tell 的「訊息」是 addBooks (from) newCategory,由此我們可以發現,parameter 亦為「訊息」的一部份。

扯遠了。總之,講到「受詞」,我們應當從其原文來思考。查字典可知,「object」一字有以下兩個意思:

  1. a material thing that can be seen and touched.
  2. a person or thing to which a specified action or feeling is directed.

前者便是台灣譯法「物件」,後者則是中國譯法「對象」。從以上的討論可知,「object」一字的選用,兼具了這兩個意思,故台灣與中國譯法,都只有「信」一半,兩者都譯得對,但也都沒譯完全。既然半斤八兩,那我便應該時時警惕自己,不要碰到「面向對象」就只感到「這好奇怪」然後就沒了;應該要更進一步體認的是,「對象」、「物件」都是對的,千萬不要因為習慣於台灣的譯法,而忽視了「object」還有另一面意義存在,而導致了思考模式的偏頗[2]


  1. 至於,newCategory 這個 parameter 到底該算什麼詞?我的文法不好,只懂得將之視為 addBooks 這個「訊息」的......參數。XD
  2. 這段講得好繞口,我的文筆真的很不好。:-(