Hello World是一句翻译:把人的念头译成机器能懂的语言

文/一个在翻译和编程之间反复横跳的人

我大学的时候做过一点翻译的兼职。把英文说明书翻成中文,把中文的产品介绍翻成英文。翻译这件事看起来简单——不就是把一种文字换成另一种文字吗?但实际上挺难的。你要做的不是”字对字的转换”,是”意义的传递”。

你不能把”How are you?”翻成”怎么是你?”,你得翻成”你好吗?”。你不能把”I’m fine”翻成”我很好”,你得根据上下文判断这里”fine”可能更接近”没事””还行”。翻译的重点不是”词”,是”意思”。

后来我做了程序员,有一天我突然意识到一件之前从没想过的事——我们写代码的时候,其实也在做翻译。我们把”想让计算机做的事”翻译成”计算机能懂的指令”。这个翻译过程,跟把英语翻成中文,本质上是一样的。

而Hello World,就是所有程序员做的第一句翻译。它简单到几乎不需要”转换”——人的想法是”让屏幕显示一句话”,代码是print("Hello, World!"),两个之间的映射几乎是一对一的。但就是这么简单的一句翻译,一旦成了,你就学会了”怎么跟计算机说你想说的话”。

不同语言,翻译难度不同

你学一门编程语言,跟学一门外语,体验上出奇地像。

学Python写Hello World,就像学英语说”Hello”——发音简单、拼写简单、记住了就能用。学Java写Hello World,就像学德语说”你好”——你得记词性、得记语法格、得记动词在第二位。表达同样的意思,德语要比英语多记好几个规则。

我跟一个做翻译的朋友聊过这个类比。他说:”那C语言像什么?”我说:”C语言像拉丁语——你学了它,后面很多语言你都能看懂一点。但你直接用它跟人打招呼,显得太古老了。而且它让你把事情说得非常精确,精确到’你把这个内存地址里的东西拿出来’这种程度,就像拉丁语里各种格的精确变化。”

他听完笑了很久,说:”那写Hello World就是学第一句外语时的’你好’。不管后面学多深、说得多流利,你永远记得第一句是怎么说的。”

这个类比让我想明白了一个道理:编程语言的”设计哲学”,其实都浓缩在它的Hello World里。一个语言想让你”怎么”写程序,看它的Hello World就能猜个七七八八。

那个”翻译同一句话一百遍”的人

我认识一个做本地化的朋友,他在一个跨国软件公司工作,专门负责把产品的界面文字翻译成不同语言。他的工作就是整天对着一个翻译管理系统,把同一个英文句子翻成几十种语言。

他说他翻译次数最多的句子是”OK”和”Cancel”,大概翻了上千遍。但他最有感触的一句是”Hello, World!”——因为有一次他负责给一个内部测试工具做多语言适配,需要把Hello World翻成三十几种语言。

他每翻一个版本,就在代码里改一行,然后运行,看着那行字用不同的语言出现在屏幕上。翻到中文的时候是”你好,世界”,翻到日文是”こんにちは世界”,翻到阿拉伯文是从右往左读的问候。

他说他翻到法文的时候,突然停下来想了很久。法文的”Hello, World!”应该是”Bonjour le monde”还是”Bonjour tout le monde”?第一个是”你好世界”,第二个是”大家好,全世界”。他纠结了很久,最后选了第一个,因为”那句问候本来就是一个人对着整个世界说的,不需要强调’所有’,它已经在说’所有’了。”

他讲这个故事的时候,我觉得他比我更懂Hello World。”翻译”这件事把”全球程序员共享一句问候”这个现象,推到了极致——不只是全世界的程序员共享同一行英文,而是这行英文可以被翻成每一种人类语言,然后每一种语言都在用自己的方式,对那个”世界”打招呼。

那个”翻译不准”的Hello World

还有一个故事来自一个做语音识别系统的工程师。他们的系统支持多种语言的语音输入,测试的时候有一个标准用例——对麦克风说”Hello, World!”,看系统能不能识别出来。

他说有一次测试,系统把”Hello, World!”识别成了”Hello, word”。少了一个感叹号,多了一个拼写错误。按理说”world”和”word”在语音上差别不大,容易被搞混。但这个工程师说,他当时觉得系统”翻译”错了——因为这个程序把”对一个世界的问候”,翻译成了”对一个单词的问候”。范围缩小了,意义也变了。

他说:”一个好的翻译,不应该丢东西。你把’世界’翻译成’单词’,就丢掉了’全部’的意思,丢掉了那种’我在对一切说你好’的感觉。”

后来他们优化了模型,加了一些”上下文推测”的逻辑。当音频里出现了”Hello”且后面跟着一个类似”world”的音节时,系统会倾向于判定是”World”而不是”Word”,因为”Hello, World!”是一句”在语料库里出现频率极高”的搭配。它通过”这句问候出现的次数太多”来判断”这里应该是什么”,就像一个翻译家翻某句话翻了太多次,闭着眼都知道它应该翻成什么。

那句翻译,永远在说同一件事

翻译一个句子一百遍,跟翻译一百个句子一遍,感受完全不同。前者让你越来越熟悉那句”原话”,后者让你越来越熟悉”翻译这件事”本身。

Hello World在编程世界里的角色,其实更接近前者——所有程序员都在翻译同一句话。从1972年到现在,这句话被翻译了无数遍,用各种不同的编程语言”方言”、在各种不同的环境里、出于各种不同的目的。但翻译的目标始终没变:让计算机在屏幕上显示”Hello, World!”。

每一次翻译,都是一个人第一次把”他的想法”转换成”计算机能执行的指令”。每一次翻译成功,都意味着某个人跟机器之间,建立了一次”成功的沟通”。每一次翻译失败,都意味着他还需要重新调整”他的说法”,直到机器听懂为止。

这个过程——”你想说一句话,但机器没听懂,你就换一种方式说,直到它听懂了”——贯穿了一个程序员职业生涯的始终。只是后来你想说的不再只是”Hello, World!”,而是更复杂的东西。但那个”翻译”的本质从来没有变过:你得把人的想法,换成机器能理解的语言。

而Hello World,是所有人学会做这件事的第一个成功案例。

写在最后:那句翻译,你一辈子都在做

我现在每次写一个复杂系统的时候,会想起来那个”最初的翻译”——我当时做的就是把”我想让屏幕显示一行字”这个想法,翻译成了print("Hello, World!")。这个翻译成功了,所以我继续学了下一种”表达方式”,再下一种,再下一种。

到今天,我”翻译”过的东西已经数不清了——从数据库查询翻译成SQL语句,从业务需求翻译成模块设计,从用户的点击翻译成后端的处理逻辑。每一种都是”把一种意思转换成另一种语言”。

而这一切的起点,就是那一句最简单的翻译。那句话很短,但它在教我一件事情:只要你能把一个想法”翻译”成计算机听得懂的指令,你就能让它做你想让它做的事情。

这个能力一开始很小——只能输出一行字。但后来它会长大,大到能支撑起一整座数字城市。但不管长多大,它的根都在那句翻译里——那句全世界程序员都翻译过的、最原始的、最简单的那句:

“你好,世界。”

赞(0)
未经允许不得转载:helloworld官网下载 » Hello World是一句翻译:把人的念头译成机器能懂的语言