
打一个 @ 要按两次键。左手压住 Shift,右手够到数字 2,屏幕上才出现那个圈着一条尾巴的符号。这个动作每天重复十几遍,没有人觉得它奇怪。但它是整封邮件里唯一一个不属于任何语言、也不属于任何人的字符。
大多数人对它的解释是「at 的缩写」,读作「某某 at 某某公司」。这个解释听得通,用起来也顺,唯一的问题是:它和当初选它的理由没有关系。选它的人没有考虑过 at 这个词,他考虑的是键盘上哪个键没人要。
1971年秋天,BBN 的一台 PDP-10
雷·汤姆林森(Ray Tomlinson)当时在波士顿的 BBN 公司工作,那家公司承建了 ARPANET 最早的几个节点。他手上有一个叫 SNDMSG 的小程序,作用是给同一台机器上的其他用户留消息。功能很朴素:写一段字,扔进对方的邮箱文件里。
同时期还有一个叫 CPYNET 的实验程序,负责在不同机器之间传文件。汤姆林森把两者的代码拼在一起,让 SNDMSG 可以往另一台机器的邮箱文件里追加内容。第一封跨机器的邮件就这么发出去了,没有发布会,也没有新闻稿。
麻烦立刻出现:收件人写谁。原来只需要一个用户名,现在得说清是哪台机器上的哪个用户。他需要一个分隔符,把「用户」和「主机」切开。这个分隔符必须满足一个硬条件——它不能出现在人名里,否则解析会歧义。
他后来在多次访谈里说过同一句话,大意是:我没有发明这个符号,它本来就在键盘上。这句话常被当成谦虚,其实是一个工程师对约束条件的准确描述。
键盘上那个没人争的键
1971 年的终端是 Model 33 电传打字机,键盘布局沿用当时的电传标准,不是今天的美式键盘。上面能用的标点有限,@ 是其中之一。它当时的主要用途是记账和单价,程序里几乎用不到,所以它是一个「空着的键」。
空着这两个字是关键。当时可选的符号里,冒号被路径占用,斜杠被目录占用,感叹号后来被 UUCP 拿去做了跳转符,百分号被 CSNET 拿去做了中转符。每一个符号都有人先占了位置,只有 @ 还没有主人。
汤姆林森自己给出的理由更简单:这个符号不会出现在任何人的名字里。他不是在挑一个好看的符号,他是在排除所有会引发歧义的符号,剩下的那个就是答案。
至于它读作 at,是后来的事。英语使用者看见 user@host 就顺口读成 user at host,读音反过来加固了「它是 at 的缩写」这个印象。因果在这里是倒过来的:不是因为它表示 at 才被选中,是因为它被选中了,才被读成 at。
1536年,一只双耳陶罐
@ 比电子邮件早了四百三十五年。目前已知最早的一处商业用法,出现在 1536 年一封佛罗伦萨商人的信件里,写信人叫弗朗切斯科·拉皮(Francesco Lapi)。那是一封关于贸易的普通公函,讨论的是货值和船期,不是符号学。
信里的 @ 是一个计量单位,读作 anfora,指的是双耳陶罐,用来标葡萄酒和谷物的容量,约等于八分之一桶。它出现在数字后面,作用是告诉对方「这个数按罐算,不按桶算」。
这个用法在地中海贸易区延续了几百年。西班牙语里它演变成 arroba,重量单位约 11.5 公斤;葡萄牙语沿用同一词形。一个符号能活四百年,靠的不是美感,是它在单据上能省下三个字母。
所以 @ 的履历上有两段互不相干的历史:一段在账本里,一段在邮件头里。两段之间没有传承关系,只有一次偶然的复用。
四种分隔符,只有一种留到了今天
把当年的候选方案摆在一起,能看出这不是一次设计,而是一次分流。每一种写法都曾经能用,只是后来的网络规模替它们做了筛选。
| 写法 | 出处 | 形式 | 后来的结局 |
|---|---|---|---|
| @ | ARPANET,1971 | user@host | 被 RFC 733、RFC 822 固化,成为通用写法 |
| ! | UUCP,1970 年代 | host!user | 随 UUCP 网络一起退出,只剩老文档里的痕迹 |
| % | CSNET,1980 年代 | user%host@relay | 作为中转语法被保留过一段时间,后被废弃 |
| / | X.400,1984 | c=cn;a=admd;p=prmd;s=name | 语法冗长,只在少数政务系统里残留 |
感叹号那一行值得多看一眼。UUCP 网络在 1980 年代比 ARPANET 覆盖更广,路径写成 a!b!c!user,每经过一台机器就加一个感叹号。它的问题不是难用,是不可扩展——路径越长,地址越长,最后没人记得清路由。
X.400 则是相反的错误。它把每一个层级都写进地址,属性名加等号,规格严谨,写起来像一份表格。严谨到普通人念不出来,就注定进不了日常语言。
最后活下来的 @ 有一个别人没有的优势:它在地址里只出现一次,左右两边都读得出来,而且短。能被口头念出来的符号,才可能被大规模使用。
它怎么从一个地址符号变成了动词
2009 年前后,中文互联网开始把 @ 当成动词用:「我 @ 你了」「他在群里 @ 所有人」。一个标点变成动词,是语言里少见的事,但它发生得很自然。
原因是功能需求。论坛和微博需要一个动作,表示「把这条消息定向推给某个人」,而这个动作没有现成的词。符号先承担了功能,词性随后被追认。
这件事和 1971 年的选择其实是同一个机制:先有一个说不清的需求,再从一个现成的符号堆里抓一个来用。语言和协议的演化方式很像,都不太靠规划。
有个五分钟能做完的检验,可以验证「@ 不是 at 的缩写」这个判断。打开手机备忘录,输入「张三 at 公司」,再输入「张三@公司」,然后念出来。你会发现第二种写法你根本不会念成 at,你会直接跳过它——因为它在你脑子里已经不是一个词,是一个分隔符。
写在最后
我们习惯给已经成立的东西补一个理由。@ 读作 at,于是它就是 at;键盘是 QWERTY,于是它就是为了降速;铁轨宽度是 1435 毫米,于是它就是最优解。补理由这件事很省力,代价是把偶然当成了必然。
真实的路径往往更窄:一个人手上有一个必须解决的问题,手边有一堆现成的零件,他挑了一个最不碍事的。四百年后,这个零件成了全世界每封邮件都必须带上的记号。
所以下次填邮箱的时候可以留意一下:你按下的那两个键,本来跟邮件没有任何关系。它不是被设计出来的,它是被剩下的。
你的邮箱前缀里有没有被迫加过数字或下划线?当时是因为重名,还是因为系统不认某个字符?

评论 (0)