这段时间关注了一下BYOB 3.1,发现这是一个非常棒的编程平台,在Scratch 1.4中无法实现的许多事情,BYOB 3.1中都得到了非常好的解决,而且用一个非常棒的方式实现了OOP(面向对象编程)。现在我正在试图翻译BYOB 3.1的编程指南手册,想与大家共同讨论BYOB 3.1中一些专业词汇的翻译问题。
BYOB 3.1最重要的一个特征:Everything First-Class
这个特征就如果Java中大名鼎鼎的Everything is Object (一切都是对象) 一样
现在的问题是:First-Class 以及 First Class Data 应该如何翻译?
我现在基于自己对这个编程平台的初步认识,给出的翻译是:
First-Class 元类型
First Class Data 元数据
Everything First-Class 一切都是元数据
Offline
有关 First Class Data 定义的翻译:
以下是在编程指南中的定义,说得比较简略:
A data type is “first class” in a programming language if data of that type can be
● the value of a variable
● an input to a procedure
● the value returned by a procedure
● a member of a data aggregate
● anonymous (not named)
下面的这段更详细一些,摘自http://wiki.scratch.mit.edu/wiki/Build_Your_Own_Blocks_(Scratch_Modification)#First_Class_Data
The phrase "first class data" was coined by computer scientist Christopher Strachey, who argued in the 1960s that any data type that exists in a language at all should be first class. This means that data of that type
● can be the value of a variable.
● can be an input to a procedure (Scratch: block).
● can be reported by a procedure.
● can be a member of an aggregate (Scratch: list).
● can exist without having a name.
我给出如下译文:
“元数据”这个名词,由计算机科学家克里斯托弗·斯雷奇在1960年代的提出,他认为计算机编程语言中的任何数据都应该具有“元类型”数据的特征。
在程序中,如果某种类型的数据有如下特征,可以称之为“元类型”
● 这种类型的数据可以保存到变量中
● 这种类型的数据可以作为过程的输入参数 [在Scratch中“procedure 过程”就是一个command模块(译为“命令模块”)]
● 这种类型的数据可以作为函数过程的返回数据 [在Scratch中“function procedure 函数过程”是一个reporter模块,是有求解计算功能的模块,调用reporter将可以得到一个返回数据,reporter可直译为“报告模块”或译为“函数模块”]
● 这种类型的数据可以作为某个数据结构中的成员数据 [在Scratch中唯一的数据结构就是 list 链表,链表是一种构造能力极强的工具,结合“元类型”的实现,可以创建出几乎所有传统的数据结构]
● 这种类型的数据是可以独立存在的,不需要依赖于赋予给它的名称,而是可以直接使用
事实上,当BYOB 3.1将“procedure 过程”也实现为元数据,仍至于“一切都是元类型”之后,BYOB就自然而然地成为了OOP语言(面向对象编程语言)
Offline
查阅了许多相关的英文资料,最终确知 First Class 应该理解为形容词 “优等的” 或 “优质的” ,First Class Data 即为 “优质数据” 或 “优等数据” ,意思是:这种数据的编程可操作性非常好,这一点从 First Class 的说明上可以看到。补充说明:在 First Class 的特性中还有一点: can be constructed at run-time ,即“这种数据可以在程序运行时动态构建”。
相应的,有些编程语言中的某些对象虽然不完全符合 First Class 的特性规定,但能够符合大多数规定条款,有时候也称这样的对象是 Second-Class 的,也就 “次等” 或 “次优的”。例如,C 和 C++ 语言中的Function就是Second-Class 的,因为C中的Function只能静态定义,不能动态构建。但除了这一点之外,C语言中的Function符合剩余的全部特性规定,所以仍然是一种非常好的一类数据,即 Second-Class 次优的数据。
如上所述,将 First Class 翻译为“元类型” , 将 First Class Data 翻译为 “元数据” 是错误的! First Class 中的 Class 在语意上与 OOP 中的 “Class 对象的类” 并没有关联。
Offline
First Class 或可翻譯為 頭等 特級 甲等
zhq49 wrote:
查阅了许多相关的英文资料,最终确知 First Class 应该理解为形容词 “优等的” 或 “优质的” ,First Class Data 即为 “优质数据” 或 “优等数据” ,意思是:这种数据的编程可操作性非常好,这一点从 First Class 的说明上可以看到。补充说明:在 First Class 的特性中还有一点: can be constructed at run-time ,即“这种数据可以在程序运行时动态构建”。
相应的,有些编程语言中的某些对象虽然不完全符合 First Class 的特性规定,但能够符合大多数规定条款,有时候也称这样的对象是 Second-Class 的,也就 “次等” 或 “次优的”。例如,C 和 C++ 语言中的Function就是Second-Class 的,因为C中的Function只能静态定义,不能动态构建。但除了这一点之外,C语言中的Function符合剩余的全部特性规定,所以仍然是一种非常好的一类数据,即 Second-Class 次优的数据。
如上所述,将 First Class 翻译为“元类型” , 将 First Class Data 翻译为 “元数据” 是错误的! First Class 中的 Class 在语意上与 OOP 中的 “Class 对象的类” 并没有关联。
Offline
太复杂了。。。我看不懂。。。 :p
Offline