当前位置: 首页
科技数码
程序员为一个看不见的东西争吵了半个世纪

程序员为一个看不见的东西争吵了半个世纪

热心网友 时间:2026-06-04
转载

从微软与IBM因Tab键争论到程序员之间长达半个世纪的Tab与空格缩进之争,Linux之父力挺8字符Tab,Python之父则推行4个空格。薪资调查显示空格党收入更高,但实为大厂规范所致。盲人程序员使Tab在道德上占优,而AI写代码或将终结这一争论。

最近,微软退役工程师 Raymond Chen 在个人博客中回忆了一段鲜为人知的往事:

当年微软与 IBM 携手开发 OS/2 操作系统时,双方曾因一个按键的触发逻辑争执不下。

在对话框界面中,用户应该按哪个键才能从一个输入框跳转到下一个?微软提议使用 Tab 键,IBM 不同意,于是矛盾层层上报,一直升到副总裁级别,对方还要求微软派遣同等职位的高管来确认方案。


微软这边的回应是:"Bill Gates's mother is not interested in the TAB key." 言下之意,比尔·盖茨上面就只剩他母亲了,难道连盖茨的母亲也要为 Tab 键专门开会吗?

仅仅一个按键,竟让两家科技巨头闹到高管对峙。

不过,和“用 Tab 切换字段”这种小摩擦相比,真正的风暴还在后面——编写代码时缩进到底该用 Tab 还是空格?

这个问题乍听起来就像“你吃饭用左手还是右手”一样无聊。但偏偏就是这件小事,全球最聪明的一群人为此争执了整整半个世纪,甚至比冯·诺依曼派与图灵派的辩论还要早。


要追溯这场代码缩进之争的源头,得从打字机说起。Tab 键最早出现在打字机上,本职工作就是替代空格完成缩进任务,避免打字员一格一格地敲击导致手腕劳损。

然而进入计算机时代,存储容量以 KB 计算。同样缩进四层,空格需要 16 个字符,而 Tab 仅需 4 个,节省下来的空间都是宝贵的资源。

因此早期终端直接将 Tab 宽度固定为 8 个字符。从 1969 年的 TOPS-10 到 1974 年的 VT52,Tab 始终保持 8 字符宽度。甚至在 ASCII 编码中,Tab 和 Space 也被明确区分为控制字符和可打印字符。老祖宗定下的规矩,不容商量。

直到 1978 年,VT100 终端首次允许用户自定义 Tab 宽度,从此麻烦接踵而至。

很快大家发现:你的 Tab 宽度是 4 个字符,我的是 8 个,他的是 2 个。你在自己电脑上排版整齐的代码,在我屏幕上打开就完全错乱,该找谁说理去?


为了应对混乱的 Tab 字符显示问题,空格党正式登场。他们的论据非常直白:“用空格,无论在什么环境下显示效果都一样。”

本来,你爱用 Tab 就用 Tab,喜欢统一就去空格,没有人会阻拦。但真正把技术分歧升级为“宗教战争”的,是两个关键人物的登场。

第一位选手,正是大名鼎鼎的 Linux 之父:林纳斯·托瓦兹。


这位老兄不仅是 Tab 党,更是纯粹的原教旨主义者。Linux 内核编码规范的第一章就这样写道:

“制表符是 8 个字符,因此缩进也必须是 8 个字符。有些异端运动试图将缩进设为 4 个甚至 2 个字符深度,这无异于试图将圆周率定义为 3。”

这语气,简直恨不得亲自开飞机去撞击空格党的大楼。

但林纳斯并非无理取闹。他的逻辑是:8 字符缩进,一行 80 个字符就满了,最多嵌套 3 层,超过 3 层就说明代码结构太差。代码缩进到第四层出现了问题,那不是 Tab 的问题,而是你的设计问题。

因此有一句名言至今流传:“如果你的代码需要超过 3 层缩进,那你已经完蛋了,回去重构你的程序吧。”


而空格党这边,也有一位重量级人物——Python 之父,吉多·范罗苏姆。

他和林纳斯走了完全相反的路。吉多把缩进化为了语法——你不缩进,代码就无法运行。解释器通过统计每行前面的空白字符数来判断代码结构。如果团队中有人用 Tab、有人用空格,代码立刻就会报错。


实际上,吉多早期也曾想推广 Tab,但社区反馈非常糟糕。和前面终端问题类似,不同编辑器对 Tab 转空格的默认行为完全不一致,代码一旦跨平台就直接崩溃。

因此,为了保全自己的“名声”不被社区集体攻击,他最终决定:所有人统一使用 4 个空格,严禁混用!

紧接着,他制定的 PEP 8 成为了 Python 的“宪法”,空格也成了 Python 社区的绝对信仰。


其实,双方都是为了解决代码规范问题:一方用强制的缩进深度倒逼代码架构优化,另一方用绝对的空格一致性换取跨平台安全。底层逻辑类似,但思路不同,结果也大相径庭。

再加上两位大佬的站台,就像封神榜里的元始天尊和通天教主都发了话,那还有什么可说的?

于是从上世纪末到最近几年,Tab 党和空格党就像阐教与截教一样,互不相让。

举个例子,在 HBO 神剧《硅谷》中,男主角发现女朋友使用空格缩进,当场崩溃冲出家门,破口大骂:“我绝不可能和一个用空格代替制表符的人在一起。”


啧啧,剧组的科技顾问是 Google 的开源总监,这段灵感确实来自程序员的真实吐槽。

还有 2017 年,Stack Overflow 的数据科学家也是看热闹不嫌事大,直接公开“拱火”:分析了几十万份数据后发现,使用空格的程序员平均薪资比使用 Tab 的高 8.6%。这件事还上了 BBC 新闻。

空格党你们怎么还搞薪资歧视啊喂!这是职场霸凌!


不过后来真相查明:并非用空格让你变有钱,而是有钱的公司要求你使用空格。

因为高薪群体大多供职于工程规范严格的头部企业,在几百人协作的大型代码库里,空格带来的“绝对一致性”确实最省心。

说白了,缩进方式本质上只是一个变量,它代表的不是编程能力,而是你所处的工程环境成熟度。


那么讲到这里,最后空格党和 Tab 党到底谁赢了呢?

直接说结论:虽然没分出胜负,但 Tab 党在道德层面占据了上风。

这倒不是因为 Tab 根正苗红,而是一群大家从未考虑过的群体——盲人程序员。

盲人依靠盲文显示器写代码。盲文面板通常只有 40 个字符格,4 空格缩进嵌套 3 层就是 12 格,相当于 30% 的物理空间浪费在空白上,手指摸一圈发现没摸到多少代码内容。而 Tab 一层只占 1 格,3 层嵌套只需 3 格。

因此,Tab 在道德层面直接封神——空格党追求的“一致性”,本质上假设每个人都有完美视力和标准显示器,但世界上还有很多人并非如此。


不过空格党也没有就此投降——安装一个适配插件就能折叠空格缩进,技术问题终归可以用技术手段解决。

同样,随着 2017 年 EditorConfig、Prettier 这类格式化工具的出现,手工敲代码的争论也逐渐被技术改进所平息。这些工具默认不使用 Tab,但也支持,并且提供了使用 Tab 缩进、空格对齐的 SmartTabs 思路。

所以空格还是 Tab,越来越变成了一种文化上的身份认同。


弗洛伊德在 1917 年提出过一个概念,叫“微小差异的自恋”。意思是两个群体越相似,就越会对彼此之间那一点细微的不同抓狂。所有程序员面对的压力几乎一样:改不完的需求、查不尽的 Bug、半夜三点的报警、发际线曲线高度重合。正因为太像了,才需要找一个微小差异来证明——“我跟你不一样”。

无论是简约头像还是动漫头像,格子衫还是女装,Tab 还是空格,这些都早已不再是单纯的工程决策,本质上都是极客世界里的部落图腾。

这种古已有之的争论,靠人类自己永远分不出胜负。

但随着 AI 时代的到来,分不分其实也没什么意义了。

2026 年,Claude Code 的创造者鲍里斯·切尔尼说:“我们公司已经没有任何手写代码了”,并预言“软件工程师”这个头衔在 2026 年就会开始消失。以后每个人都是会写需求的产品经理,代码的事交给 Agent。


当 AI 帮你写代码的时候,它遵守的是项目配置文件。至于缩进用什么?

随便。反正不是人敲的。

这好比你费了半天劲争论毛笔该用羊毫还是狼毫,结果抬头一看,大家都用打印机了。

也许再过二十年,“你用 Tab 还是空格”也会和“羊毫还是狼毫”一样,成为古法编程时代的非遗谈资。

老程序员们坐在一起喝酒,聊起当年为了一个看不见的字符差点跟同事绝交,就像老木匠聊起刨子该推还是该拉,吵得不可开交。

手艺还是好手艺。只是用得上的人,越来越少了。

撰文:纳西

编辑:江江 & 面线

美编:素描

图片、资料来源:

the register,Github等,部分图源网络


来源:https://www.163.com/dy/article/KUHODT84051196HN.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
小米SU7六月销量揭晓零售34738辆批发超2万辆

小米SU7六月销量揭晓零售34738辆批发超2万辆

7月1日,小米汽车官方微博发布消息称:2026年6月,月交付量稳定突破30000台。信息虽简短,但详细数据仍需参考乘联会的统计报告。 小米官方未单独公布具体数字,不过乘联会在6月全国乘用车市场分析中清晰列明:小米汽车新能源乘用车零售销量达34738辆,其中主力车型SU7批发销量突破2万辆,具体为20

时间:2026-07-09 13:02
Meta投资百亿美元建设加拿大首个数据中心

Meta投资百亿美元建设加拿大首个数据中心

Meta在加拿大阿尔伯塔省投资约100亿美元建设首个海外数据中心,装机容量1吉瓦,预计两三年内建成。同时探索云计算业务,向第三方出售算力。市场对其资本支出逻辑和回报存在质疑。

时间:2026-07-09 13:02
iPhone 18 Pro A20 Pro芯片沿用LPDDR5X架构

iPhone 18 Pro A20 Pro芯片沿用LPDDR5X架构

苹果A20Pro芯片未用LPDDR6,沿用LPDDR5X,通道从4条增至6条,位宽达96-bit,优化AI推理、多任务及影像性能,成本与体验间优先释放当下性能。

时间:2026-07-09 13:02
三星全业务启动AI转型全面引入生成式AI工具

三星全业务启动AI转型全面引入生成式AI工具

三星宣布全面启动人工智能转型,将在所有关联公司部署双子星、ChatGPT等生成式人工智能工具,覆盖设计、研发、生产、营销、服务等八大核心业务环节,同时设立专职人工智能组织,对高管和员工开展系统培训,并发布人工智能转型共同愿景宣言。

时间:2026-07-09 13:01
太平洋证券:硅烷材料从光伏辅料拓展至硅碳负极与光纤核心

太平洋证券:硅烷材料从光伏辅料拓展至硅碳负极与光纤核心

电子特气是半导体制造第二大耗材,市场规模预计从2024年195亿元增至2030年708亿元。硅烷材料凭借“气体+含硅”双重特性,从光伏辅料向硅碳负极、光纤核心原料跃迁,成为重要增长极。

时间:2026-07-09 13:01
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜