编者按:本文作者 Charlie Custer 是 Tech in Asia Disconnect 专栏作家。 近十年以来,“学习编程” 已经成为许多初创公司创始人以及科技大牛们的格言。乔布斯(从没有写过代码)说过:“人人都应该学习编程。” 假如你在 Google 上输入 “everybody should learn”,第一个弹出来的词会是 “to code”(写代码)。霍金也曾经说过,会简单的计算机程序编制是 21 世纪必备的技能。 大家可能觉得我有点疯了,但是我认为,乔布斯、霍金以及 Google 都错了。 当然有一点要讲明:学习编程是一件不错的事。现如今有很多有趣的编程工作,即使你不想成为这方面的行家,多少学点也可以使生活更轻松。早在 Tech in Asia 任职时,我学了一点 Python,写过一篇代码,能自动推送部分 Newsletter。这样,既大量节省了时间,又使我成就感倍增。我认为这种挑战对大脑思维锻炼很有用。 那为何那些认为人人都应该会编程的人错了呢?他们错就错在这个再三出现的论断上:随着电脑的普及,编程工作也会越来越普通。电脑一直会有,只是致力于用特殊的语言跟它对话的程序员并不多。 久而久之,人们也会希望自己可以直接跟计算机交流,而不用通过一些特殊的代码。 如何可能? 先来说说什么是计算机编程。实质上,这就跟讲一门外语很像。首先,人们在自己的语境下构想出希望计算机干什么,然后通过编程把这个想法翻译成一种计算机可以懂的语言。所以说,计算机编程实质上就等于翻译。 但是种种迹象表明,计算机编程实际上比翻译要简单得多。因为人们只需要指示计算机做这个,再做那个而已,并不需要它能欣赏一首诗的文化背景,也不需要担心用了 C++ 后,散文的基调就跑了。而英语不一样,用不同的单词,就可能会产生不一样的情境。所以说,对于编程来说,人们只需做一件事,那就是让计算机明白它要做什么就行了。 这其实并没有看上去那么简单,因为计算机本身不会说话,他们也不能对人类的种种行为感同身受。尽管如此,机器翻译人类语言所面临的障碍在计算机语言上并不存在。虽然达到完美的机器翻译仍然任重而道远,但是实现远高于平均水平的机器翻译还是很容易的。我认为这个同样适用于编程。 如何发生? Watson 在 Jeopardy 大赛上所向披靡 这已经发生了。DARPA 有一个叫 MUSE 的项目,以期通过分析处理网页上现存的各种各样的代码来开发一种人类可控的自动编程软件。此原理跟机器语言翻译差不多:网页上有各种各样的代码,也有很多来进一步描述代码的文本。理想情况下,当人类给出诸如 “搜索这个领域的所有网页,并把从各个网页上搜索到的数据汇总到一个表格中的同一列”,或者 “編个程序,每天下午 3 点自动删除我的临时文件” 等基于语言的指令时,计算机能根据代码以及非代码语言推算出人类的真正需求。 显然,这说起来容易,做起来难。首先,这是个耗时耗力的大工程,即算有朝一日实现了,也明显替代不了所有的程序员。即便像 Frankenstein-style 代码,虽然功能性很强,却仍然不是最清晰、最有效的代码。所以此类系统即便能淘汰众多编程工作,也只能像无人驾驶一样(另一个 DARPA 项目),仅仅只是承担更多的驾驶工作,而非淘汰驾驶员本身。 DARPA 的 MUSE 项目并不是唯一。IBM 的 Watson 也一样。它能更熟练地破译人类语言从而达到理想的效果(尤其当那个结果是要彻底打败 Jeopardy 大赛冠军 Ken Jennings)。还有奥巴马总统发布的 Brain Initiative 计划,旨在训练计算机拥有更多的人类思维。毫无疑问,人类已经向自动程序时代迈进。 此类效果将进一步加剧,因为随着程序员越来越意识到由人类到机器的翻译比简单的汉译英要难很多,他们会设计出相当多的自动化程序来减轻自身的工作量。随着未来软件功能的不断优化,程序员们的饭碗终将不保。真糟糕! 别口诛笔伐 以免大家因为我的评论而抓狂,我先发表以下免责声明: 但是总的来说,编程并不是铁饭碗,也不是长期的饭票。作为一名作家和翻译家,我知道机器人终将取代我的工作。但是,程序员也千万别沾沾自喜,因为你们同样会被取代,而且有可能会比我先丢掉饭碗。 注:本文译者 Emily Lu。