陈硕的Blog

吾尝终日而思矣,不如须臾之所学也。吾尝跂而望矣,不如登高之博见也。……君子生非异也,善假于物也。

原创 CC2e 术语:construction 译成“构建”还是“构筑”?收藏

新一篇: 《代码大全》到底讲什么? | 旧一篇: CC2e 术语:把 routine 译为“子程序”的理由

   

  construction 恐怕是《Code Complete(代码大全) 第二版》这本书里惟一值得讨论的术语。construction 本意是“建筑、建筑物”。在这本书里用来指软件开发过程中最主要的一项活动,软件开发的活动包括:问题定义、架构、需求、设计、construction、系统测试等等。construction 中的主要活动包括:详细设计、编码、调试、集成、开发者测试(单元测试和集成测试)。这也是一项把设计文档转变为代码的活动。相当于建筑行业的“施工”活动:把设计蓝图转变为建筑物。

  选择 construction 的译法的主要考虑是:这本书通篇都是在讲construction,这个词是这本书的关键概念,应该对这个词采用一个足够独特的译法。足以与 create、build、make 等区分。

  从目前的译稿看,construction 有三种候选译法“构建”“构筑”“构造”。

  我认为应该首先排除“构造”,因为它通常用于“构造一个对象”、“构造函数”。剩下“构建”和“构筑”,该选哪一个,我有点拿不定主意。译者们的意见也有分歧。

有译者认为:

“constrcution。这个词是全书的精髓所在,也是非常抽象的一个概念。虽
然作者曾经用"constrcution workers(建筑工人)"来做类比,但在软件行业
中并没有类似的说法,因此生搬硬套大概不会为人所理解和接受。这里我个人
还是建议采用"软件构建"这一译法,原因如下:construction的动作包含编程
工作中的各个细节,从设定到设计,从编码到调试,而"构"字有"结成、作品、
建筑"的意思,而软件中也有"构架"的说法,因此在这里引入"构"字可以解释
得通;但如果译为"构造",又容易和"构造器"相混淆(虽然这个词也不是最好
的译法),如果构造器是创建一个类的必经步骤,不妨把创建一个程序的必经
步骤的总和称为"构建",看上去更宏观一些("建设"、"建筑"、"建成")。
这样,这两个字结合起来可以表达"在相对宏观的层次上构想、构架、创造、
创建整体程序" 的概念。不知是否可以为广大读者所接受?”

  首先,我认为,不同的词(严格说是不同的概念)最好有不同的译法;而且含义越独特的词,译法也应该越独特,这样才不易混淆。举个有点极端例子,entropy 译为“熵”就非常好,绝对不会与其他词混淆。再比如,argument 和 parameter 都是函数的“参数”,不过前者是实参,后者是型参。如果原书严格区分这两者(甚至谈它们的相同与不同),那么中译本就不能都译为“参数”,否则读者肯定一头雾水。

  回到这本书,与 construction 含义多少相近的词还有 build、create 等等,这些词都算不上术语,。

  • build 建造,建设;例:建造一个子系统
    (注:build 还可能指“编译+链接”这项操作,例如 VC 的 build 菜单,这种情况单论。)
  • create 创建;例:创建一份文档

  那么 construction 的译法应该与之有所区分,“构建”和“构筑”看来都是不错的选择。(如果我们把 daily build 翻译为“每日构建”,那么 construction 就只能是“构筑”了。如果 construction 翻译成“构建”,那么 daily build 就只好保留原文——还好它只在702页至708页出现,影响不大。)

  “构建”还是“构筑”,我有点拿不定主意,想请您发表看法。

发表于 @ 2005年12月21日 18:51:00|评论(loading...)|编辑

新一篇: 《代码大全》到底讲什么? | 旧一篇: CC2e 术语:把 routine 译为“子程序”的理由

评论

#Liber Wang  发表于2005-12-25 14:56:00  IP: 70.31.34.*
对于contruction这个词,我有个深入为主的印象,是做“构造”讲的。因为“Object-Oriented Software Construction”一直翻译成”面向对象软件构造“。这本书是九年前出的,我听了这么多年,已经习惯了。
我在尝试着翻译此书,在书里,我把build译作”构建“。而在侯捷的中英文对照表中,build却是作”构筑“译的(当然还有其他的意义). 你可以参阅此表. 所以如果您让我作出选择的话,我不会选后者,因侯捷翻译在先。
另外,argument 和 parameter 都作"参数",并不区分实参和型参,否则,actual parameter和formal parameter就不好翻译了(详见OOSC第4章)
Another possible source of confusion is “parameter”. A routine may have formal arguments, representing values which the routine’s clients will provide in each call. The literature commonly uses the term parameter (formal, actual) as a synonym for argument (formal, actual). There is nothing wrong in principle with either term, but if we have both routines and genericity we need a clear convention to avoid any misunderstanding. The convention will be to use “argument” for routines only, and “parameter” (usually in the form “generic parameter” for further clarification) for generic modules only.
另一个可能的混乱源头是"参数(parameter)".一个例程可以有形式自变量(formal arguments),描述例程的客户端在每个调用中将会提供的数值. 学术上普遍使用术语参数(parameter)(形式的,实际的)作为自变量(argument)的同义字(形式的,实际的).对于任一个术语大体而言没有什么毛病,但是如果我们有例程和泛型,那么我们需要一个清晰的约定以避免任何的歧义.对例程约定只使用”自变量argument”,对泛型模块只用” 参数parameter”(为了更清楚地表达,通常用泛型参数的形式).

个人愚见,仅供参考.

Liber Wang
#Solstice 发表于2005-12-25 15:21:00  IP: 202.112.84.*
谢谢您的意见。

先说简单的,actual parameter 和 argument 都是“实参”,formal parameter 和 parameter 都是“型参”。
一般书里边不会混用两套说法。(CC2e 这本书用的是 actual parameter / formal parameter 这一对说法;别的讲编程的书有用 argument / parameter 这一对说法的。)

再说棘手的,以下是这本书第一章的第一段话:

你一定知道“构建(construction)”一词在软件开发领域之外的含义。“构建”就是“建筑工人(construction workers)”在建设一栋房屋、一所学校、乃至一座摩天大楼时所做的工作。在你年轻时,可能也曾用“硬纸板(construction paper)”构建过什么东西。按照一般的用法,“构建”是指建设的过程。构建过程可能包含有计划、设计、检查工作的一些方面,但在多数时候,“构建”就是指创建事物过程中动手的那些部分。

如果把其中的“构建”替换为“构造”,似乎就不太讲得通了。
#Liber Wang 发表于2005-12-26 04:35:00  IP: 70.31.34.*
我看了一下旧版本的翻译,他把construction翻译成"创建",好像也并没有影响我的理解.
我揣测您的意思还是想用"构建",这点我比较赞成,这比"构筑"好像来的习惯.(总觉得构筑是台湾用语).

Liber Wang
#Solstice 发表于2005-12-26 08:43:00  IP: 210.31.76.*
是的,译者投票情况,“构建”:“构筑”是2:1,在最后的定稿中很可能会用“构建”。
#broadview fans 发表于2005-12-28 17:35:00  IP: 58.48.142.*
大家多多参与吧,到时博文视点肯定会送东东的。我经常购买博文的图书,也参加他们的一些活动,感觉很不错。《代码大全》能在他们那里编辑出版,质量是有保证的。
#Solstice 发表于2005-12-31 16:03:00  IP: 202.112.84.*
嗯,construction 最后确定翻译为“构建”,这是比较常用的译法。
#图灵刘江 发表于2005-12-30 23:22:00  IP: 221.223.35.*
以我的经验,除非是全新的概念,否则最好不要自造新词,读者的接受度不高。侯捷先生受攻击,除了台湾腔之外,自造新词可以说是罪魁祸首。
#图灵刘江 发表于2005-12-30 23:24:00  IP: 221.223.35.*
顺便提及,右边的图是中文版的封面?似乎有失水准。如果没有好的alternatives,不如照抄原书。
#Solstice 发表于2006-01-04 19:31:00  IP: 202.112.84.*
如果这是一本起点更高的书,那么我们很可能会采用您的建议。
#redwood 发表于2006-01-04 16:23:00  IP: 218.25.32.*
我建议这种词汇可以不作翻译。
这种词汇在业界中基本上是耳熟能详的,翻译后反倒会产生歧义。
#redwood 发表于2006-01-04 16:24:00  IP: 218.25.32.*
我建议这种词汇可以不作翻译。
这种词汇在业界中基本上是耳熟能详的,翻译后反倒会产生歧义。
#muf 发表于2006-03-21 17:38:00  IP: 218.5.3.*
其实不管是实参还是型参,都不好理解啊。我用了多年的C/C++,还真从没去理睬什么是实参什么是型参。

最初谁译的型参,真不好搞懂啊,看起来象是直译。
#Solstice 发表于2006-03-21 19:05:00  IP: 210.31.76.*
“实参”是“实际参数/实在参数”的缩写。
“形参”是“形式参数”的缩写,前面我写错别字了。
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 陈硕