.NET CLR中的一些基本术语(中英文对照)

中英文术语对照表

 

       1. assembler compiler

       assembler 汇编器,一般用于汇编语言,如本书的ILAsm。动词形式为assemble,翻译为汇编。

       compiler 编译器,一般用于高级语言,如C#等。动词形式为compile,翻译为编译。

       原书中,作者对这两个词是有所区分的。

 

       2.assembly 程序集。很多人常常会与module(模块)混淆,以至于分不清哪一个才是真实存在的。没办法,Visual Studio默认生成单模块程序集,而多模块程序集则需要命令行工具手动配置。

       其实,把assembly翻译为“程序集”并不是很贴切,毕竟,assembly是一个很抽象的东西,而“程序集”又是那么的具体。也有的书把assembly翻译为配件,嗯,感觉不错。但是,“程序集”这个翻译我们已经口头流传了很多年,突然改口委实很不习惯,所以,本书沿袭原有翻译,不再另辟蹊径。

 

       3. propertyattribute  

       一切都是MSDN的错,以至于所有关于.NET的翻译书籍都要额外强调这两个词。property,属性;attribute,特性。不再敷述。

 

       4. parameterargument

parameter,指的是函数定义中括号里面的变量,即“形参”。

argument,指的是调用函数时传进去的数值,即“实参”。

       这两个词一般书中是不作区别的。本书中,在一段中单独出现时,统一翻译为“参数”;如果一起出现在一个段落中,会相应翻译为“形参”和“实参”以示区别。

 

       5.instructiondirective

       在汇编语言中,有以下三类指令:

指令(即instruction):机器码的助记符,有对应的机器码。

伪指令(即directive):没有对应的机器码,由编译器执行,计算机并不执行。

其它符号:如+-*等,由编译器识别,没有对应的机器码。

       本书也采取“指令”与“伪指令”的翻译来区分这两个不同的术语。

 

       6.flagtagtokenidentitylabelnotationmark

       话说,这几个词很搞,在中文里翻译都差不多。这里,统一翻译如下:

flag         标志

tag          标签

token      标记

identity   标识

label              标号

notation   符号

此外,mark这个动词,统一翻译为标注

 

       7. schemascheme

schema 架构

scheme 方案

       在翻译本书时,我还以为是作者笔误,误将scheme敲成了schema。在与作者的邮件中,他刻意强调要将scheme翻译为“方案”。

 

       8.emitemission

       这个词,在MSDN中翻译为流出、发射、发出。本书统一翻译为“流出”,因为译者认为这个词比较形象。emissionemit的名词形式,也翻译为“流出”。

 

       9.关于汇编语言中的几个术语:

slot               

word             字(一个字由两个字节组成)

register           寄存器(CPU中可以存储数据的地方)

image             映像

overflowunderflow   上溢和下溢

segment         

section          

       align                     对齐

       branch            转移(注意,不是分支switch)

allocation              分配

 

       10. exportimport

       为了不与inputoutput(即输入和输出)混淆,本书将exportimport统一翻译为“导入”和“导出”。

 

       11.关于forward

       这个词有两种翻译:

       forward class declaration       类的预先声明(这里翻译为“预先”)

       type forwarder              类型转发(这里翻译为“转发”)

 

       12.关于entry

       这个词有很多种用法:

       最显著的是entry point,翻译为“入口点”,如Main这样的入口点函数。

       还表示集合中的一个元素,常出现在PE头的结构中,翻译为“项”。

       还表示二维表中的列,常出现在元数据的结构中。翻译为“字段”。

 

       13. edit-and-continue

翻译为“编辑-继续”,表示 用户可以在调试过程中根据调试结果立即修改代码,继续执行程序而无需停止调试

 

       14. nestedembedded

       二者都翻译为“内嵌的”。其中,nested用于内嵌类,embedded用于内嵌本地代码。

 

       15. 关于dereference

       这个词,说白了,就是取消引用,并得到该引用,有点像Stack中的出栈操作,不是直接就出栈,还要返回出栈的对象(Push方法返回值类型为Object而不是void)。纵观各种翻译书籍,只有侯捷的译文最贴切:“提领”。本书采取侯先生的版本,并在出现的地方加以注释,以免读者产生疑惑。

 

       16.关于enclosersealed

       Encloser         外包,与nested(内嵌)类相对。

       Sealed            密闭,表示不可继承。

 

       17.关于版本号的几个术语:

       MajorVersion         主版本

       MinorVersion         次版本

       BuildNumber         内部版本号

       RevisionNumber    修订版本号

 

       18.关于内存布局的几个术语:

       Explicit Layout      显式布局

       Sequential Layout   顺序布局

       Union Layout         联合布局

 

       19. validationverification

       validation,有效性检查,用于元数据;verification,验证,用于IL代码。详细内容参见本书5.4章节。

       此外,与这两个术语相关的衍生物:

       validity          有效性

verifiable        可验证的

       unverifiable    不可验证的

       verifiability    可验证性

       verifier           验证器

 

       20. retrieveget

       retrieve   检索,有搜索并得到的意思

get          就是获取,直接就能拿到

 

21.关于bindboundboundary

       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 tableV-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

互操作程序集

 

 

1
0
(请您对文章做出评价)
« 上一篇:《博客园精华集·WEB分册》封面曝光
» 下一篇:不申请连任MVP了,把机会留给新人吧!
posted @ 2009-04-14 01:51 包建强 阅读(2922) 评论(34)  编辑 收藏 网摘

  回复  引用  查看    
#1楼2009-04-14 07:48 | Anders Liu      
弄反了,哥们:

4. argument和parameter

argument,指的是函数定义中括号里面的变量,即“形参”。<-- 应为“实参”

parameter,指的是调用函数时传进去的数值,即“实参”。<-- 应为“形参”


  回复  引用  查看    
#2楼2009-04-14 07:49 | Tony Qu      
本来想坐沙发~结果坐了板凳,55555
总的来说这个表还是很不错的
能否解释下:mark这个动词,统一翻译为mark,这句话的意思?不翻译,保留?
建议flag、tag、token、identity、label、notation和mark这些词翻译为中文之后,在旁边加个括号写上英文(虽然我发现编辑很喜欢把这种括号去掉,觉得多余),在中文中“标记”、“标志”、“标签”基本上算近义词,但英语中这些词关系不大,这样读者能够更方便的理解一些东西。

另外,“Explicit Layout 显示布局”,打错了,“显式”才对

  回复  引用  查看    
#3楼2009-04-14 07:52 | Anders Liu      
branch 跳转(注意,不是分支) <-- 难道不怕和“jmp”混淆么?还是分支比较好吧,根据参数值的不同跳转到不同的分支上。
  回复  引用  查看    
#4楼2009-04-14 07:57 | Anders Liu      
@Tony Qu
沙发是可遇而不可求的,嘎嘎:D

  回复  引用  查看    
#5楼2009-04-14 08:24 | 夕颜      
--引用--------------------------------------------------
Anders Liu: 弄反了,哥们:

4. argument和parameter

argument,指的是函数定义中括号里面的变量,即“形参”。&lt;-- 应为“实参”

parameter,指的是调用函数时传进去的数值,即“实参”。&lt;-- 应为“形参”


--------------------------------------------------------
貌似人家没错 ,你弄反了····

  回复  引用  查看    
#6楼2009-04-14 08:45 | 张蒙蒙      
@夕颜
他说的是对的,不过C#中很多传引用,基本上和C语言的实参和形参有大区别了,引用参数更可以说是C++中的别名。所以有些情况实参和形参作用域不同,但引用值已经一样了。
真期待能是一本优秀的翻译。

  回复  引用  查看    
#7楼2009-04-14 09:03 | Curry      
@张蒙蒙

所以有些情况实参和形参作用域不同

能不能具体说说,貌似都是传的都是地址阿。c中用*,c++用&,c#用ref或out,他们有很大差别么?

  回复  引用    
#8楼2009-04-14 09:11 | 来的来了[未注册用户]
楼主总结的不错,但翻译的时候对术语一定要在括号里注明,因为每个人对英语理解的语意不一样,至于那种正确不能断定,最能理解意思的那个语意就是正确的,所以不要以译者的思想去影响别人,这事翻译行业职业道德问题。所以翻译对术语一定要注明英文
  回复  引用  查看    
#9楼2009-04-14 09:25 | xjb      
--引用--------------------------------------------------
Anders Liu: 弄反了,哥们:

4. argument和parameter

argument,指的是函数定义中括号里面的变量,即“形参”。&lt;-- 应为“实参”

parameter,指的是调用函数时传进去的数值,即“实参”。&lt;-- 应为“形参”


--------------------------------------------------------
兄弟,你整反了吧

  回复  引用  查看    
#10楼2009-04-14 09:25 | Jeffrey Zhao      
我记得出版社有自己的一套对照表啊
  回复  引用    
#11楼2009-04-14 09:33 | 来的来了[未注册用户]
@Jeffrey Zhao
出版社的一套你也信?出版社那群人?再找一个什么施**翻译,那简直对原著的侮辱,翻译一定要保留关键术语的原文,毕竟翻译的人不是英语专家,及时英语专家也不一定是IT专家,所以谦虚点,不能准确翻译大家不怪你,但不要乱来

  回复  引用  查看    
#12楼2009-04-14 09:43 | 巫云      
当时看这本书时,对stub和token这2个词搞的很晕。
  回复  引用  查看    
#13楼2009-04-14 10:05 | AlexLiu      
stub-----桩。??right?
  回复  引用  查看    
#14楼2009-04-14 10:20 | 风吹柳絮非      
不错哦。。。
  回复  引用  查看    
#15楼2009-04-14 10:25 | 小伦      
收藏~~
  回复  引用    
#16楼2009-04-14 10:31 | zdg2[未注册用户]
(1)
label 标号
----------------------
这个翻为标签更好.

(2)
Sealed 密闭,表示不可继承。
-------------------
翻译为"密封"更好

(3)
assembly应翻译为“装配件”

  回复  引用  查看    
#17楼2009-04-14 10:31 | Jeffrey Zhao      
@来的来了
出版社天差地远的,不能一概而论,我不觉得应该抛弃出版社的总结,比如图灵就有一套词典,是对比业界标准,对比总结而来。出版社的词典就是个人总结的集合。
至于保留原文就和词典之类的无关了。

  回复  引用  查看    
#18楼2009-04-14 10:34 | 装配脑袋      
形参和实参反了。 parameter是形参,argument是实参。不要说我弄反了,没用的……
  回复  引用  查看    
#19楼2009-04-14 10:37 | yicong      
@夕颜
别再搞了,到最后,都要被看迷糊了!!!

  回复  引用  查看    
#20楼2009-04-14 11:07 | Azuresong      
从英语的语义来看parameter比较像形参,argument则更像实参。
  回复  引用    
#21楼2009-04-14 11:24 | sumtec@beijing[未注册用户]
parameter 形参,参考C#关键字params
argument 实参,参考javascript关键字arguments

说老实话,第一时间没有反应过来,以为我搞错了,还在寻思着怎么记住这两个词。过了半天才琢磨过味来,同时看来还有不少人搞反了。

flag 标志
tag 标签
token 标记 <= 这个应该取自现实世界中的“凭证”的含义,业界应该称令牌,参考Token Ring令牌环
identity 标识 <= 标识符
label 标号 <= 标签,好像从小看的书里面都是这么写的。
notation 符号 <= 这个应该取自现实中的批注,我觉得标记用也可能比较合适。

关于notation,我认为还是参考上下文作不同的翻译比较合适。当然我没有看原书,我估计原文应该是指"+"等符号。其实加号也是一种标记,只不过中文有专门的“符号”来指这种标记,我们也更习惯说运算符号。
但是notation确实应该有不同的翻译方式,比如有可能是标记方式(系统),例如:
If you want to do the same thing without the extra overhead of two files, simply use CLR notation. The old inherits attribute:

1: <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
2: CodeBehind="Index.aspx.cs"
3: Inherits="ABCCompany.MVC.Web.Views.Home.Index" %>
becomes

1: <%@ Page Language="C#"
2: MasterPageFile="~/Views/Shared/Site.Master"
3: Inherits="System.Web.Mvc.ViewPage`1[[ABCCompany.MVC.Web.Models.LoginData, ABCCompany.MVC.Web]]" %>

注意Inherits的部分,就是文中notation所指的意思,如果翻译成“符号”就不合适了。



  回复  引用  查看    
#22楼2009-04-14 11:26 | MotoMoto      
parameter,argument貌似是反了。关键字params算个侧证吧?
  回复  引用  查看    
#23楼2009-04-14 11:28 | MotoMoto      
@sumtec@beijing
--!一刷新吓我一跳,咔~~在我回复前面出来一大堆...咱俩刚才的心理活动估计一样滴,呵呵

  回复  引用  查看    
#24楼[楼主]2009-04-14 11:51 | 包建强      
--引用--------------------------------------------------
Anders Liu: 弄反了,哥们:

4. argument和parameter

argument,指的是函数定义中括号里面的变量,即“形参”。&lt;-- 应为“实参”

parameter,指的是调用函数时传进去的数值,即“实参”。&lt;-- 应为“形参”


--------------------------------------------------------

这是笔误,已改正。原书翻译中没有错误。



  回复  引用  查看    
#25楼[楼主]2009-04-14 11:55 | 包建强      
@Tony Qu
两个笔误已经订正,再一次检查译文没有发现类似错误。
关于flag、tag、token、identity、label、notation和mark,这些词每个都出现了几百次,不宜按照你说的办法做,最好统一在前面。

  回复  引用  查看    
#26楼[楼主]2009-04-14 12:05 | 包建强      
--引用--------------------------------------------------
Anders Liu: branch 跳转(注意,不是分支) &lt;-- 难道不怕和“jmp”混淆么?还是分支比较好吧,根据参数值的不同跳转到不同的分支上。
--------------------------------------------------------

查过了,branch 翻译为“转移”最好。“分支”不好,这个词是给switch用的。
此外,IL中没有branch关键字,只有jmp关键字,所以jmp是转移(branch)指令中的一个具体指令。

  回复  引用  查看    
#27楼[楼主]2009-04-14 12:08 | 包建强      
@sumtec@beijing
关于nottation,在IL中翻译为符号最好

  回复  引用  查看    
#28楼2009-04-14 12:22 | 装配脑袋      
@sumtec@beijing

你文中的notation,是指泛型类型名称中`1[[...这样的格式,不是指Inherit属性。

  回复  引用  查看    
#29楼2009-04-14 12:59 | Anders Liu      
--引用--------------------------------------------------
包建强: --引用--------------------------------------------------
Anders Liu: branch 跳转(注意,不是分支) &amp;lt;-- 难道不怕和“jmp”混淆么?还是分支比较好吧,根据参数值的不同跳转到不同的分支上。
--------------------------------------------------------

查过了,branch 翻译为“转移”最好。“分支”不好,这个词是给switch用的。
此外,IL中没有branch关键字,只有jmp关键字,所以jmp是转移(branch)指令中的一个具体指令。
--------------------------------------------------------


switch只是分支的一种啊,分支包括 switch和br系列啊。

  回复  引用  查看    
#30楼2009-04-14 13:06 | Anders Liu      
--引用--------------------------------------------------
包建强: --引用--------------------------------------------------
Anders Liu: 弄反了,哥们:

4. argument和parameter

argument,指的是函数定义中括号里面的变量,即“形参”。&amp;lt;-- 应为“实参”

parameter,指的是调用函数时传进去的数值,即“实参”。&amp;lt;-- 应为“形参”


--------------------------------------------------------

这是笔误,已改正。原书翻译中没有错误。



--------------------------------------------------------

我说包子,你一个笔误可下了我一跳,一世英名差点毁了……真实人言可畏,看了前几个回复我还真差点迷糊了。

解释一下,

形参(形式参数,Parameter,Formal Parameter ),表示的是方法定义或声明中使用的参数,是“形式化”的,换言之,这只是一个符号(或标识符),代表了这里将出现一个参数,但里面没有参数的实际值。

实参(实际参数,Argument,Actual parameter ),表示的是在调用方法时传递的实际参数值。实参是没有对应的标识符的,实参通过形参来引用。

例如,方法定义Foo(int p),这里的p是形参;调用Foo(5),这里的5是实参,针对这一次调用来说,形参p引用了实参5。假设有变量 int n,则对于调用Foo(n)来说,实参是n的值(在到用之前要复制到堆栈上),此时形参p引用了实参的具体值。

:)

  回复  引用    
#31楼2009-04-14 14:19 | sumtec@beijing[未注册用户]
另外还有一个地方实在不认同,中文书就应该尽可能减少英文单词的出现(括号中的不算)。因为这本来就涉及到语言习惯的问题,外来词汇就应该翻译然后成为约定俗成或者国家标准。
所谓原汁原味并不成立,比如mark,不太明白为什么要保留成英文,难道中文没有能够说清楚的词汇吗?照这种思路,飞机、卫星这些词统统应该原汁原味,叫做airplain和satellite。我看这样不行,最终整个语言体系就会变得混乱,最后不是崩溃就是被瓦解。某些地区的语言就有这样的趋势。

其实要原汁原味就不要看中文了,看英文的都原汁原味。

再拿一个stub,到底是什么东西呢?明白的人说就是那个东西,不明白的问了也白问。百分百准确的翻译肯定不存在,否则翻译就不是什么难事了,就可以写个程序影射一下就解决了。叫做桩,或者别的什么,总比stub要好理解。也正因为不是百分百准确,所以也存在根据上下文有不同的翻译。

话说回来,stub那几个东西也确实比较难翻译。

  回复  引用    
#32楼2009-04-14 14:24 | sumtec@beijing[未注册用户]
@装配脑袋:
我说的就是你的意思啊,我的意思是,看前后Inherits后面的双引号中的内容的区别,即你说的`1[[...,可知文中的Notation指的是标记的方式,或者说是“格式”,总之翻译成符号在这里是不太合适的。

@搂主:
总体来说,这是个好贴。这些东西确是使应该要规范的。

  回复  引用    
#33楼2009-04-14 14:27 | sumtec@beijing[未注册用户]
@楼主:
既然您都说了parameter和argument这两个是笔误导致写反了,那赶紧得改改文章啊,不看回复的主会被误导的,这影响不好。呵呵

  回复  引用  查看    
#34楼[楼主]2009-04-14 15:10 | 包建强      
刚刚添加一条:bind、bound和boundary