进步进步再进步.........  
技术收藏
日历
<2026年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011
统计
  • 随笔 - 0
  • 文章 - 0
  • 评论 - 0
  • 引用 - 0

导航

常用链接

留言簿

搜索

  •  

最新评论

 
支持你!坚持下去,您能成功!
“批判”这个词对一个人不够尊敬,至少应该谦虚一点;
而且在公开诋毁他人名誉本身就是一种不好的行为……
楼主三思
与C++相关的一些术语的翻译和问题

4) inline。不少人用“内联”,我不喜欢这个造出来的新词。发明“内联”者想的是对程序实体的处理方式(加工方式,指将函数代码嵌入调用位置),而inline一词不仅关心这种处理方式,也强调运行方式和情况(指无需经过函数调用步骤而直接运行)。根据这些,我立刻想到的词汇就是“在线”,在各种技术领域常用的与此有关词汇如“在线控制”,“在线处理”,“在线工作”,“在线运行”,“在线设备”等。这些词的意思包括将设备装入加工线,在加工线上处理,在运行中直接做等等。inline function用的正是这个意思。因此我选择了“在线”。

许多年前看到C++的inline机制,当时的认识就是:这是宏与函数概念的结合,可以说它是“类型安全的宏”,或说是“在调用处展开的函数”。我脑子里的两个术语就是inline expanding和inline execution,没考虑应该用哪个中文词。

inline expanding指代码加工阶段将inline函数代码嵌入调用位置代码之中,当然这时还可以做某些优化,可以做一些部分求值(partial evaluation)工作。inline execution则指代码执行时无需创建活动记录(亦称frame),也无需执行函数的入口和出口序列,直接进入函数所生成的代码去执行。在意义上我们一定有共识,否则就不好谈了。

对inline function,目前最常见的译法是“内联”。这是个很怪的词,我觉得不符合中文习惯。“联”指独立实体之间建立关系,常见的词如“联络”,“联系”,“联合国”,“互联网”。过去知道有“外联部”,讲外联也是很合理的。而“内联”就荒唐了,从来只有“连为一体”而不能“联为一体”。“联”就是承认双方(或多方)的独立性。而inline 函数的代码则要与调用处的代码连为一体。因此,估计“内联”是“内连”之误,属于以讹传讹。从这个角度看,“内联”远不如“内连”或者“内嵌”。但是,“内连”和“内嵌”都难以表示代码执行时的动态情况。“内嵌”还有一个致命弱点,它很容易与(加工前的)静态函数嵌套相混淆。

因为inline函数牵涉到与程序有关的三个时间:源代码,加工后的目标代码,执行。贴切的词确实不容易选。正是在这种情况下,我选择了可称为“直译”的词。况且,“在线”也能表现代码嵌入(嵌入调用代码行之中,代码行是线性的序列),函数所生成代码的直接执行(在线执行,执行动作也是线性的序列)。当然,“在线”也是online的翻译。从直接的意思看,online是“在线上”,表达某种外物的在线。inline的直接意思是“在线内”,想说的是融为一体,我觉得这也可以称为一种在线。

http://www.is.pku.edu.cn/~qzy/books/cppl/words.htm
 
Copyright © martin Powered by: 博客园 模板提供:沪江博客