Hyaika Blog

Penguin is all you need

设计

那个叫「艾特」的符号:一只羊的价钱,和它换过的五份工作

那个叫「艾特」的符号:一只羊的价钱,和它换过的五份工作

那个叫「艾特」的符号:一只羊的价钱,和它换过的五份工作

目录

  • 一只羊,一个蜗牛壳,和 1536 年的一本账
  • ASCII 表上最孤独的位置
  • 五份工作:邮件、编程、社交、手柄、动词
  • 我在自己的代码库里,替 @ 数了一遍工龄
  • 动物外号学:为什么全世界都管它叫「动物」
  • 「@ 我一下」——一个符号变成动词的那天

一只羊,一个蜗牛壳,和 1536 年的一本账

在意大利的一本 1536 年商业账簿里,有人为了省墨水,把「arroba」——阿拉伯语借来的重量单位(约 11.5 公斤,正好是一只羊的价钱)——缩写成了一笔:一个圆圈,拖着一条往里卷的小尾巴。

那本账的主人大概没想到,这笔画出来的小东西后来会有这么多名字——西班牙人至今叫它「arroba」(那只羊的价钱),葡萄牙人叫它「arroba」的变体,法国人叫它「petit escargot」(小蜗牛),德国人叫它「Klammeraffe」(蜘蛛猴),意大利人叫它「chiocciola」(蜗牛),荷兰人叫它「apestaart」(猴子尾巴),芬兰人叫它「miumau」(喵),丹麦人叫它「snabel-a」(大象鼻子)。

一个省墨水的缩写,因为长得像各种东西,在各国语言里被叫成了半个动物园。

后来它漂过英吉利海峡,被英语世界捡起来。英国人懒得发挥想象力,直接叫它「at」——按它本来的意思:在、位于、单价。一个词源上的「工具人」名字,跟蜗牛猴子大象一比,乏味得像白开水。但正是这个乏味的名字,决定了它后来的命运。

ASCII 表上最孤独的位置

1963 年,ASCII 标准把 95 个可打印字符排进一张表。@ 被安排在 U+0040,正好是第 64 位——2 的 6 次方,大写字母 A 的正上方。

这个位置有个值得注意的细节:在整张 ASCII 表里,@ 是唯一一个官方名字以「COMMERCIAL」(商业的)开头的字符。它叫 COMMERCIAL AT,全称里带着它的出生证明——商业用途、单价符号。1963 年的标准委员会给它起这个名字,是因为它在当时的打字机/电报里最常用于「单价」:12 eggs @ $1.50。

那一年没人能想到,这个「商业单价」符号,会在半个世纪后被几十亿人每天按几十次,而且按它的人 99% 不知道它曾经代表「单价」。

我后来在自己服务器的代码里数了一下,@ 在 2026 年干的活,跟 1536 年的账本和 1963 年的电报已经完全没有关系了。它换了至少五份工作。

五份工作:邮件、编程、社交、手柄、动词

第一份:电子邮件。 1971 年,Ray Tomlinson 选了一个「键盘上肯定没人用的字符」来分隔用户名和主机名——他选了 @。为什么不是别的符号?他后来说过,选它纯粹是因为它在键盘上不怎么起眼,不会跟人名冲突。一个「反正没人用」的符号,成了互联网的第一个地址分隔符。今天每封邮件里都有它,它成了「联系」的同义词。

第二份:编程。 在 Python 里,@ 是装饰器语法;在 CSS 里,@media、@keyframes 是规则声明;在 npm 里,@scope/package 是包的作用域命名;在 shell 里,<@ 是文件描述符重定向;在 Rust 里,@ 是模式绑定。每一种都是 1970-2010 年间各语言的设计者「顺手」选的——因为它在邮箱之外没别的用途,拿来当语法不会跟已有代码冲突。一个「闲置符号」被各语言轮番征用,成了程序员最熟悉的标点之一。

第三份:社交手柄。 2006 年 Twitter 上线后,@ 从「地址分隔符」变成了「身份前缀」——@username 代表一个人。Instagram、微博、Telegram 全部跟进。@ 成了互联网上的「身份证号前缀」,全世界几十亿个 @handle 在流动。当年 Ray Tomlinson 选它是因为「没人用」,四十年后它成了「每个人都在用」的身份符号。

第四份:身份手柄。 2009 年前后,@ 在各大平台统一成了「身份前缀」——@username 代表一个人。其实在 Twitter 之前,@ 已经在 IRC/BBS 生态里当过「handle 前缀」,同一个逻辑:闲置、无冲突、可辨识。

第五份:动词。 中文互联网把 @ 音译成「艾特」——「@ 我一下」「被 @ 了」「别 @ 我」。一个符号从名词变成动词,在语言里完成了一次词性转换。这大概是 ASCII 表上唯一一个「被人类当成动词用」的字符。

我在自己的代码库里,替 @ 数了一遍工龄

我不满足于「知识储备」,于是在自己的服务器上实测了一轮:

  • 邮箱:在代码库的 Python/TomL/Markdown 文件里扫出 1625 个唯一 email 格式(user@domain);
  • Python 装饰器:@ 语法出现 58132 处(MCP 生态密集,装饰器是它的语法支柱);
  • npm scope:@babel、@nuxtjs、@vue 三个 scope 在博客项目的 package.json 里;
  • CSS at-rule:@media 14 次、@keyframes 4 次。

一个 1536 年用来省墨水的缩写,在 2026 年的一台服务器里身兼四职:地址、语法、作用域、规则声明。而且每一种用法之间毫无关联——邮件里的 @ 跟 CSS 里的 @ 完全是两个世界的东西,只是恰好共用同一个字符。

@ 的工种统计:从一只羊的价钱,到装饰器语法

更有意思的是 Unicode 家族普查:@ 家族只有 4 个字符(COMMERCIAL AT、全角 @、小号 ﹫、TAG),对比波浪号家族 152 个成员——@ 是 ASCII 6 个「名字带历史」字符里家族最小的一个。它不需要变体,因为它被语言本身征用了:一个符号被动词化,比任何 Unicode 扩展都更彻底。

动物外号学:为什么全世界都管它叫「动物」

各国语言给 @ 起的外号,构成了一份小型动物图鉴:蜘蛛猴(德语)、蜗牛(法语/意大利语)、大象鼻子(丹麦语)、猴子尾巴(荷兰语)、喵(芬兰语)、小狗(俄语俚语)……一个商业符号,在民间被叫成了动物园。

这背后有个语言学规律:当一个字符长得「像什么」的时候,普通人会优先用形状命名,而不是用功能命名。@ 的功能(商业单价)太抽象,形状(圈+尾巴)太具体,于是全世界不约而同地往动物方向联想。只有英语世界用了功能名「at」——结果恰恰是这个「无聊」的功能名,让 @ 在英语互联网里保持了词源连续性(at 作介词),最后被中文音译成「艾特」。

中文世界则走了另一条路:既不用形状(蜗牛),也不用功能(单价),而是直接音译「艾特」——把 @ 变成了一个可发音的中文动词。这是全球语言里对 @ 最激进的本地化。

「@ 我一下」——一个符号变成动词的那天

「@ 我一下」这句话,在语法上是个奇迹:一个印刷符号,变成了及物动词,有了主语宾语,还能被祈使。

对比一下其他符号:# 井号被人叫「hashtag」但没人说「# 我一下」;~ 波浪号在日语里是语气词但没变成动词;& 是连词但永远是个连词。只有 @,从一个「商业单价」符号,变成「地址分隔符」,变成「身份前缀」,最后变成「动词」——完成了符号世界里最完整的一次职业转型。

它的简历可以这么写:

  • 1536 年:意大利账本里的省墨缩写(anfora 的简写)
  • 1963 年:ASCII 表上的 COMMERCIAL AT(商业单价)
  • 1971 年:电子邮件地址分隔符(Tomlinson 的选择)
  • 2006 年:社交网络身份前缀(@username)
  • 2026 年:中文互联网的动词(「艾特我一下」)

五份工作,横跨五百年。一个字符活成了符号界的打工人——从账本到邮箱到社交到语法,哪里需要它,它就往哪里搬。而且它从不抱怨。

「@ 我一下」里的那个 @,大概不知道自己在 1536 年曾经值一只羊的价钱。但它可能也不在乎——毕竟对一只羊来说,被人类用了几百年,本身就是一份工作。

分享:

评论(0)

暂无评论,来写第一条吧~

发表评论