日期:2014-05-20  浏览次数:20653 次

名词王国里的死刑(转载)
刚看到的一篇文章, 大家来讨论下

原文地址

翻译自Steve Yegge的大作《Execution in the Kingdom of Nouns》原文在 这里

另外第一次翻译,很多地方不准确或根本翻译不出来,见谅~

翻译正文
Hello,world!今天我给大家讲一个关于Java魔鬼国王和他在全国范围内驱逐动词的故事。

注意:这个故事并没有什么圆满结局。如果你心灵脆弱或者吹毛求疵的话,这个故事不适合你。 如果你易于动怒或喜欢在别人的博客上妄加评论, 那么请立即停止阅读。

在我们开始这个故事之前,先让我们熟悉一下背景:

溢出的垃圾
所有使用Java的人都喜欢“用例”,所以让我们以一个用例开始吧:倒垃圾。就像这样:“Johnny,快去倒垃圾,他都快溢出来了!”

如何表达倒垃圾这一活动呢?如果你是一个正常说英语的人,你可以粗略地用以下几句话来描述它

在水池下取出垃圾袋
带着垃圾袋去车库
把它扔到垃圾桶里
走回来
洗手
坐回沙发上
继续玩你的电视游戏(或者干其他的事)
即使你不用英语思考,你也会想象出一系列类似的动作。 不考虑你选择的语言,或者采取的具体步骤,取决于你采取的行动,倒垃圾是一系列终止于垃圾在外面,你回到屋子里的动作。

我们的思想充斥着各种或勇敢的,或暴躁的,或激昂的动作。 我们生活,我们呼吸,我们走路,我们谈话,我们笑,我们哭,我们希望,我们害怕,我们吃,我们喝, 我们走,我们听,我们倒垃圾。 我们能自由地“做”和“行动”。假如我们只是石头,生活没准还算好,但是我们不会自由。因为我们可以“做”事,所以才会自由。

我们的生活也同时充斥着各种“名词”。我们吃“名词”(食物),我们从商店买“名词”(商品),我们坐在“名词”(凳子)上。 “名词”(石头)可能会忽然砸到你头上,在你的“名词”(头)上弄一个“名词”(大包)。 名词即事物,想想没有了事物我们会怎样? 但他们仅仅只是事物,比如: 意味着结束或者结束本身,或者一些贵重物品,或者我们周围经常看到的事物的名字。 这是一座建筑,那是一个石头。任何一个小孩子都能指出名词,仅此而已。 发生在名词身上的 “变化”才是最有趣的事情。

变化需要动作。 动作是生活的调料。 动作甚至给了调料以调料! 毕竟除非你“吃”它,你是不会感到香这种味道的。 名词也许无处不在,但是生活一直在变并一直有趣的功劳还是在于动词、

当然,除了名词和动词,我们还有形容词,介词,代词,冠词,连词,语气词,和许许多多其他让我们构造有趣语言的词汇。 它们都在语言中扮演着自己的角色,而且每一个都很重要。 如果它们哪一个不存在了的话,那是挺遗憾的事情。

那么,如果有一天我们不再用动词了,你是不是感到很奇怪呢?

在下面我要给大家讲的故事里,这件事情真的发生了……

名词王国
在Java王国中,国王Java以铁腕统治着他的国家,而他子民的思考方式也并不和你我一样。 在这里,你可以看到,名词是十分重要的并直接服从国王的命令。 名词是最重要的居民,它们身穿艳丽的服装显得高贵而优雅,而这些衣服是由形容词提供的。 而形容词哪,也很满意它们的生活,当然,他们不可能像名词那么高贵, 不过相比于动词来讲却幸运得很多。

因为,动词在Java王国里的日子,相当,相当的糟糕。

奉国王Java的法令,动词是隶属于名词的,但他们不仅仅是宠物而已。 或者说连宠物都不是,在整个国家,动词负担起所有的劳力工作。 实际上,他们是王国的奴隶,至少是 农奴或者契约奴之类的。 Java王国的居民对自己的生活还是比较满意的,他们从来没有想到会发生什么变化。

动词负责王国里的所有工作,但是仍然获取不到任何尊重,甚至都不允许单独出来。 如果一个名词被发现在公共场合出现,它会立即被名词逮捕。

当然“逮捕”也是一个动词,他也从不被允许单独行动;你必须创造一个“动词逮捕着”来协助逮捕。 但是“创造”和“协助”哪?这样的话,“创造者”和“协助者”也各自在这个工作上 伴随“创造”和“协助”起到了重要的作用。

国王Java,在他的上帝Sun(现在是Oracle了吧…译者注)的指引下,时不时地威胁要将所有动词驱逐出王国。 如果那一天到来了,他们当然需要至少一个动词来做 各种工作,而从国王残忍的幽默感上猜测,这个动词很可能就是“执行”。

动词“执行”(execute),和它的亲戚“运行”,“开始”,“走你”,“做”,“就这样做” 或者相似的什么词可以通过找到合适的“执行者”来替代任何其他的动词。 想等(wait)一下? Waiter.execute().刷(brush)牙(teeth)?ToothBrusher(myTeeth).go().扔(take out)垃圾(garbage)?TrashDisposalPlanExecutor.doIt()。 没有任何 一个动词是安全的,一切动词都会被执行的名词而取代。

在这种精神更加泛滥的角落,名词已经把动词驱逐干净。 不仔细看的话,你会觉得仍然有动词存在,比如耕种或倒茶壶,但是一旦仔细观察, 真相便浮出了水面:名词可以随意 命名紧跟在它们后面的动词“执行”,而不改变自身的角色。 所以,当你看到“耕地者”在“耕地”,“倒茶壶者”在“倒”或者说“注册管理者”在“注册”, 你真正看到的是魔鬼国王Java的 “执行者”大军,只不过他们披着所有者的外衣而已。

在其他王国里的动词
在其他编程语言的王国中,倒垃圾是一件很直白的事情,和我们用英语表述的十分相似。 在Java王国中,数据实体是名词而函数是动词,而在其他王国中却不然:王国的居民是混在一起的, 而且在能顺利完成工作的前提下,只要他们愿意,既可以是名词也可以是动词。

比如在附近的C的领域,JavaScript的地盘,Perl的地盘和Ruby的地盘, 他们可能会把倒垃圾这件事分解成一系列的动作(或者叫做动词或者函数)。 如果他们将这些 动作以适当的顺序应用于适当的事物(拿垃圾,把它带出去,扔到垃圾桶里等等),倒垃圾的任务就圆满成功了。 在这个过程中根本不需要执行者或其他的伴随者这出现。

在这些王国里,真的没有必要创造这么多的包裹器来包裹动词。 他们没有“垃圾倾倒策略”之类的名词,或者“垃圾倾倒地点定位者”来只是你倒垃圾的路径, 也没有“倒完垃圾后的回调”来保证你倒垃圾后回到自己的沙发上。 他们只是写一些动词来操作名词,并创建一个主要的名词,例如,提出垃圾(take_out_garbage())并把一些需要做的子动作放在里面。

在这些王国中,当需求提升的时候,也通常有一种机制来生成比较重要的名词。 如果这些精明的创造者创造出了一个全新的名词,比如房子,马车,或者耕起地来比人还快的机器, 他们会被给予一个统一的概念:类。 而人们会给类一个名称,一个描述,一些状态和一些操作建议。

这些王国与Java的不同之处在于,动词是允许单独出现的,你没必要创造新的名词去束缚他们。

Java王国的人一种轻视的态度看待他们的邻居;而这也是程序诸王国的现状。

如果你挖个足够深的洞…
在世界的另一边,有一篇贫瘠的居住地。 在那里,动词居民的地位十分之高。 这就是函数式王国,包括Haskellia,Ocamlica,Schemeria和一些其它的国家。 因为附近的国家很少,他们几乎不与Java王国何其附近的国家有接触。 也正因为这样,函数式诸国们相互轻视,并有事没事的时候打一仗以排遣寂寞。

在函数式王国里,名词和动词一般被看做同样等级的居民。 但是,名词,对是名词,基本上整天无所事事。 他们的出现在做事或者执行任务的时候并没有多大意义,因为 活跃的动词们基本把能做的事情都做了。 这里也没有什么奇怪的法律说要创造各种“帮助者”来帮助动词做事,因此在这些王国中,名词的数量和实际上存在事物的数量是相同的。

这样做的结果是,动词在这片土地上为所欲为(请原谅我的用词)。 如果你是一个外来人,你很容易产生名词(函数)是这里最重要的居民的印象。 顺便提一句, 这也是为什么这里被叫做函数式诸国还不是事物诸国的原因。