微信号:iProgrammer

介绍:最有影响力的程序员自媒体,关注程序员相关话题:IT技术、IT职场、在线课程、学习资源等.

Linus 又开怼:有时候标准就是一坨屎!

2018-06-09 21:35 程序员的那些事

(点击上方公众号可快速关注)


转自:开源中国

www.oschina.net/news/96906/linus-was-angry-about-standard-saying


在一个 Linux 内核 4.18-rc1 的 Pull Request 中,开发者 Andy Shevchenko 表示其在对设备属性框架进行更新时,移除了 union 别名,这引发了 Linus 的暴怒。


这一次 Linus Torvalds 发怒的原因在于 Andy 给出的移除 union 别名的原因是“根据标准行事”。Linus 回复邮件认为 Andy 这样的解释简直就是垃圾,并且还很危险,他解释使用 union 别名本身其实就是一种在 gcc 中开发的传统和标准,甚至它实际上已经是一种成文规定,并大骂对方白痴,同时大骂 C 标准是垃圾,言辞激烈。





“你为什么做出这样的解释呢,不要跟我说什么 C 标准描述得不清楚,C 标准有时就是一坨屎”,Linus 接着解释:“你所谓的这个标准,它对于别名规则的指导完全就是错误的!它需要被完全地无视,并且每个编译器都要为这样脑残的标准给出相应的解决方案,这就是我们使用 -fwrapv 和 -fno-strict-aliasing 的原因。而你现在竟然说根据这样一个标准来行事,你这样的理由真的没有任何意义。”


Linus 全程围绕 Andy 给出的理由“根据标准行事”进行抨击,他的意思是当标准与现实和代码的可靠性相冲突时,那么标准就是不重要的,“我一再强调:当标准与现实相冲突时,那标准文档就是卫生纸,它就完全没意义。事实上,在我面前卫生纸比标准文档还有用,至少它可以让我的屎不蘸到屁股上”,邮件最后他又平静地指出:“标准也需要质疑。”





随后在追加的第二封邮件中,Linus 表示他已经将 Andy 的 PR 合并,并且特别说明自己不是不喜欢他的代码,但是他还是“语重心长”(语气已经缓和了很多)地解释到:“我只是真的完全无法接受那种不顾现实的单方面的解释。”


同时他也解释了为什么说 Andy 给出这样的理由是很危险的,他认为这理由听起来就像是正确的,对于很多人来说,白纸黑字上的所谓标准是需要敬畏的,但是如果一些人不了解更多细节,比如在这件事情中,他不知道其实 union 别名就是 gcc 的标准做法,那他就被误导了!”标准有它发挥作用的地方,但是它也有局限“,Linus 最后写道。


Andy 回复邮件表示赞同 Linus 的说法,同时他也解释其实在设备属性框架中 union 别名确实是不合适的,所以才将它移除,而原因也不只是他之前说的“根据标准行事”,他在多个原因中可能选择了不太说得过去的一个。


最后 Andy 还补充了 Linus 关于“呼唤标准“(Appeal to Standards)在编程上应该被认为是一种逻辑谬误的看法,他认为这不仅仅只局限于编程领域。





此次 Linus 的发飙,怼出了一番大道理,标准有它的约束作用,但也是有作用条件的,道理其实很简单,不用过多分析。不去像 Andy 那样谈论到宽泛的领域,作为日常依据各种标准编程文档行事的程序员,欢迎你留言吐槽/赞美/...标准的那些事




【关于投稿】


如果大家有原创好文投稿,请直接给公号发送留言。


① 留言格式:
【投稿】+《 文章标题》+ 文章链接

② 示例:
【投稿】《不要自称是程序员,我十多年的 IT 职场总结》:http://blog.jobbole.com/94148/

③ 最后请附上您的个人简介哈~




看完本文有收获?请转发分享给更多人

关注「程序员的那些事」,不错过圈内事

 
程序员的那些事 更多文章 Node 之父:Node 失误太多无力回天,Deno 前景明朗 程序员的高考题又来了 不止谷歌、亚马逊,腾讯也曾想收 GitHub!没想到吧…… 微软+ GitHub vs &nbsp 微软确认收购 GitHub
猜您喜欢 从零开始的Android新项目5 - Repository层(上) Retrofit、Repository组装 傅盛分享:一位来自中国的80后硅谷投资人亲身讲述硅谷创投江湖史 身处geekpwn看信息安全新世界 游戏平台垃圾处理-Steam Cleaner