小刀人
-No business too small, no problem too big.
<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
公告
  • Learn,Think,and Imagine...

    正在看的书:

    点击发送消息给我

留言簿(6)

随笔分类

随笔档案

文章档案

相册

CSDN

VC知识库

开发站点

技术blog

搜索

最新评论

阅读排行榜

评论排行榜

 
VC知识库BLOG   首页  新随笔  联系  聚合  登录 
  随笔-23 文章-0 评论-61 Trackbacks-0

注:本文的一部分内容已经在WAP,C++ 及其它.....文中发表。这里是原来的全文。

技术英语(1)
技术英语论坛8月17日开通以来,受到广大网友的热情关注。在广大网友的积极参与下,论坛的热烈而又良好的学习气氛感染了我们每一个到技术英语论坛的朋友。现将论坛8月17日到9月25日的精华帖子和较好的译文编撰成文,供大家学习时参考。
1、主题: Translate Chinese! 作者: VcHelper (书童)???? 回复次数: 9 发表时间: 2004-8-24 19:43:28
原文:Wireless Application Protocol (WAP) is a result of continuous work to define an industry-wide specification for developing applications that operate over wireless communication networks.
译文:无线应用协议(WAP)是人们为定义适用于开发无线通信网络上运行的应用程序的行业标准而不懈努力的结果。
辨析:WAP是移动通信领域的一个重要的协议名称,实际上其标准的定义是:Wireless application protocol (WAP) is an application environment and set of communication protocols for wireless devices designed to enable manufacturer-, vendor-, and technology-independent access to the Internet and advanced telephony services.
2、主题: "the nuts and bolts of specific language features"怎么翻译?? 作者: eyesonyhm (书童) 回复次数: 3发表时间: 2004-8-25 15:49:56
原文:The nuts and bolts of specific language features.
译文:特定语言特征的具体细节。
辨析:nuts and bolts的解释:The basic working components or practical aspects.即基本组成部分(如机器的工作部件, 运转部件等); 简单的事实, 基本功; 起码的职责(nuts and bolts language 浅显易懂的话)。
"[proposing] lofty goals without specifying the nuts and bolts of how they are to be achieved"(Village Voice)
“建议如何去实现没有具体细节的崇高目标”(乡村之音)
3、主题: Translate it into Chinese !? 作者: zhaotide (书童)
回复次数: 8 发表时间: 2004-8-25 20:11:22
原文:Despite the advent of new programming languages and technologies, C++ is the workhorse for many developers, and is likely to remain so for a long time to come. The main reasons for C++'s prominence are its flexibility, portability, efficiency, and performance..
译文:尽管新的编程语言和编程技术不断涌现,但C++作为软件开发者的首选工具的地位仍然不可动摇,并且这种地位将会继续持续很长一段时间。其主要原因是C++具有灵活、轻便、高效、高性能的显著优势。
辨析:这里有个词比较重要就是workhorse,他放在这里的语境里就不是吃苦耐劳者、广为应用的设备的意思,而译为“首选工具”比较符合上下文的意思。这是我在某国外开发站点上截取的一段关于C++的论述。我想,不论有再多的新的开发工具走进我们的视线,C++永远是我们的挚爱,C++ forever!
4、主题: Translate it into Chinese !—“brute-force attack”? 作者: zhaotide ( 书童) 回复次数: 14 发表时间: 2004-8-26 18:34:37
原文:A common threat Web developers face is a password-guessing attack known as a brute-force attack. A brute-force attack is an attempt to discover a password by systematically trying every possible combination of letters, numbers, and symbols until you discover the one correct combination that works. If your Web site requires user authentication, you are a good target for a brute-force attack.
译文:一个网络开发者常常遭遇到的威胁就是针对网络以密码猜测方式的攻击,这种攻击方式颇有威名---“暴力攻击”。所谓“暴力攻击”,就是通过尝试所有字母,数字,字符的每一种可能的组合方式来达到破解密码的目的! 如果你的Web站是需要用户认证的,那么你就是暴力破解的好目标。
辨析:brute-force attack—暴力攻击是非常有效的攻击方法之一。在翻译的跟贴中,lbw网友将原文最后一句译成:如果你的网址需要使用用户权限,那么你就可能成为这种攻击方式的目标! user authentication应译成“用户认证”,用户权限是与管理员权限相对应的,显然它们都是暴力攻击的目标,用户认证则是一种机制,所以用户权限没有用户认证准确。而且good target的good也应译出,否则会对原文的意思有影响。
5、主题: About Interfaces—Translate it ! 作者: zhaotide(书童) 回复次数: 2发表时间: 2004-8-27 13:45:22
原文:Interfaces provide a convenient means of resolving the tension that sometimes occurs between what a class is and what it can do. When a given Java class "implements" some number of interfaces, the instances of that class can serve anywhere that an object implementing one of those interfaces is required. (The name of an interface can be used as a reference designator for an object, for example, in a formal argument to a function.) Thus, the interface name can be used as a reference to a heterogeneous set of objects that implement that interface. This may sound very much like inheritance-based polymorphism, but there is a key difference: Interfaces allow you to express situations that apply polymorphism to objects that do not share a common base class.
Implementing an "interfaces" design goal in C++ is approachable and direct. In fact, although the word "interface" is not a reserved word in C++, there are at least three good ways to express the design intent of interfaces in C++.
译文:时常有人会问“这个类是什么,它能做什么”的问题,接口则以一种便利的方法解决了这个问题。如果一个JAVA类实现了一些接口,那么这个类的实例就可以为一些其它对象服务,而条件是只要在其它对象中实现了以上接口之一即可。(接口名可被用作一个对象的引用指示符,例如函数中的形参)。因此,接口名可以用作指向一组实现了此接口的异类对象。这么说听上去非常象继承中的多态机制,但它们有一个关键的区别: 你可以用接口表示这类应用环境,即将多态机制应用到没有共同基类的对象上。
???? 在C++中,实现“接口”是简单而直接的。事实上,“接口”一词在C++中并非保留字,至少有三个不错的方法可以在C++中表示接口的设计意图。
辨析:要了解面向对象编程就必须要知道interface,这两段关于“接口”论述,稍长。所以,译起来还是有点难度的。而zyq654321译的很好,heterogeneous ,inheritance-based polymorphism等术语都译出了,而且语句通顺,可以说是“信、雅、达”的目标都达到了。Excellent!
6、主题: Function Pointers—Translation 作者: zhaotide (书童)
回复次数: 4? 发表时间: 2004-8-27 21:33:37
原文:Function pointers are the variables, which stores an address of the function that is to be called. These function pointers should always have the function signature associated with them.
Consider the following example:
int (*p_Fun)(int,int);
This line declares the function pointer, which can contain the address of only those functions, which takes two integers as a parameter and returns int as a parameter. Once the function pointer contains a valid address of function, it can be used to invoke that function.
Now,let see how to use this declared function pointer while calling a function.
int Show_Add(int Val1,int Val2)
{
????? return Val1 + Val2;
}
p_Fun=Show_Add;???????????????????? // Works fine
p_Fun=&Show_Add;?????????????????? // Works fine
int Ret_Val=p_Fun(10,20);????????? // Works fine
int Ret_Val=(*p_Fun)(10,20);???? //? Works fine
We can use typedef to give convenient names to complicated data types.
typedef int(*FunAdd)(int,int);
FunAdd ptr_Fun;
In this,ptr_Fun is a function pointer which will point to the function which will take two integers as an argument and returns integer.
ptr_Fun=Show_Add;?????????????????? // Works fine.
ptr_Fun(20,30);??????????????????????? // Works fine.
By default, the compiler takes it as a __cdecl calling convention. This calling convention can affects the? factors like name mangling for a function, passing of arguments to the function(i.e. from right to left or from left to right) and stack cleanup responsibilities.
Function pointers provide a way of type checking in C++ at the compile time.
译文:函数指针实际是变量,它保存了被调用函数的地址。函数指针必须总是指向与它相关联的函数地址。
思考一下这个例子:
int (*p_Fun)(int,int);
这条语句声明了一个函数指针,并指明此函数指针所指向的函数必须符合的要求:包括两个int型参数和返回一个int型值。 一旦函数指针指向了一个有效的函数的地址,那么就可以通过这个指针调用具体函数。
现在我们可以看一下用函数指针来调用函数。
int Show_Add(int Val1,int Val2)
{
????? return Val1 + Val2;
}
p_Fun=Show_Add;???????????????????? // 正确
p_Fun=&Show_Add;?????????????????? // 正确
int Ret_Val=p_Fun(10,20);????????? // 正确
int Ret_Val=(*p_Fun)(10,20);???? //? 正确
当然,我们可以使用typedef定义符来简单化函数指针的定义。
typedef int(*FunAdd)(int,int);
FunAdd ptr_Fun;
此时,ptr_Fun是一个函数指针,它指向这样定义的函数:包含两个int参数并返回一个int型值。
ptr_Fun=Show_Add;?????????????????? // 正确
ptr_Fun(20,30);??????????????????????? // 正确
一般场合,编译器使用__cdecl调用规则。 但此调用规则会产生一些影响,比如一个函数的名称重整(name mangling是指C/C++会把用户定义的标志符转换为相应的内部名称), 函数参数的传递规则(如是由右到左还是从左到右),以及(谁)负责进行堆栈清除工作。
在编译中,函数指针在C++编译时间中提供了一个类型检测的方法。
辨析:zyq654321除了最后一句“compile time” 编译时间这个词漏译,其他都译的很好的。还有“stack”一词,是只译为“栈”还是译为“堆栈”呢?一般指从一端按后进先出的原则进行存取的数据结构时译为“栈”,当指堆栈存储器及其寄存器的一部分,用来临时储存信息,最先进来的项最先恢复时应译为“堆栈”比较适宜。
而且对于name mangling译者也做了解释,这里多做一点解释:名称修饰或名称重整(name mangling)。C++的名称修饰是编译器将函数的名称转变成为一个唯一的字符串的过程,这个字符串会对函数的类、其命名空间、其参数表,以及其他等等进行编码。C++的命名修饰适用于静态成员函数,也适用于非静态成员函数。静态函数的命名修饰的一个好处之一,是能够在不同的类里使用同一个名称来声明两个或者更多的静态成员函数--而不会发生名称上的冲突。该术语有很多种译法,比如:名称重装,名称窜改等等,这时最好在译文中加入原文,以免读者迷惑。
7、主 题: c primer plus 4 edition中的一段话 作 者: steven_tyler (书童) 回复次数: 9 发表时间: 2004-8-29 9:33:15
原文:typedef: A Quick Look
The typedef facility is an advanced data feature that enables you to create your own name for a type. It is similar to #define in that respect, but with three differences:
Unlike #define, typedef is limited to giving symbolic names to types only and not to values.
The typedef interpretation is performed by the compiler, not the preprocessor.
Within its limits, typedef is more flexible than #define.
Let's see how typedef works. Suppose you want to use the term BYTE for one-byte numbers. You simply define BYTE as if it were a char variable and precede the definition by the keyword typedef.
typedef unsigned char BYTE;
From then on, you can use BYTE to define variables:
BYTE x, y[10], * z;
The scope of this definition depends on the location of the typedef statement. If the definition is inside a function, the scope is local, confined to that function. If the definition is outside a function, the scope is global.
Often, uppercase letters are used for these definitions to remind the user that the type name is really a symbolic abbreviation, but you can use lowercase, too:
typedef unsigned char byte;
The same rules that govern the valid names of variables govern the name used for a typedef.
Creating a name for an existing type might seem a bit frivolous, but it can be useful. With the preceding example, using BYTE instead of unsigned char helps document that you plan to use BYTE variables to represent numbers rather than character codes. Using typedef also helps increase portability. For example, we've mentioned the size_t type that represents the type returned by the sizeof operator and the time_t type that represents the type of value returned by the time() function. The C standard says sizeof and time() return integer types, but it leaves it up to the implementation to determine which type. The reason for this lack of specificity is that the ANSI C committee feels that no one choice is likely to be the best choice for every computer platform. So they make up a new type name, such as time_t, and let the implementation use a typedef to set that name to some specific type. That way they can provide a general prototype such as the following:...........and so on..........
译文:typedef:摘要
typedef解释符是一种高级数据特征,用户可以通过它为一某一类型建立自己的定义名称。从这一点上它与#define有些类似,但具体有三个区别之处:
与#define不同,typedef只能用于有意义的类型名而不能用于定义值类型。typedef解释符的处理在编译器中进行,而不是在预处理器中。在typedef的限制内使用它将带来比#define更大的灵活性。
我们看一下typdef的工作过程。假设你用BYTE来表示一个字节长的数字,你只须简单在定义前输入关键字typedef就可以定义一个char类型为BYTE类型
typedef unsigned char BYTE;
完成声明后,就可以使用BYTE来定义变量了:
BYTE x, y[10], * z;
??? 新类型的定义范围大小取决于typedef声明的位置。如果typedef定义在某一函数内,那么它就是局部的且只能用于函数内;如果typedef定义在函数外部,此时它就是全局性的。
多数情况下,我们采用大写字母进行定义,这样的好处是告诉用户,这一类型名是一个有意义的类型名简写。当然你也可以选择使用小写字母。比如这样 typedef unsigned char byte;
typedef的有效名称与变量有效名称采用同一命名规则。
??? 可能有人会认为为一个现有类型建立一个新类型名会带来一些麻烦,然而这种方法确是有用的。在上面的例子中,用BYTE代替unsigned char有助于你明确指出文件中的BYTE变量是用来表示数字而非字符。另外,typedef有助于增加程序的可移植性。例如,提到size_t类型我们就知道这是sizeof操作的返回值类型,而time_t是time()函数的返回值类型。在C标准库中指明sizeof和time()两者返回的是整型,但是无法对它进行前期检查,只能等到执行时确定其类型。 产生这种缺乏特征性的原因是ANSI C委员会认为对于所有计算机平台来说不可能同时存在一个最佳的选择。鉴于这种情况,委员会的委员们制定了一种新类型名,例如time_t,并用typedef的声明功能将之声明为一种指定类型。
辨析:steven_tyler对“With the preceding example, using BYTE instead of unsigned char helps document that you plan to use BYTE variables to represent numbers rather than character codes.”的意思有点不太理解,既然是char为何用数字表示?
实际上,char在C++中作为“整值类型(intergral type)”之一,通常表示单个字符和小整数,它可以用一个机器字节来表示。对于上面的问题,zyq654321解释说:首先它们是一个东西,这是基础;之所以变了几个名,你的文(中)也有解释的;第一,可读性和移植性高了.第二可以在C标准中进行类型检查。
unsigned char的数值范围是0-255,等价于与其相应的ASCII码字符。字符数据当然可以作为整数参加运算。
8、主题: The Standard Template Library (STL) —Who can translate it? 作者: zhaotide (书童)所属论坛: 技术英语 发表时间: 2004-8-30 21:09:29
原文:The Standard Template Library (STL) provides C++ programmers with a library of common data structures -- linked lists, vectors, deques, sets, and maps -- and a set of fundamental algorithms that operate on them. C++ programmers no longer need to implement these basic data structures and can be assured that the data structures provided by the STL perform efficiently and correctly.
译文:标准模板库(STL)为C++编程者提供了一个常用数据结构库,包括以链表(linked lists)、向量组(vectors)、双端队列(deques), 集(sets)和图(map),以及用于操作这些结构的一套基本算法。由此带来的好处是C++编程者在实际工作中不必花精力在实现基本数据结构上,因为STL为他们提供了执行高效且正确的基本数据结构。
辨析:标准模板库是C++的伟大之处之一了。所以我选择了这段英文供大家来译。
跟贴中有两个小问题:首先,需要适当增加内容以便于理解,但同时也要密切贴合原文。其次,linked lists这个词有的网友译为“连接过的list”、链接形式实现的列表、双向链表都不是很好的。其实就是链表。
9、主题: Microsoft's COM (Component Object Model) technology—Translate it! 作 者: zhaotide (书童) 发表时间: 2004-9-1 13:14:10
原文:Microsoft's COM (Component Object Model) technology can be considered as an analogous to black hole in astronomy. COM is so interesting that you cann't get out of it once you dare to enter in the world of COM.COM is a specification that provides the standards to build the software components that can be changed, modified dynamically without breaking the existing components in an application. COM defines the protocol (contract) through which the software components can communicate with each other in an application. COM is not a language; it is a standard, which tells us how to write the reusable components. COM components can be written in various languages like C++, VB and Java etc. COM component provides the services to its clients via object-oriented approach.
译文:可以把微软的COM(Component Object Model组件对象模型)技术比作天文学中的黑洞。只要你敢于进入COM的世界,它的迷人魅力就会让你深陷其中。COM是一种规范,它提出了建立软件组件的标准,在不打断应用中现有组件的正常工作前提下,软件组件可以被动态的更换,修改。同时COM定义了标准协议以实现应用中的软件组件相互间的通讯。COM并不是一种语言,而是一种标准。应用此标准指导我们如何写出可重用组件。可以用多种语言实现COM组件,如C++, VB和JAVA等。COM组件通过面向对象方法为(应用的)客户端提供服务。
辨析:这篇文章翻译本身没有什么太大的问题,只是好像部分网友还是对微软有些抵制的,同样也有不少网友正相反。其实,抛开公司层面,只要是好的技术就值得我们学习。
10、主题: The .NET BCL (Base Class Library)—Translate it!? 作者: zhaotide (书童) 发表时间: 2004-9-2 20:59:36
原文:In addition to providing thousands of classes and types that enable us to create richer and more robust class hierarchies, the .NET BCL (Base Class Library) also defines many interfaces that enable the class writer to incorporate powerful features simply by implementing a given interface and its members. This concept, called interface-based programming, creates a contract between the implementing class and its clients, such that the client can be assured of what to expect from the class. The BCL even provides special operators and methods, such that client code can verify that a given interface is implemented before attempting to use it.
译文:.NET基类库(Base Class Library)不仅通过其内部数以千计的类和类型使我们设计出更加丰富、更有生命力的类架构体系,而且定义了众多的接口,通过这些接口,类的设计者只须简单的实现一些指定接口及其接口成员就可以将(新设计的)强大的特性元素整合进来。这种概念称为基于接口的程序设计,它在实现类和类客户之间建立一种合约,通过这个合约,类客户可以被确保从实现类中获得所期望的(数据或操作)。此外BCL甚至提供了一些特别的操作符和方法,以使客户代码在调用接口前可以先检查此接口是否已被实现。
辨析:介绍.NET基类库(Base Class Library)一段文字,提出了基于接口的程序设计的概念。
11、主题: 帮我翻译一下好吗? 作者: LeavesOfFloat (秀才) 回复次数: 5 发表时间: 2004-9-8 8:34:55
原文:The successful systems analyst requires a broad understanding of organizations, organizational culture, and operation. (摘自《Modern Systems Analysis and Design》)
译文:一个成功系统分析人员需要对组织、组织文化以及运作过程的明晰理解。
辨析:“broad understanding”译为“明晰理解”较好。broad是常用词,灵活多变。其实大家如果在工作、学习中有什么英文内容不能理解,完全可以提到技术英语论坛让大家帮你。
12、主题: 请大家帮忙翻译一下 作者: eyesonyhm ( 书童)
回复次数: 19 发表时间: 2004-9-9 14:43:14
原文:Received when the entire document to which this DHTML behavior is attached is parsed. This notification is different from the onload event or IHTMLElement2::readyState property, both of which indicate that the entire document and associated content, such as images, have downloaded.
译文:当被绑定着动态html (DHTML)行为组件的整个文档内容被解析时,(用户)会收到(通知)。这一通知不同于onload事件或IHTMLElement2::readState属性,因为后两种情况表明整个文件及与文件相关的内容如图像都已下载完毕。
辨析:这可算是技术英语论坛迄今为止最热的帖子了。大家讨论的核心是第一句中的“attached”,其实这个词意思很多,可以译成“附着”、“附加”、“连接”。这里考虑该句的意思,对整个文档的行为组件,有种动作的含义,如果译成“附着”,个人觉得力度不够,还是“绑定”好些。
13、主题: 不好意思,再请大家翻译一下 :) 作者: LeavesOfFloat ( 秀才) 回复次数: 5 发表时间: 2004-9-9 8:46:58
原文:System development is a practical field. A coverage of current practices as well as accepted concepts and principles are essential in a textbook.
??? Standards of practice, a sense of continuing personal development, ethis, and a respect for and collaboration with the work of there are genenal themes in the textbook.(Modern System Analysis and Design)
译文:系统开发是一个实践领域。本书中它的精髓不仅含概了当前的实践(经验),同样也包括中(实践中)所获证实的概念和原理。
??? 本书中对实践的标准有一个概括性的主题,即它(在某种意义上)是一个人的不断开发的过程,同时也是在工作(实践)中相互尊重和相互合作(过程)。
辨析:System development为“系统开发”。本贴的作者,最后一个跟贴,告诉大家这是从一本书里选的,并告诉大家书名。可怜的zyq654321在没有前后文的情况下,译的虽然好,但是意思还是有偏差。所以,网友们对自己要大家译的内容需要介绍一下上下文的意思,或者你能确保没有上下文也不会产生误译,否则可能就会有点误人误己了。
14、主题: The std::vector Array—Translate it! 作者: zhaotide (书童) 回复次数: 3 发表时间: 2004-9-7 16:27:23
原文:The vector array is part of the standard namespace (std::); it allows you to easily create a dynamic array of elements. The vector class belongs to the STL (Standard Template Libraries) and is a template class in itself; this means that we can create an array of almost any data-type or object within our programs when using it. The vector class handles most of the memory management for you.
A vector array would be ideal in a situation where you need to store dynamic data; for example, an array that changes in size during the program's execution.
译文:向量数组(vector array)是标准命名空间(std::)的一部分;它允许你很容易地创建动态数组。vector类属于标准模板库STL(Standard Template Libraries)并且是STL的一个模板类;也就是说你可以用它在我们的程序中创建几乎所有数据类型(data-type)或对象的数组。 vector类会处理大部分的内存管理工作。
在你需要储存动态数据的情况下最好用向量数组。比如,在程序运行(时刻)改变数组的大小。
辨析:vector array是开发时常用的,C++里的标准数组。这是一段描述vector的文字,包括它的所属、用途、内部运作机制。
15、主题: I had learned a new word: unbreakable loop 作者: 乾坤一笑 ( 举人) 回复次数: 5发表时间: 2004-9-21 11:57:05
原文:unbreakable loop
译文:死循环或不可中断循环
辨析:linux内核原代码boot.s部分的注释文中有一句:The loader has been made as simple as possible, and continuous read errors will result in a unbreakable loop.
以上是技术英语论坛这些天的一些帖子和我个人的一些论述,供大家参考。还有很多好贴比如hangwire的“职场学英语的经验谈”系列等等都非常值得一读,恕不能一一列举。
如果大家都能充分用好这个“技术英语”论坛,切实解决自己工作或学习中的实际问题,提高自己的英文水平,那就是VC知识库所最期望的了。
用Codeguru的About Us里的两句话作为我对技术英语论坛的期望和本文的结束语吧:Most of the people who contribute code articles to CodeGuru(here) are the same people who found and used something from here. Sharing works.

?

posted on 2004-10-12 10:03 小刀人家 阅读(6578) 评论(6)  编辑 收藏
Comments
  • # re: 技术英语(1)
    hangwire
    Posted @ 2004-10-14 00:54
    看着太费劲了。
  • # re: 技术英语(1)
    zhaotide
    Posted @ 2004-10-14 10:24
    本来是带格式的看起来舒服些,后来wangjun告诉我脚本错误,无奈又改了。原因是我在word里写时从论坛粘了部分内容,有些内容有超链接。引起问题。内容太多,早知道分开了。
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]