专栏名称: 码农翻身
工作15年的前IBM架构师分享好玩有趣的编程知识和职场的经验教训, 不容错过。
目录
相关文章推荐
OSC开源社区  ·  罗永浩AI创业项目J1 ... ·  昨天  
程序猿  ·  DeepSeek ... ·  2 天前  
程序员的那些事  ·  趣图:爱了爱了,这是真·模块化代码 ·  3 天前  
逸言  ·  智能阴影:AI时代的生存危机 ·  4 天前  
51好读  ›  专栏  ›  码农翻身

一个软件Bug,竟然让爱好和平的国家领袖变成了核武器暴君!

码农翻身  · 公众号  · 程序员  · 2025-01-06 08:55

正文

01
核甘地的诞生


众所周知,印度圣雄甘地是一位和平的爱好者,也是非暴力不合作运动的领袖。


他的座右铭是“逢恶报以善,用德报以怨”,一生反对暴力,奉行非暴力,即使付出生命代价也不更改,因此他受到印度民众和一些国家推崇。



但是在1991年,他竟然变成了极具攻击性,挥舞着核武器大棒,四处威胁其他国家的暴徒。


爱好和平,变成了爱好“核平”,他获得了一个“核甘地”的雅称。


当然,这一切并不是现实,而是发生在《文明》这个经典的回合制策略游戏中。



《文明》由传奇游戏设计师席德·梅尔(Sid Meier)开发,核心目标是带领一个文明从史前时代发展到未来时代,通过科技、文化、军事和外交等多种方式实现统治世界的胜利。



据说,在1991年《文明1》中,每个文明的领袖都有一个参数来描述他们的攻击性,范围从1到10, 1表示攻击性最低,10表示最高。


印度的圣雄甘地因为是和平的爱好者,攻击性最低,被设为1,也就是说,甘地只会防御,绝对不会主动发起战争。


《文明》游戏一旦进展到某个程度,游戏中的文明会进入所谓“民主”政体,这时候,攻击性会再降低两级。


甘地的攻击性就从1变成了-1


敏感的程序员立刻就明白这可能会发生什么事情了,一个8位的无符号整数,-1其实就溢出了,变成了255。


温和的甘地一下子获得了最强的攻击性,比最高攻击力的文明领袖还高25倍!


在《文明》的科技树中,核武器一般在进入民主政体后就会解锁,于是攻击力飙升的甘地,就开始拿着核武器血洗邻国了。



有个玩家说:“有一次我正在玩《文明》,对手就是‘甘地’,我的实力已经发展得非常强了,但是突然间甘地开始使用核武器轰炸一切,每两三回合就有一个核弹,这些核武器造成全球变暖,冰盖都融化了好几次,我被杀得片甲不留,完全懵了...”


哈哈,一个非暴力不合作的领袖,突然间变成了最狂热的战争分子,这是在是太搞笑了。



《文明》的开发者后来也得知了这个问题,故意把它实现到了后续的版本中。


从此以后,“核甘地”不再是一个Bug,而是一个Feature



02
广泛传播


“核甘地”的故事既优雅又滑稽,在网上疯传,大家都相信这个“事实”无可辩驳的,甚至在哈佛大学的计算机课程中也被引用为整数溢出的例子。


围绕着它出现了大量恶搞的漫画,比如这个,甘地在第一回合就要用核弹攻击所有人:



还有这个要用核弹血洗美国:


甘地的经典名言也被魔改:首先他们忽视你,而后嘲笑你,接着会打你,接着你用核弹轰炸他们,最后就是你的胜利之日



虽然网友们热情很高,但实际上,整数溢出导致核甘地这个故事确是不存在的。


根据《文明2》的首席设计师Brian Reynolds说,领袖的攻击值并不是1到10,而是只有3种数值。甘地的攻击力很低,但是还有三分之一的领袖攻击力和甘地是一样的。


《文明》的首席程序员Sid Meier也提到了在《文明1》和《文明2》中,编程语言是C和C++,攻击值用的是有符号数,而不是无符号数


即使甘地的攻击值变成了-1,也不会溢出,依然会保持在攻击力很低的程度。


在战争中,印度会像其他文明那样使用核武器,但是甘地使用核武器的频率不会超过那些热爱和平的领导人。


那么“核甘地”梗到底是怎么来的呢?


可能来自《文明5》的首席设计师乔恩·谢弗。



他觉得“一个推行非暴力不合作主义的印度政客可能想要用核武器攻击他的邻国,这很有趣。”,就把甘地的“建造核弹”和“使用核弹”参数设置为最高可能值 12。



这让甘地喜欢建造核武器,在获取核武器后变得相当暴躁。



03
好故事才能传播


在人们的认知中,甘地代表和平与非暴力,而“核武器”却是毁灭性的象征,这种巨大的反差带来了强烈的幽默感和荒诞感。


“核甘地”的故事以一种简单、直观的方式满足了人们对《文明》系列游戏机制的好奇心。


尽管“核甘地”是虚构的,但听起来是那么合情合理,丝丝入扣,完全迎合了人们对程序Bug导致荒谬后果的刻板印象。


“核甘地”再次证明了一点:人们倾向于相信“好故事”,而不是枯燥的事实。


如果你想让一件事情广泛传播,一定要考虑把它包装成一个好故事。


只有具备鲜明情绪色彩的故事才更吸引人,才能在互联网上疯传。


不过,在互联网信息泛滥和碎片化的时代,人们没有时间和精力去验证每条信息的真实性,更愿意停留在娱乐化的表层,这也是如今互联网的信息消费趋势:娱乐至死。


PS:如果你家孩子喜欢玩游戏的话,强烈推荐去玩玩《文明》,化身文明领袖,建设城市、管理资源、发展科技、组建军队以及与其他文明互动。


它不仅是一个游戏,还能学到很多历史、科技和文化知识,兼具娱乐性和教育性,比那些打打杀杀的游戏要强得多。


全文完,觉得不错的话点个或者在看吧!


近期爆文

小心,美国人又要在基础软件上弯道超车了

世界上最幸福的程序员

世界上最厉害的协作软件,让程序员痛不欲生,最后被印度人搞走了

1970年以来技术的发展趋势,怪不得程序员35岁就被裁......

这个大学生写了个免费软件,全世界网民抢着给他送钱,每月10万美元

全世界流浪的程序员,用最原始的技术,每月赚17.6万美元!

开源软件的叛徒,加入了微软

这两个程序员要花100万,彻底重写世界上最复杂的软件