微博

ECO中文网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ECO中文网 门户 优秀译文推荐 博客 查看内容

[2012.07.31] 语言不是计算机代码

2012-8-3 11:03| 发布者: migmig| 查看: 8604| 评论: 10|原作者: skcheer

摘要: 语言与计算机
语言与计算机

语言不是计算机代码


Jul 31st 2012, 16:22 by R.L.G. | NEW YORK



7月20日,两家科技公司的拥有者凯尔·韦恩斯在《哈佛商业评论》上发表了一篇博客,题为“我不会雇佣那些语法很差的人。下面给出理由。”。这是文章中的一段摘要:

“如果你觉得,单引号是耶稣十二门徒之一
[注1],那么你不会为我工作。如果你觉得,分号是有着自我认知危机[注2]的冒号,那么我也不会聘用你。如果在用逗号断句的时候,你只有散弹枪的准星,那在我们礼貌地送你离开大门口之前,还是请你早些回家,洗洗睡吧。”

一开始我没有看懂这个玩笑。(如果你觉得“单引号”应该用在James,Peter和John之间,那你的问题就远不止语法了。把“apostrophe”当成“apostle”实在是太蠢了,让我在第一遍读的时候都没看懂。)但作者想表达的观点很明确:


“良好的语法是信誉的象征,在互联网上尤其如此。在博客里、Facebook状态里、在电子邮件以及公司网站里,你的文字就是你的全部。即使没有和你直接接触,你的种种都会在字里行间里显现出来。如果你连their,there和they're都弄不清楚,无论好坏,其他人总会对你有个评价。”


如果你没法区别分号和冒号,或是和结肠镜里的结肠混淆
[注3],那你也没法为《经济学人》工作。韦恩斯先生接着说:“同样,注重书面语言组织的程序员在编写程序的时候也会更花心思。”这是有道理的。“注重细节”也许是一项稳定的,整体性的人格特质:拥有这种性格的人既不会为写文章或者编写代码感到痛苦,也不会频繁地退订机票,出门忘带钥匙或者没做检查就支付餐厅账单。这样的人才深受许多行业的喜爱。

在自然语言和计算机代码之间也有着直接的类比。良好的代码编写能减轻计算机的内存负荷,使程序稳定运行;良好的
遣词造句能减轻读者的记忆负担,使文章更易阅读。糟糕的代码编写会使程序运行时出错;糟糕的遣词造句会给读者造成理解上的障碍。一些人永远也学不会作文。一些人永远也学不会编程。

但韦恩斯先生在一点上犯了错误。(虽然大多数职业编辑都会用"zero-tolerance"而不是"zero tolerance"
[注4],但这里并不是指这个。)他说:“本质上看,编程就是作文。”不,显然不是。

他搬出了权威的观点作证:“斯坦福大学传奇编程大师高德纳
[注5] 曾说过[程序员]是‘有着传统审美及文学形式的作家。’”我没有资格去质疑高德纳先生程序员界的泰斗地位,但我可以说,他这句话看上去并不怎么诗意,同时,他也没有跳出他的圈子来讲。我倒很想看看用一堆代码写出来的悲剧,民间传说或者流浪汉小说会是怎样。


或者,让我也引用下权威的观点吧:


“虽然形式语言和自然语言有很多共同点——符号,结构,句法和语义——但也有不少区别:


歧义性
:自然语言充满歧义,人们根据上下文的语境和其他信息来帮助理解。而形式语言的设计要求近乎或者完全明确,不容歧义,其中的每个语句都必须有唯一确切的含义,不受上下文的影响。


冗余性
:为了消除歧义,减少误解,自然语言引入了大量的冗余。因此也通常显得啰嗦。形式语言冗余较少,更加简洁。


同一性
:自然语言包含大量谚语和比喻。如果我说,”另一只鞋掉了,“可能根本没有鞋,也没有任何东西掉落。形式语言的字面意思就是真实意思。”

这是一个嬉皮士语言学家在抱怨顽固派和他们的“正确语法”吗?不,这段话援引于艾伦·唐尼、杰弗里·埃尔科纳和克里斯·梅耶共同编著的书籍《如何像计算机科学家一样思考》。


计算机代码和语言之间的对比和类比同等重要。一个小小字符或标点的缺失就会使程序出错;而在语言中,“punctuation”的拼写遗漏了c并不会带来太多问题,如果你真的有注意到,也只是理解上稍稍慢一点。计算机的同一性是人类噩梦的来源;如果计算机有一天意识到人类最好在这个世界上消失,那他们就会把我们彻底消灭干净,不掉一滴眼泪。现实世界的混乱和刺激往往使人际交往变得复杂,这也是和计算机代码的区别之一。我们付出了数十年时间努力研究,花费数亿的开支,最后也只是能让计算机对人类语言掌握到“残缺Siri”的程度。而一个完全没有接受过任何正式训练的5岁小孩,也能听懂那些Siri理解不能的语言。

之所以会造成“语言即代码”(或者“编程即作文”)的理解,要归咎于某些语言固执主义形式的错误引导。错用“its”而非“it's”会困扰到那些敏感读者。但这并不会让他们的大脑像计算机不能识别“whiel”和“while”时那样崩溃。需要相信,这样的错误是等价的。或许只是很小的错误,但却导致了“崩溃”,会强迫编程者更加重视形式和内容的规则,也许也会让他们过度关注无规则的地方(比如用"that"还是"which",或是分离不定式等等)。如果太着眼于“语言即代码”的字面意思,那么语言中的可选规则、正式程度、方言、口头禅、语言的演变、时间带来的自然转变、单纯的玩笑,这些就都没法用计算机来解读了。所有规则必须自始至终遵守。不同的程序员之间当然会有不同的编写风格(在计算机语言中也有那么一些“可选规则”),但风格并不是语法:程序员并不能像乔伊斯或福克纳那样玩转规则。

也有个别的写作类型——比如法律文书和技术文档——是需要像计算机代码一样剔除歧义,保持精确的。对于韦恩斯先生来说,雇佣那些写起文章来也像编程的人也许是对的。但大部分人都知道:电脑天才写不出很好的文章(他们太过忙于编程),而优秀的作家也编不出"Hello, world!"的程序(他们太过忙于在程序员编好的工具上写文章)。根本上讲,优秀的作家总是文风高雅,善于抒情且充满人情味。优秀的编程者总是高度统一,严谨且精于演算。坚持“编程即作文”的观点是对两者本质的误读。





译者注:

1. 这里作者开了个玩笑,嘲笑那些把"apostrophy"(单引号)和"apostle"(门徒)混淆起来的人。后文作者也有解释。

2. identitiy crisis: not sure of who he is  or his place in society  心理学术语,自我认同危机。

3. colon: 既可以作冒号讲,也是医学里的结肠。

4. 这里作者对韦恩斯的博客进行了吐槽,说的是对语法错误零容忍,结果自己的文章还犯了语法错误。

5. Donald Ervin Knuth: 美国著名计算机科学家,斯坦福大学计算机系荣誉退休教授。高德纳教授被誉为现代计算机科学的鼻祖,在计算机科学及数学领域发表了多部具广泛影响的论文和著作。“高德纳”这个中文名字是1977年他访问中国之前所取的。

6. Joyce: 詹姆斯·乔伊斯,爱尔兰作家和诗人,20世纪最重要的作家之一。代表作包括短篇小说集《都柏林人》、长篇小说《一个青年艺术家的画像》、《尤利西斯》以及《芬尼根的苏醒》。
Faulkner: 威廉·福克纳,是美国最有影响力的作家之一,1949年诺贝尔文学奖获得者。他以长篇和中短篇小说见长,他同时也是一名出版诗人和编剧家。代表作:《声音与愤怒(喧哗与骚动)》、《我弥留之际》、《八月之光》、《不败者》、《押沙龙,押沙龙!》。



5

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (5 人)

发表评论

最新评论

引用 菲德尔 2012-8-2 15:43
字体不便于阅读
引用 BONAMI 2012-8-2 16:06
shotgun为散弹枪 见wikipedia

引用 reader1 2012-8-2 20:37
斜排就是不大好读。

糟糕的文章书写会给读者造成理解上的障碍。一些人永远也学不会作文。一些人永远也学不会编程。
badly written prose can cause errors in interpretation. Some people will never learn to write. Some will never learn to code.
好像应当这样
潦草书写的文章书会给读者造成误解。有些人就是从来不学写字。一些人也从来不学编码。

永远也学不会作文。
引用 skcheer 2012-8-2 20:59
本帖最后由 skcheer 于 2012-8-2 21:05 编辑
reader1 发表于 2012-8-2 20:37
斜排就是不大好读。

badly written prose can cause errors in interpretation. Some people will never  ...


斜体的阅读体验不好吗?那我还是把他正过来。

关于这一句的里的"badly written"应该不是指写字写的潦草,而是指文章的遣词造句比较糟糕,可能有很多语法错误。这里"write"不是指写字的水平,而是写文章的水平。后文也有提到,最后一段”优秀的作家太过忙于在程序员编好的工具上写文章“, 既然是在电脑上写,就不存在笔迹啦。

当然,我这里”书写“是翻得不好,会引起歧义。主要是想和上一句对应。我修改下。

引用 reader1 2012-8-2 22:42
好多了。

你理解对。
引用 join_soon 2012-8-3 07:13
Fundamentally, good writers are empathetic, human and stylish. Good coders are literal, formal and algorithmic. To take the coding-as-prose analogy too far is to misunderstand the essence of both.

this is a typical "literature" person's argument. Totally stupid, and in China, you can find a lot of those people, so, we do not need translate this article, there are plenty, more than plenty, in Chinese already.

stupid article, but good translation.

引用 幸福、_找不到 2012-8-3 10:17
literalness(文中黑体字)似乎是描述natural language的,翻成同一性似乎不妥,不知你怎么看?
引用 skcheer 2012-8-3 10:36
幸福、_找不到 发表于 2012-8-3 10:17
literalness(文中黑体字)似乎是描述natural language的,翻成同一性似乎不妥,不知你怎么看? ...

黑体字是体现形式语言和自然语言的区别的。的确前两个性质都是从自然语言的角度出发,同一性是从形式语言出发。不过我觉得,说“形式语言”和“自然语言”在同一性上有区别也可以接受。

如果要从自然语言出发的话,可以翻成“表里不一性”。就有点啰嗦了。不知道你有什么好的建议吗?
引用 gaotingting 2012-8-3 11:51
语言表达准确清晰还是很重要的,至少让人易懂、舒服。
引用 运锦 2012-8-19 21:52
赞一个。

查看全部评论(10)

QQ|小黑屋|手机版|网站地图|关于我们|ECO中文网 ( 京ICP备06039041号  

GMT+8, 2024-3-29 00:25 , Processed in 1.038480 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部