当前位置: 首页
业界动态
程序员已为一个看不见的东西争论了半个世纪

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

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

程序员关于缩进用制表符还是空格的争论持续半个多世纪,Linux之父与Python之父分别代表两派。盲人程序员对制表符的需求使其在道德上占优,最终格式化工具的出现逐渐平息了这场被称为“缩进战争”的争论。

我们先从一桩往事说起。

前阵子,微软资深老兵Raymond Chen在他的博客上,揭开了一段尘封已久的趣闻:当年微软和IBM携手开发OS/2操作系统时,双方竟为一个按键僵持不下。

在对话框里,用户按哪个键才能在输入框之间跳转?微软坚持用Tab,IBM却不认同。这场争议层层上报,整整跨越了七级管理架构,最终呈递到副总裁案头,并要求微软派出同级别的高管来做最终裁决。

微软的回应堪称经典冷幽默:“比尔·盖茨的母亲对Tab键不感兴趣。”言下之意,比尔·盖茨之上再无高管,难道还要请他的母亲来参与讨论一个小小的按键?

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

但说实话,跟另一场旷日持久的战争比起来,这实在不算什么。那场战争的主题是:编写代码时,缩进究竟该用Tab键,还是空格键?

这个问题听上去就像“你吃饭用左手还是右手”一样琐碎。然而,就是这样一个看似微不足道的事情,却让全球最聪明的一群人争论了整整半个世纪,其历史甚至比“冯·诺依曼派”与“图灵派”的论战还要久远。

一切还得从打字机说起。Tab键最初就出现在打字机上,它的本职任务就是替代空格完成缩进工作,避免打字员一下下敲击空格键导致手腕劳损。

进入计算机时代后,存储容量按KB计算。同样是缩进4层,空格需要16个字符,而Tab只需4个,节省下来的都是实实在在的成本。因此,早期终端直接将Tab宽度固定为8个字符。从1969年的TOPS-10到1974年的VT52,Tab始终是8个字符。在ASCII码中,Tab和Space也有着截然不同的定义——一个是控制字符,另一个是可打印字符。老祖宗定下的规矩,无可争议。

直到1978年,VT100终端首次允许用户自定义Tab宽度。这下,麻烦来了。

大家很快发现:你的电脑上Tab显示4个字符宽,我的是8个,他的是2个。在你那里排版完美的代码,换到我的屏幕上立刻变得杂乱无章。这该找谁说理?

为了应对这种混乱,空格派正式登场。他们的论点简单而直接:“使用空格,在任何地方都一样。”

本来,你爱用Tab就用Tab,喜欢“到哪儿都一样”就用空格,互不干扰。但真正将这场技术分歧升级为“宗教战争”的,是两位重要人物的正式登场。

第一位:Linux之父,林纳斯·托瓦兹

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

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

本来空格派顶多算盖两栋楼,而林纳斯简直恨不得亲自开着飞机去撞毁它们。

但他这么执着也并非无理取闹。他的逻辑是:8字符缩进,一行80个字符很快就填满了,你最多只能嵌套3层。超过3层?说明你的代码本身写得就有问题。如果你的代码缩进到第四层出了毛病,那不是Tab的错,而是你的问题。

因此,有句名言至今仍在流传:“如果你的代码需要超过3层缩进,那你就已经搞砸了,去修正你的程序吧。”

第二位:Python之父,吉多·范罗苏姆

当然,空格派也拥有顶尖高手。这边派出的代表,就是吉多·范罗苏姆。

与Linux走的是完全相反的道路,Python将缩进变成了一种语法规则。你不缩进,代码就无法运行——解释器通过数每行前面的空白字符来判断代码结构。如果团队里有人用Tab、有人用空格,程序会直接报错。

实际上,吉多早期也曾尝试推行Tab,但社区的反馈实在一言难尽。类似于终端问题,不同编辑器对Tab转换为空格的默认行为完全不同,导致代码在跨平台时立刻崩溃。

为了保全自己的声誉不被社区“群起而攻之”,他最终做出决定:所有人统一使用4个空格,严禁混用!

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

其实,两派的核心逻辑本质上相差无几——一方用强制的缩进来倒逼代码架构优化,另一方用绝对统一的空格来换取跨平台的安全性。思路不同,结果自然大相径庭。再加上两位技术大佬的站台,就好比封神榜里的元始天尊与通天教主都发了话,接下来自然不必多说。

从上世纪末到最近几年,Tab党和空格党就像阐教与截教,彼此攻讦不休。

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

该剧的技术顾问是Google的开源总监,而这段情节的灵感恰恰来自程序员们的真实吐槽。

还有2017年,Stack Overflow的数据科学家也忍不住“拱火”:他们分析了几十万份数据后发现,使用空格的程序员平均薪资比使用Tab的高出8.6%。这一发现甚至登上了BBC。

空格派难道还搞起了薪资歧视?这简直是职场霸凌!

不过,后来真相得以查明:并非使用空格让你变有钱,而是有钱的公司普遍要求你使用空格。高薪群体大多供职于工程规范严格的大型企业。在几百人协作的庞大代码库里,空格所带来的“绝对一致性”确实最为省心。

说白了,缩进方式本质上只是一个变量,它并非编程能力的体现,而是反映出你所在工程环境的成熟度。

那么,最终谁赢了?

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

这并非因为Tab键“根正苗红”,而是源于一群大家可能从未考虑过的人——盲人程序员。

盲人程序员依靠盲文显示器来编写代码,而盲文面板通常只有40个字符格。4空格的缩进嵌套3层就占用了12格,相当于30%的物理空间被白白浪费。手指摸一圈下来,发现没摸到多少实际代码内容。而Tab一层仅占一格,3层嵌套只需3格。

这样一来,Tab在道德层面直接“封神”。因为空格派所追求的“一致性”,本质上假设每个人都拥有完美的视力和标准的显示器。但现实世界并非如此。

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

同样地,随着2017年EditorConfig、Prettier这类代码格式化工具的普及,手工敲代码引发的这种争论也渐渐被技术改进所平息。这些工具默认不使用Tab,但同样支持,并会采用“Tab缩进、空格对齐”的SmartTabs思路。

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

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

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

这种自古以来就存在的争论,仅靠人类自身,永远分不出胜负。

然而,随着AI时代的到来,分不分胜负其实也已不再重要。

2026年,Claude Code的创造者鲍里斯·切尔尼表示:“我们公司已经没有手写代码了。”他还预言,“软件工程师”这个头衔将在2026年开始消失。未来,每个人都是会写需求的产品经理,代码相关的工作全交给AI Agent。

当AI帮你写代码时,它会严格遵守项目配置文件。至于缩进用什么?随你便。反正不是人类亲手敲的。

这就好比你好不容易争论清楚毛笔该用羊毫还是狼毫,结果一抬头,发现大家都改用打印机了。

也许再过二十年,“你用Tab还是空格”这个问题,也会和“羊毫还是狼毫”一样,成为古法编程时代的一项非物质文化遗产话题。

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

手艺依然是好手艺。只是能用到它的人,越来越少了。

来源:https://36kr.com/p/3838126022379776

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

同类文章
更多
特斯拉开发Grok语音控制FSD,实现对话式自动驾驶

特斯拉开发Grok语音控制FSD,实现对话式自动驾驶

7月12日,一则引人关注的消息传来:与汽车进行语音交互的方式,正从“发出指令”转变为“像与驾驶员聊天”一样自然。 特斯拉将人工智能融入汽车的计划,即将迎来新的突破——让Grok聊天机器人与FSD自动驾驶系统实现深度整合。AI不仅能与用户进行自然对话,还能直接操控车辆行驶。 事情的起因是这样的。近日,

时间:2026-07-12 13:49
MiniMax闫俊杰放弃薪酬 5%股份激励团队和开源

MiniMax闫俊杰放弃薪酬 5%股份激励团队和开源

MiniMax创始人闫俊杰宣布即日起不再领取薪酬,并拿出个人名下5%股份:4%用于激励团队,1%设立基金支持开源社区。此前公司因大规模限售股解禁股价大跌20%,但大股东无减持计划,创始团队已设12个月自愿禁售期。

时间:2026-07-12 13:48
小米首款SUV命名SkyNomad N90揭晓

小米首款SUV命名SkyNomad N90揭晓

小米澎程首款SUV命名为SkyNomadN90,采用全新十字大灯、封闭式前脸设计,该车定位智能可变大空间SUV,可切换为工作室、卧室等多种移动生活空间,内部研发代号为昆仑,提供五座和七座版本,并标配激光雷达系统。

时间:2026-07-12 13:48
Redmi Note 17 7英寸大屏8000mAh电池追剧神器

Redmi Note 17 7英寸大屏8000mAh电池追剧神器

红米Note17将于7月14日发布,配备7英寸大屏与8000mAh电池,定位千元价位。大屏视野开阔,观影沉浸感强;大电池续航持久,弥补短板;延续Note系列耐用特质,填补千元大屏市场空白。

时间:2026-07-12 13:48
马斯克承认看错Anthropic 不会因竞争断其服务器

马斯克承认看错Anthropic 不会因竞争断其服务器

马斯克公开承认看走眼,称Anthropic现为AI领域领导者,驳斥“拔服务器”的竞争手段。SpaceX向Anthropic出租算力,双方合作紧密。马斯克强调不会因竞争切断服务,认可其模型实力,体现技术与商业并行的底线。

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