一、引言:每个程序员都写过的那两行字
如果你是程序员,你一定写过它。如果你正在学习编程,你即将写下它。如果你对代码一无所知,那你大概也在某部电影、某本书或者某个科技产品的开机画面上见过它——Hello World。
这也许是计算机科学史上流传最广、被重复次数最多的两个英文单词。对每一位程序员来说,这个程序几乎是每一门编程语言中的第一个示例程序。它的功能极其简单——只是在屏幕上显示一行文字。但就是这短短一行代码,承载了半个世纪以来无数开发者与技术世界初次对话的激动与忐忑。
二、故事的起点:贝尔实验室与一行B语言代码
Hello World的故事要从1972年讲起。那一年,贝尔实验室的一位年轻研究员布莱恩·柯林汉(Brian Kernighan)撰写了一份内部技术文件,名为《A Tutorial Introduction to the Language B》。在这份教程中,他为了演示B语言中“外部变量”的用法,写下了这样一段代码:
text
main() {
extern a, b, c;
putchar(a); putchar(b); putchar(c); putchar(‘!*n’);
}
a ‘hell’;
b ‘o, w’;
c ‘orld’;
这段程序在终端上打印出了 “hello, world” ——全小写,没有感叹号。之所以要把“hello, world”拆成三个变量来存储,是因为B语言的字符常量有长度限制。这并不是一个刻意的仪式,而是技术限制下的一次即兴创作。
两年后,随着C语言逐渐取代B语言,柯林汉在贝尔实验室的另一份内部备忘录《Programming in C: A Tutorial》中,再次使用了这个例子。这一次,代码变得更加简洁:
text
printf(“hello, world\n”);
三、从内部文档到全球经典:一本书的力量
让Hello World真正走向世界的,是1978年出版的一本书——《The C Programming Language》(C程序设计语言)。这本书由柯林汉与C语言的设计者丹尼斯·里奇(Dennis Ritchie)合著,至今仍被奉为C语言的“圣经”。他们将“hello, world”作为全书第一个示例程序,从此奠定了它作为编程入门第一课的经典地位。
有趣的是,当《福布斯印度》杂志后来采访柯林汉、问他为什么偏偏选择“Hello World”时,这位创造者的记忆已经有些模糊了。他说自己只记得好像看过一幅漫画,画中一枚鸡蛋和一只小鸡,小鸡说了一句“Hello World”。这个回答朴实得令人意外——没有宏大的叙事,没有刻意的设计,仅仅是一个瞬间的灵感和一个技术文档的需要,却意外地影响了此后几十年的编程教育。
四、为什么是Hello World?它到底有什么用?
从功能上讲,Hello World程序的作用无非是测试一件事情:你的代码能不能跑起来。对于新手来说,当你第一次把代码敲进编辑器、按下运行键、看到屏幕上真的出现了那行文字,那种“我和计算机对话成功了”的感觉,是任何教科书都无法替代的。
但这个看似简单的程序,在软件开发的不同阶段其实扮演着多重角色。
首先是环境验证。配置编程环境往往是一个漫长而繁琐的过程——安装编译器、配置路径、解决依赖冲突。一个能正常运行的Hello World,就是整个工具链工作正常的“通行证”。正如一位计算机专家所说:“如果你的系统连一行文字都打印不出来,我凭什么相信它能跑更复杂的程序?”
其次是语法入门。每种编程语言都有自己独特的语法风格——Python用一行print搞定,Java需要一个完整的类定义,C语言需要包含头文件和main函数。Hello World就像一扇窗户,让初学者在最短的时间内窥见一门语言的基本面貌。它足够简单,任何人都能理解;但它又不是苍白的,它带着每种语言独有的表达方式。
再者是调试工具。对于有经验的开发者,Hello World还经常被用作调试的辅助手段——在复杂的程序中插入一段输出,验证程序的某个分支是否被执行到了。
五、Hello World的多语言面孔
半个世纪以来,Hello World几乎被翻译成了所有编程语言的“方言”。下面这几种语言,展示着它截然不同的面孔:
Python——最简洁的代表:
text
print(“Hello, World!”)
C语言——经典的起点:
text
include
int main() {
printf(“Hello, World!\n”);
return 0;
}
Java——规矩严谨的大家长:
text
public class HelloWorld {
public static void main(String[] args) {
System.out.println(“Hello, World!”);
}
}
Rust——强调安全的新秀:
text
fn main() {
println!(“Hello, World!”);
}
JavaScript——网页的通用语言:
text
console.log(“Hello, World!”);
据不完全统计,Hello World程序至少有超过200种不同的编程语言实现版本。有一个专门收集各种语言Hello World的网站,截至2008年已经收录了超过400种不同语言的版本,其中还包括63种人类语言。
六、不止是一行代码:Hello World的文化符号
随着时间的推移,Hello World早已超越了技术工具的范畴,成为了一种文化符号。
对程序员来说,它代表着一种仪式感。每当接触一门新语言,写下Hello World就像是向这门语言打招呼——“你好,我来了”。这不仅是学习的第一步,更是对未知领域的一次探索。
在中国开发者社区,近年来还出现了将“Hello World”本土化的有趣尝试。有人把它写成“你好世界”,甚至有人将它与“天地玄黄”等传统文化符号结合,在算法教学中植入本土文化认知。这种文化迁徙,正是技术在全球范围内落地生根的生动写照。
还有程序员在项目日志中把“Hello Cruel World”和“Goodbye Cruel World”分别作为进程启动和退出的日志信息,这种带着黑色幽默的变体,后来渐渐成为行业里一种心照不宣的趣味。
七、结语:五十年后,它依然在那里
从1972年贝尔实验室的一份内部文档,到今天全球数百万开发者敲下的第一行代码,Hello World已经走过了半个多世纪。那个在B语言中因为字符长度限制而被拆分成三段的“hello, world”,如今以各种形态出现在无数屏幕之上。
它的流行,也许恰恰因为它的简单。在复杂的技术世界里,能有一件如此纯粹、如此统一、如此被所有人共同理解的事物,本身就是一种奇迹。
无论你未来会写出多么复杂的系统、多么精妙的算法,当你回顾自己的编程生涯时,那个让你第一次感受到“我让计算机听我的话了”的瞬间,多半就是按下运行键、看到屏幕上跳出“Hello World”的那一刻。
那句话,始终在那里——等着你,也等着每一个即将踏入编程世界的人。
