1. assembler 和 compiler
assembler 匯編器,一般用於匯編語言,如本書的ILAsm。動詞形式為 assemble,翻譯為匯編。
compiler 編譯器,一般用於高級語言,如C#等。動詞形式為compile,翻譯為 編譯。
原書中,作者對這兩個詞是有所區分的。
2.assembly 程序集。很多人常常會與module(模塊)混淆,以至於分不清哪 一個才是真實存在的。 沒辦法,Visual Studio默認生成單模塊程序集,而多模塊程序集則需要命令行工 具手動配置。
其實,把assembly翻譯為“程序集”並不是很貼切,畢竟,assembly是一個很 抽象的東西,而“程序 集”又是那麼的具體。也有的書把assembly翻譯為配件,嗯,感覺不錯。但是, “程序集”這個翻譯我 們已經口頭流傳了很多年,突然改口委實很不習慣,所以,本書沿襲原有翻譯, 不再另辟蹊徑。
3. property和attribute
一切都是MSDN的錯,以至於所有關於.NET的翻譯書籍都要額外強調這兩個詞。 property,屬性; attribute,特性。不再敷述。
4. parameter和argument
parameter,指的是函數定義中括號裡面的變量,即“形參”。
argument,指的是調用函數時傳進去的數值,即“實參”。
這兩個詞一般書中是不作區別的。本書中,在一段中單獨出現時,統一翻譯為 “參數”;如果一起出 現在一個段落中,會相應翻譯為“形參”和“實參”以示區別。
5.instruction和directive
在匯編語言中,有以下三類指令:
指令(即instruction):機器碼的助記符,有對應的機器碼。
偽指令(即directive):沒有對應的機器碼,由編譯器執行,計算機並不執 行。
其它符號:如+、-、*等,由編譯器識別,沒有對應的機器碼。
本書也采取“指令”與“偽指令”的翻譯來區分這兩個不同的術語。
6.flag、tag、token、identity、label、notation和mark
話說,這幾個詞很搞,在中文裡翻譯都差不多。這裡,統一翻譯如下:
flag 標志
tag 標簽
token 標記
identity 標識
label 標號
notation 符號
此外,mark這個動詞,統一翻譯為標注。
7. schema和scheme
schema 架構
scheme 方案
在翻譯本書時,我還以為是作者筆誤,誤將scheme敲成了schema。在與作者的 郵件中,他刻意強調要 將scheme翻譯為“方案”。
8.emit和emission
這個詞,在MSDN中翻譯為流出、發射、發出。本書統一翻譯為“流出”,因為 譯者認為這個詞比較形 象。emission是emit的名詞形式,也翻譯為“流出”。
9.關於匯編語言中的幾個術語:
slot 槽
word 字(一個字由兩個字節組成)
register 寄存器(CPU中可以存儲數據的地方)
image 映像
overflow和underflow 上溢和下溢
segment 段
section 節
align 對齊
branch 轉移(注意,不是分支switch)
allocation 分配
10. export和import
為了不與input和output(即輸入和輸出)混淆,本書將export和import統一 翻譯為“導入”和“導 出”。
11.關於forward
這個詞有兩種翻譯:
forward class declaration 類的預先聲明(這裡翻譯為“預先 ”)
type forwarder 類型轉發(這裡翻譯為“轉發 ”)
12.關於entry
這個詞有很多種用法:
最顯著的是entry point,翻譯為“入口點”,如Main這樣的入口點函數。
還表示集合中的一個元素,常出現在PE頭的結構中,翻譯為“項”。
還表示二維表中的列,常出現在元數據的結構中。翻譯為“字段”。
13. edit-and-continue
翻譯為“編輯-繼續”,表示 用戶可以在調試過程中根據調試結果立即修改代 碼,繼續執行程序而無 需停止調試。
14. nested和embedded
二者都翻譯為“內嵌的”。其中,nested用於內嵌類,embedded用於內嵌本地 代碼。
15. 關於dereference
這個詞,說白了,就是取消引用,並得到該引用,有點像Stack中的出棧操作 ,不是直接就出棧,還 要返回出棧的對象(Push方法返回值類型為Object而不是void)。縱觀各種翻譯 書籍,只有侯捷的譯文 最貼切:“提領”。本書采取侯先生的版本,並在出現的地方加以注釋,以免讀 者產生疑惑。
16.關於encloser和sealed
Encloser 外包,與nested(內嵌)類相對。
Sealed 密閉,表示不可繼承。
17.關於版本號的幾個術語:
MajorVersion 主版本
MinorVersion 次版本
BuildNumber 內部版本號
RevisionNumber 修訂版本號
18.關於內存布局的幾個術語:
Explicit Layout 顯式布局
Sequential Layout 順序布局
Union Layout 聯合布局
19. validation和verification
validation,有效性檢查,用於元數據;verification,驗證,用於IL代碼。 詳細內容參見本書5.4 章節。
此外,與這兩個術語相關的衍生物:
validity 有效性
verifiable 可驗證的
unverifiable 不可驗證的
verifiability 可驗證性
verifier 驗證器
20. retrieve和get
retrieve 檢索,有搜索並得到的意思
get 就是獲取,直接就能拿到
21.關於bind、bound和boundary
bind綁定,分詞形式為bound,集中出現在兩個地方——第4章的16個數據目錄 中的Bound Import表, 以及第6章的應用程序域。
此外,bound還表示“邊界”。比如說數組中的下界(low bound),這時,可 以使用boundary代替。
22. .NET術語縮寫:
CLR Common Language Runtime公共語言運行時。
CLS Common Language Specification,公共語言規范
CLI Common Language Infrastructure,公共語言基礎結構
CTS Common Type System,通用類型系統
JIT just-in-time,即時
P/Inkoke Platform Invocation,平台調用。
EH Managed Exception Handler,托管異常處理
TLS Thread Local Storage,線程局部存儲
23.幾個不作翻譯的術語,保持原汁原味:
stub,有的地方翻譯為“占位程序”。
wrapper,有的地方翻譯為“包裝器”。
Thunk,出現在互操作中。
sentinel,有的地方翻譯為“分隔標記”。
24.以下是一些固定翻譯,無須進一步解釋。
英文 中文 permission 權限 virtual table(V-table) 虛表(V表) fixup 定位(用於V表) marshal 封送 reside 駐留 literal field 文本字段 underlying platform 底層平台 contravariant 逆變 covariant 協變 isolated storage 獨立存儲 bitfield 位域 opcode 操作碼 operand 操作數 cyclic dependency 循環依賴性 Linker 鏈接器 finalizer 終結器 sink 接收器(Remoting忠的術語) component 組件 mask 掩碼 data on data 數據上的數據 startup 啟動,主要用於startup stub verbal description 逐字描述 scope 作用域 convention 約定 constructor 構造函數 destructor 析構函數 specification 說明、規范 instance 實例 instantiation 實例化 instantiatiate 對……進行實例化(動詞) the most/least significant bit 最高/低權重位 lower bound (數組)下界 terminator 終結符 unsigned 無符號的 signed 有符號的 ordinal 序號 neutral 中立的,無關的 engage 使用(用於異常程序塊) bitwise operation 位操作 mangle 粉碎(用於泛型) deploy 部署 overload 重載 overrideing 覆寫 overriden 被覆寫 filter 篩選(對於托管異常處理) local variable 局部(本地)變量 native 本地的 culture 文化 locale 區域設置 location 位置 localization/ localize 本地化 region 區域 manifest 清單 underlying type 基礎類型 evaluation stack 計算堆棧 dispose 釋放 interop assembly 互操作程序集