展开菜单
首页 精品内容 本月促销 装机必备 Windows macOS软件 IOS软件 Android AI PDF教程 专题
全部分类

当前位置:

首页 > 硬件相关 > 为一个看不见的东西,程序员因吵了半个世纪。

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

从微软与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算的。同样缩进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之父,吉多·范罗苏姆。

跟Linus走的完全是相反的路。他把缩进变成了一种语法——你不缩进,代码就跑不了。解释器靠数你每行前面有几个空白字符来判断代码结构。如果团队里有人用Tab有人用空格,那代码直接就报错。


实际上,吉多早期也想推Tab,但社区反馈实在是一言难尽。跟前面的终端问题类似,不同编辑器对Tab转空格的默认行为完全不一样,代码一跨平台就直接炸了。

所以为了保全自己的“户口本”不被社区AOE,他最终决定:所有人全部用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年就会开始消失。以后每个人都是会写需求的产品经理,代码的事儿交给Agent。


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

随便。反正不是人敲的。

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

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

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

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

撰文:纳西

编辑:江江 & 面线

美编:素描

图片、资料来源:

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


本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
硬件相关
相关文章 更多
精品专题 更多
本月促销

正软商城本月促销专区,汇集办公、设计、安全、影音、系统工具及AI软件等正版软件优惠活动,提供限时折扣、特价授权和优惠购买信息,活动库存及价格以页面实时展示为准。

装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
灵活计算器
灵活计算器

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

图几
图几

图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

Menuist
Menuist

Menuist 是一款面向 macOS 的 Finder 右键菜单增强工具,主要用来补充新建文件、快捷导航等常用操作,让日常文件管理和访问路径时更高效、更顺手。

Mole
Mole

Mole 是一款专为 Mac 设计的深度清理优化工具,涵盖缓存清理、应用管理及实时状态监控等功能。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

WINDOWS 更多
Windows 10
Windows 10

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

傲梅轻松备份
傲梅轻松备份

傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Wise Folder Hider Pro
Wise Folder Hider Pro

Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

PinStack
PinStack

PinStack是一款轻量级的Windows平台剪贴板管理工具,优化您的剪贴板使用体验。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

Seer
Seer

Seer是一款在Win平台下的空格键功能增强效率工具,只需轻敲空格键,就能预览几乎任何格式的文件。它更适合把零散的小功能集中起来使用,处理高频琐碎任务时会更省事。