|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 不二如是 于 2018-6-14 09:35 编辑
Linus大神又出来怼一些“妖魔鬼怪”了。。。
在一个 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 给出的理由“根据标准行事”进行抨击。
他的意思是:
当标准与现实和代码的可靠性相冲突时,那么标准就是不重要的。
请大声朗读這句话,说的太TM棒了!
“我一再强调:当标准与现实相冲突时,那标准文档就是卫生纸,它就完全没意义。事实上,在我面前卫生纸比标准文档还有用,至少它可以让我的屎不蘸到屁股上”,邮件最后他又平静地指出:“标准也需要质疑。”
随后在追加的第二封邮件中,Linus 表示他已经将 Andy 的 PR 合并,并且特别说明:
自己不是不喜欢他的代码,但是他还是“语重心长”(语气已经缓和了很多)地解释到:“我只是真的完全无法接受那种不顾现实的单方面的解释。”
同时他也解释了为什么说 Andy 给出这样的理由是很危险的,他认为这理由听起来就像是正确的。
对于很多人来说,白纸黑字上的所谓标准是需要敬畏的。
但是如果一些人不了解更多细节,比如在这件事情中:
他不知道其实 union 别名就是 gcc 的标准做法,那他就被误导了!
”标准有它发挥作用的地方,但是它也有局限“,Linus 最后写道。
Andy 回复邮件表示赞同 Linus 的说法,同时他也解释其实在设备属性框架中 union 别名确实是不合适的。
所以才将它移除,而原因也不只是他之前说的“根据标准行事”。
他在多个原因中可能选择了不太说得过去的一个。
最后 Andy 还补充了 Linus 关于“呼唤标准“(Appeal to Standards)在编程上应该被认为是一种逻辑谬误的看法。
他认为这不仅仅只局限于编程领域。
感悟
此次 Linus 的发飙,怼出了一番大道理。
标准有它的约束作用,但也是有作用条件的,道理其实很简单,就是被太多不懂得人滥用。
Linus大神每一次的怼,其实都像一把“正义之剑”出来清理一下群魔乱舞的怪象。
更多大神语录请看:林纳斯大神的最新#愤怒技术喷
如果有触动,别忘了评分 :
|
评分
-
查看全部评分
|