2012/12/10

雜談電腦相關的英文術語

某些英文術語或字彙,我覺得很難翻譯、容易搞混、尚無好譯詞的,記錄如下。

Linux distribution:
將Linux核心、驅動程式、X Window、桌面環境、各種工具、應用軟體、有的沒的設定檔通通整合在一起,集結成一套完整的作業系統,英文簡稱為「distro」。通常翻譯為「發行套件」、「套件版本」、「發行版本」、「發行版」,都不是太好,「套件」會讓人想到「package」,進而聯想成「某一套軟體package」,「發行版本」會想到「release version」,但我也沒有更好的譯詞,除非給它一個全新專屬的名字。

kernel:
作業系統的核心部分。翻譯為「核心」,但這是個很一般的字彙,許多其他英文單字也可能會翻譯成核心,例如core、center、essence、heart、substance。若是一本講kernel的書,可以把核心一詞保留給kernel,其他地方改用別的字彙。

programming:
視情況可翻譯成「程式設計、撰寫程式、寫程式、撰寫程式碼、撰碼、編程」。「程式設計」是個歷史悠久的譯詞了,本來也還好,但後來軟體工程與專案開發更加細分,可分成analysis分析、design設計、implementation實作,「程式設計」就會跟「design設計」重疊了。「編程」是大陸用語。

programmer:
可翻譯成「程式設計師、軟體工程師、程式編寫員、程序員」。「程式設計師」不太好,理由同上,「軟體工程師」應該是software engineer才是,「程式編寫員」聽起來很遜,大陸用語「程序員」還ok。

coding:
記得以前詢問某人的打工職務內容時,他回答說:coding,當時聽起來感覺很炫。當英文與中文有落差時,多少會出現此毛病,因為要表達某事物,若中文裡沒有剛好對應某英文字的詞彙彙、當說的人比較熟悉英文用法時,就會脫口說出英文單字。當然啦,講英語還有唬人的功用,譬如說把「bug」改稱「defect」。

programmable:
通常翻譯為「可程式、可程式化、可編程」,老實說不太好,很冗長,放進句子裡更顯得礙眼,但我也沒有更好的譯詞。我認為原先英文裡使用此字眼時,應該比較偏向「規劃、編排」,也有偏向「非固定,可以修改行為」的意思。

library:
以前譯為「函數庫、函式庫」,library之意為「庫、藏」,就是把一堆東西放在一起。後來,library可能是class library、template library、等等不同的形式,裡面的東西不只是函式而已。一般而言,我會翻譯為「程式庫」或根據上下文翻譯為「xx庫」。

application:
翻譯為「應用軟體、應用程式」,近來「App」興起,但並無適當譯詞,很多書都直接採用「App」,電視新聞與綜藝節目也直接一個字母一個字母念、以「a、p、p」稱呼之。惡搞:我看翻譯成「小應、小軟」好了orz。

assign:
指的是程式語言裡的「=」。一般翻譯成「指派、指定、設定、設值」,也都還可以,但「指定、設定」都是很一般的詞彙,常常會在內文中出現,容易搞混。大陸翻成「賦值」,我覺得尚可,但「值」容易聯想到數字、數值;我認為翻成「指派」應不錯,而一般內文應避開。

object:
翻譯為「物件」,但這個字眼已經被用爛了,到處都是物件,這也是物件、那也是物件。大陸翻成「对象」,我完全不明白,有隔閡。object oriented台灣翻譯為物件導向,大陸翻成面向对象。

method:
這裡指的是與某類別關聯在一起的函式,翻成「方法」,但這詞也太普通了,句子中常常會出現,容易搞混,中文翻譯時必須避開,改用「作法、做法、用法、辦法、方式、途徑、管道」。

property與attribute:
很混亂,在不同程式語言裡有不同的意義,另外在其他範疇也會使用,例如HTML/XML。property可翻成屬性,至於attribute若翻成屬性項,非常不好,容易搞混。

object file:
這裡指的是原始程式碼經過compiler、但尚未linker的中間檔,通常翻為「目的檔」,原英文取的就不好,導致中文翻譯也不好,但這譯詞已經很久了。

link:
指的是軟體建置過程中的最後步驟,把中間檔通通組合起來變成最終產品(可能是執行檔、可能是程式庫、或其他),通常翻譯成「連結」,大陸翻成「鏈接」,翻成「連結」太一般了。

hyperlink、URL、web link:
傻傻搞不清楚。以前還會出現「超連結」,但現在好像比較少用了,通常以「網址」或保留「URL」稱呼之。

stack:
翻成「堆疊」,但此資料結構的兩個操作動作push和pop怎麼翻、要不要翻呢?有人翻成「推進」與「彈出」;我原本把push翻成「堆入」、pop翻成「疊出」,也不算好。

queue:
翻成「佇列」, 那麼,它的操作動作enqueue與dequeue怎麼翻呢?

exception:
很多書翻成「例外」,但翻成「異常、異常情況」應該比較好一點。「例外」是個很一般的字彙。

Java bytecode:
Java位元組碼,為什麼當初取名時不取個特殊一點的名字呢?

call、invoke:
通常都翻成「呼叫」,但若遇到兩者有區別的場合時,invoke就很難翻譯了。 大陸將「call」翻成「調用」。有時會出現名詞「invocation」,更難翻。

required、optional:
required可翻為「必要的」,但optional翻成「選用性的」,字數多很囉嗦,若翻成「可選的」,我覺得不夠好,若翻成「可有可無的」,感覺不太對。

瀏覽器的cookie:
很難翻,難道要翻譯成「小餅乾」?

usability:
有人翻譯成「優使性」。這種-bility的字彙都很難翻,例如availability、serviceability、extensibility。

lexical scope:
我翻成「語彙範圍」。

closure:
有人翻成「閉包」,感覺不好,但我也沒有好翻譯。

context:
很難翻,英文裡很常用的字眼,可用在介面繪製API的抽象繪製對象,例如OpenGL ES context,可用在作業系統領域,例如context switch。我見過的翻譯有「背景關係、週遭環境、上下脈絡、語境 、文脈、環境、上下文」。

scheme:
很難翻,例custom URL scheme、XML scheme、database schema。

session:
可翻成「工作階段」,但在不同情況下,應要想更好的譯詞。

workaround:
可翻成「暫時性的替代方案、暫時性解法、應急解法」。

approach:
無一定翻譯,要根據上下文找出適當譯詞。某書的書名裡有"quantitive approach",其中文翻譯本翻的...滿好笑的。

deprecated:
我翻成「揚棄、揚棄不用」。翻成「廢棄」似乎太過了,因為尚可使用。

target:
很一般的單字,很難翻,容易搞混。在嵌入式系統裡,target指的是那塊開發目標板;在軟體開發IDE裡,target指某個建置對象;其他很多地方也會使用target特指某東西。

dependent、dependency:
依賴、相依性。在建置軟體時,這支檔案若改變了,那麼所有相依於該檔的其他東西也都需要重新建置;安裝程式庫時,程式庫之間也有相依性;套件管理系統也須根據套件之間的相依性來管理。

socket:
BSD socket,不知道怎麼翻。曾有過奇葩翻譯「套接字、套介面」。

tuple:
不知道怎麼翻。曾看過「元組、管串」。


參考資料:

1 comment: