文/一个在代码分享平台上逛了五年的人
我一直订阅一个叫”Hello World Collection”的网站,全球的程序员可以在上面上传自己写的第一个程序。不是那种教程里的标准版本,是每个人自己真正写的第一个能跑起来的程序。
这个网站上有大概三千多个”第一段代码”。我闲的时候会去翻一翻,不是看技术,是看人。三千多个Hello World,每一个都跟”标准版”有那么一点不一样。那个”不一样”,就是写它的人的模样。
标准之外的”变体”,才是最有趣的部分
绝大多数人写的确实是标准的print("Hello, World!"),一行,干净,走人。
但有一部分人会在标准的基础上做一点点”改动”。
有人把World换成了自己的名字。比如”Hello, Zhang Wei!”或者”Hello, Maria!”。这个改动很小,但你能看出来,写这行代码的人心里想的是”让这个东西认识我”。他第一次感觉到自己跟计算机之间建立了”个人连接”,他要把自己的名字写进去,作为一个记号。
有人把World换成了他喜欢的城市、他养的猫的名字、他女朋友的名字。你看着那些代码,能大致猜出写代码的人是学生、是上班族、还是热恋中的人。一个简单的名字替换,暴露了写代码那一刻他心里最重要的事是什么。
还有人把输出改成了”Hello, Mom!”。我看到那条记录的时候愣了一下。写它的人是一个中学生,他说他妈妈一直不理解编程是什么,他就写了这个给她看,告诉她”妈,这个东西会叫我,它会叫你的名字”。那个输出里没有”世界”,只有一个”妈妈”。但那个”世界”大概就是他妈妈眼中的那个世界。
有人把Hello World写成了诗
还有一些Hello World,代码量远超”必要”的范畴。
有人写了一个时钟程序,每秒输出一次”Hello, World!”,然后更新时间戳。他写了几十行,用了一个循环和一个延迟函数。他的Hello World不只是一句话,它是一个”一直活着的东西”——每隔一秒,它就在说一次”我还在”。
有人写了一个彩色版的Hello World,在终端里用ANSI转义码把每个字母涂成不同的颜色,然后加了下划线、加粗、闪烁。他花了不少时间调整每个颜色的代码,就为了让那行字在黑色终端背景上看着像彩虹。你看着那张截图,能感觉到写它的人对”好看”有一种执念。
还有人在网页里写了一个Hello World——一个完整的HTML页面,加了CSS动画,那一行字从屏幕外飞进来,然后停在正中间。他用了几十行CSS,就是为了那一行字的入场。你看着动画播放,会觉得写它的人对”仪式感”有超乎常人的追求。
这些”过度设计”的Hello World,标准意义上是”冗余”的。但你要理解写它们的人——他们不是在”写代码”,他们是在”用代码表达自己”。Hello World是一块画布,画什么由他们决定。有些人只需要一个点,有些人要画满整张纸。没有对错,只有”你是谁”。
那些”失败了很多次才成功”的记录
这个网站上还有一个栏目叫”my first try failed”,专门记录第一次没跑通、后来才成功的经历。
我看到一个四十多岁的用户写:”我按了运行,屏幕弹了一个窗说找不到文件。我查了十分钟才发现我把文件名存成了’test’而不是’hello.py’。改过来之后,它出来了。我是三个孩子的父亲,这是我四十三年人生里第一次觉得自己学会了一个新东西。”
还有一个十几岁的小姑娘写:”第一次用英文输入法打括号,打了十分钟没找到那个弯的符号在哪里。后来我姐帮我按了shift+9,我看到了'(‘。然后我打了右边的’)’,运行,它出来了。我觉得自己像一个探险家找到了宝藏。”
还有一个退休的老人,他说:”我打了三遍,每次都说’语法错误’。后来我发现我打的是中文引号。改成英文的引号之后,它居然真的出来了。我坐在椅子上笑了好久。”
这些”失败记录”比任何成功的Hello World都更真实。它们记录的不是”一个程序”,它们记录的是”一个人在障碍面前没放弃,最后翻过去了”的那一瞬间。那行输出只是一个副产品,真正珍贵的是”翻过去”这件事本身。
写法越简单,透露的信息可能越深
有些人的Hello World极其标准,标准到没有任何”个人痕迹”。print("Hello, World!"),就这些。你看了之后什么额外信息都得不到。
但这本身也是一种信息——它说明写这个的人,要么是完全照着教程抄的,一个字都没改;要么是他觉得这个程序”不需要有任何多余的东西”,它就是”刚刚好”。第一种人是”遵守者”,第二种人是”极简主义者”。但光从代码上,你分不清是哪一种。
我还见过一种写法:什么都没有写。就是一个空文件,然后上传了。页面显示”这个用户没有提交代码,他说他只是想来看看别人怎么写”。
我觉得那个提交比所有写了代码的都更让人回味——一个人进来这个世界,看了一圈,什么都没留下,然后走了。但他”来过”这件事,本身就是一个记录。他可能以后会写,也可能再也不会写。但那一刻,他在那个网站上留下了一个空文件,说了一句”我来看看”。
这大概是最短的一个”Hello World”——连字符都没有,但意思到了。
那个最打动我的版本
那个网站里三千多个Hello World,有一个版本我看了好多遍。
写它的用户是匿名的。他上传了一段Python代码,三行:
python
try:
print("Hello, World!")
except:
print("hello again")
他下面写了一段话:”我知道这个try-except是多余的,print根本不会抛出异常。但我就是想写一个’万一出错了也有兜底’的Hello World。因为我觉得人生的第一句话,不应该因为一个意外就发不出去。我要确保它一定能发出去,不管用什么方式。”
我看到这段话的时候眼睛有点发热。
你把”程序逻辑”翻译成”人生逻辑”——一个人连写第一行代码的时候,都在想”万一出问题了,我还有一个plan B”。他不想让自己第一次跟世界打招呼这件事落空。所以他加了一个永远不会触发的except,只是为了”保证它一定会出去”。
那个”hello again”像是他说给自己的——如果第一次没成功,那就再来一次,再说一遍。总会说出去的。
从写法里看到的那个人
我后来总结了一下,那些”非标准”的Hello World,大概可以分为几类人。
改名字的,是想要”被记住”的人。加颜色的,是想要”被看到”的人。做动画的,是想要”被惊艳”的人。写失败记录的,是想要”被理解”的人。加try-except的,是想要”被安全地接纳”的人。
而那些只写标准版的,可能是”我只想走流程”的人,也可能是”我觉得这样就够了”的人。前一种跟后一种,看起来一样,心里想的完全不同。
所以你如果只看那些代码本身,你只看到了一行输出。但你如果看它”跟标准版有什么不一样”,你就看到了写代码的那个人——他的性格、他的动机、他在那个瞬间心里装着什么。
那个”不一样”,才是Hello World真正迷人的地方。技术上是多余的,但人性上不是。
标准版告诉你怎么输出一个字。变体版告诉你——写这段代码的人,在那一刻,心里有一个比”输出”更想要的东西。可能是”被看见”,可能是”被理解”,可能是”让自己记得”,可能是”让别人不害怕”。
三千多个Hello World,三千多个”想要”的东西。它们都用同一句话开口,但每一句的后面都跟着不同的话。
那些”后面的话”,才是这个网站真正收藏的东西。