从Hello World到改变世界:一行代码背后的五十年传奇

5天前

文/一名写过无数次Hello World的老程序员

还记得你第一次在屏幕上看到“Hello, World”的那一刻吗?

那可能是你人生中第一次让计算机听懂了你的指令。也许你折腾了半天环境变量,也许你漏掉了一个分号,也许你在黑暗的终端里按下了回车键——然后那两个单词就那样安静地出现了。那一瞬间,你感觉自己和机器之间建立了一种奇妙的连接。从那以后,你再也回不去了。

这不是我一个人的记忆。几乎每一个程序员都有类似的经历。有人坐在大学机房里对着VC++6.0抓耳挠腮,有人在面试时自信满满地写下“Hello, World!”然后回家等通知,还有人因为把所有字母都打成了大写而哭笑不得。这个简单的程序,承载了太多人踏入编程世界的第一个脚印。

那么,这个只有一行代码的小程序,是怎么成为全球程序员“成人礼”的呢?

故事要从五十年前的贝尔实验室说起

1972年,美国贝尔实验室。那是计算机还占据一整间屋子、科学家还在用打孔卡编程的年代。一位名叫布莱恩·柯林汉(Brian Kernighan)的年轻计算机科学家正在撰写一份内部技术文档《A Tutorial Introduction to the Language B》。

为了向读者演示B语言中“外部变量”的用法,柯林汉需要写一个示例程序。受限于B语言的字符常量只能容纳四个ASCII字符,他把“hello, world”拆成了三个变量——a ‘hell’、b ‘o, w’、c ‘orld’——然后用putchar函数逐个输出。

代码大概是这样的:

text
main() {
extern a, b, c;
putchar(a); putchar(b); putchar(c); putchar(‘!*n’);
}
a ‘hell’;
b ‘o, w’;
c ‘orld’;
当终端打印出“hello, world”的那一刻,一个传奇就此诞生。

两年后的1974年,柯林汉在另一份内部备忘录《Programming in C: A Tutorial》中,用C语言再次编写了Hello World程序。这一次简洁得多:

text
main() {
printf(“hello, world”);
}
1978年,柯林汉和C语言之父丹尼斯·里奇(Dennis Ritchie)合著的《C程序设计语言》(The C Programming Language)正式出版。这本被程序员称为“K&R”的经典教材,把Hello World放在了第一个示例的位置。随着这本书在全球范围内广为流传,Hello World也成了无数程序员学习编程的第一行代码。

为什么是“Hello, World”?

很多人好奇:柯林汉为什么偏偏选了这两个单词?

多年后接受《福布斯印度》杂志采访时,柯林汉自己也记不太清了。他说:“我只记得,我好像看过一幅漫画,讲述一枚鸡蛋和一只小鸡的故事,在那幅漫画中,小鸡说了一句‘Hello World’。”

一个漫画里的随口台词,阴差阳错地成了全球编程界的通用语言。

不过,这个看似随意的选择其实恰到好处。“Hello, World”这个词组简短、友好、充满人情味。在1970年代,计算机对普通人来说是冷冰冰的、不可触碰的庞然大物。而“Hello, World”——你好,世界——像是计算机第一次主动跟人类打了个招呼。它消解了人与机器之间的隔阂,让编程这件事变得亲切了起来。

柯林汉和里奇当年可能做梦都想不到,他们随手写下的这个教学示例,会在接下来的半个世纪里被数十亿次地复制、编译和运行。

一个程序,无数种写法

Hello World之所以能跨越五十年而不衰,还有一个重要原因:它几乎存在于每一种编程语言中,而且写法各不相同。

C语言要写printf(“hello, world”);,Python只需一行print(“Hello, World!”),Java得包上一个类和一个main方法,Go语言有自己独特的包管理方式。有人甚至用汇编语言、机器码,或者在嵌入式系统只有几KB内存的微控制器上实现了Hello World。

正因为足够简单,Hello World成了展示每种编程语言基本语法的完美载体。它像一个通用的“语言护照”——无论你切换到哪种编程语言,Hello World都是你探索新世界的起点。同时,它也是验证开发环境是否配置正确的“ sanity check”——如果连Hello World都跑不起来,那后面什么也做不了。

不只是代码,更是一种文化

今天的Hello World早已超越了“教学示例”的范畴。它成了一种文化符号,一种属于程序员的仪式感。

每当有人接触一门新语言,第一件事就是写一个Hello World。每当有人配置好一个新的开发环境,第一件事就是跑一个Hello World。甚至每当有人想测试一个新的框架、新的库、新的平台,Hello World依然是那个最可靠的“探路者”。

有人说,Hello World是程序员写给世界的第一封情书。也有人调侃,程序员的一生就是不断用各种语言对世界说“你好”的过程。

但我觉得,Hello World最动人的地方在于它的平等——无论你是顶尖学府的计算机博士,还是在小城市自学编程的 teenager,你写下的第一个程序,和全世界所有程序员写下的第一个程序,一模一样。在“Hello, World”面前,没有天才和庸才之分,只有一个个刚刚开始探索代码世界的好奇灵魂。

写在最后

五十年过去了。计算机从占据一整间屋子变成了可以装进口袋的设备,编程从科学家的专属技能变成了数以千万计人的日常工作。但Hello World依然在那里,简单、纯粹、不变。

如果你还没写过Hello World,不妨现在就试试——随便打开一个浏览器按F12打开开发者工具,在控制台里输入console.log(“Hello, World!”),然后按下回车。

欢迎来到编程的世界。

你好,世界。