Currying的翻译

函数Currying,是我所一直不能确定的英文翻译之一 ,另外还有一个Web的翻译。

函数Currying的意思就是将参数和函数关联起来,变成一个新的函数。比如一个二元参数f a b

当给出f 1的时候,应该返回什么呢?一般的语言中,要么是将b设为一个默认值,要么就是直接出错,而当有了Currying,那么f
1其实返回一个函数g x = f 1 x。
当然这个描述也不够好。

其实其命名是为了纪念一个逻辑学家 Haskell Curry 的――函数式语言Haskell也是为纪念这个人,当然这个东西并不是他第一个发现。

既然作为姓名,数学中可能不会进行翻译,就叫做Curry化,或者柯里化,不知道还有什么更好的翻译方法,能较为直接地体现其真正的含义。

给“Web”一个准确的翻译

一般提到“web”这个词,大家都知道它是“网”的意思,而且还是“蜘蛛网”。在it界,大家一般都知道是“网络”的意思,但是很奇怪的是,“net”也一样是“网”,同样表示“网络”的意思,这就很奇怪了。到底两者应该如何翻译?

我查了金山词霸,web的定义是:

n. 环球网
n. 网, 蛛丝, 蹼, 翼手, 织物, 圈套, 卷筒纸

而net的定义是:

n. 网, 网络, 网状物, 净利, 实价

而且在计算机中,一般等同于network这个词:

n. 网络, 网状物, 广播网

而如今在国内,始终没有办法很好地区分这两个词,而往往涉及到web的时候,都会忽略不翻译,比如web appliaction,一般不会翻译成网络应用,而是说成web应用,web service,也往往翻译成web服务,而不是网络服务。web 2.0更没有人去翻译它了,绝不会看到有人说成是“网络2.0”。为什么不翻译,就是因为net和web有区别,但直接翻译过来,比如web service,是一种软件技术,但说网络服务,很多人会和network service,也就是诸如拨号上网、宽带之类的相混淆。

在学校上课的时候,学过几门和网络有关的课,比如“网络工程基础”,“网络编程基础”等课,回忆一下其中讲过的tcp/ip的协议栈,里面是这么讲的:

  1. 应用层
  2. 传输层
  3. 互连层
  4. 网络接口层

而我记得很清楚,网络工程中,基本没有涉及到很多应用层的东西,网络编程基础,一般教授的是传输层的编程,至于应用层,也仅仅教授了应用层很底层的知识。

再考虑网络工程这个词,英文是network engineering,而网络工程考虑的问题多数是硬件、如何组网,可以说这些是互联网比较底层、基础的东西。

反观web 2.0的定义,可以发现,其中多数是有关最终用户的内容,是直接和人打交道的。
我们现在就可以下结论了,net是我们最宽泛的“网络”概念的底层基础,而web则是指顶层的应用,甚至包含了人与人利用web进行的交互。

概念区分清楚了,那么如何给web一个准确的翻译,金山词霸给出的“环球网”读起来也不是很顺口,我现在也没有什么十分好的答案,希望大家能给我出个主意。