文档章节

发生了什么?Linus 又发怒了?

问题终结者
 问题终结者
发布于 06/18 15:15
字数 913
阅读 31
收藏 0
点赞 0
评论 0

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

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

发生了什么?Linus 又发怒了?发生了什么?Linus 又发怒了?

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

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

发生了什么?Linus 又发怒了?发生了什么?Linus 又发怒了?

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

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

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

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

发生了什么?Linus 又发怒了?发生了什么?Linus 又发怒了?

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

原文来自:https://www.linuxprobe.com/wtf-linus-angry.html

本文转载自:

共有 人打赏支持
问题终结者
粉丝 10
博文 646
码字总数 80710
作品 0
运维
Linus 又开怼:有时候标准就是一坨屎!

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

h4cd
06/09
0
0
Linus 又发怒了,这次是针对丑陋的代码

一位内核开发者在开发者邮件列表上递交了Git Pull请求,但Linux作者Linus Torvalds看了他的代码后非常生气,认为代码丑陋难读,相比开发者想要替代的简洁代码完全是一种倒退。Linus再次在邮件...

oschina
2015/11/04
16.1K
95
Linus大神又怒了 呃...我为什么要说“又”?

Linus大神实乃性情中人,口无遮拦。继称OpenBSD开发者是一帮自慰的猴子、 调侃digg用户是“手淫的海象”、以及 对 Nvidia 比中指爆粗 后,又有不懂事的人惹大神发怒了。 这回事由在于Linus认...

Soga
2012/12/26
13.9K
75
Linux2.6内核和Linux2.4内核有什么不同?

 1.模块子系统(Module Subsystem)、统一设备模型(Unified Device Model)和 PnP 支持模块子系统发生了重大变化。  2.稳定性有所提高   为了彻底避免内核加载或者导出正在被使用的内核...

jtihj
2009/12/20
0
0
Python 的后 Guido 时代: “独裁”是管理项目的最好制度?

有“终身仁慈独裁者(BDFL)”之称的 Python 创始人 Guido van Rossum 宣布退出 Python 核心开发组决策层已有一周,从那以后社区发生了什么,治理项目的未来又将如何? Guido 在宣布退出决策层...

局长
今天
0
0
重装Windows后找回丢失的Linux启动项

众所周知,安装Windows和linux双系统的时候最好是先装Windows,然后安装linux。因为linux可以寻找硬盘下的Windows系统,从而显示引导菜单。而霸道的Windows直接无视其他系统。 但是,对于Win...

独-奏
2012/09/13
0
0
Linux ASPM 问题一个适合的解决方案

“终于,看来对Linux内核中的ASPM(Active State Power Management,活动状态电源管理)问题,亦即闻名遐迩的Linux 2.6.38内核中的可导致笔记本电脑电力急剧下降的电力退化的问题,一个合适的...

xyxzfj
2011/11/12
0
0
从WINDOWS转到LINUX之路

说起来你可能不信,两年前我还根本不知道 Linux 是什么,放弃 Windows 转投 Linux 更是不可能。 我花了大量时间和耐心在 Linux 上,我的朋友们都能为我证明这点。说起来你可能不信,两年前我...

linuxprobe16
2017/11/04
0
0
在Windows上运行Linux

之前了解过一些适用于linux的Windows子系统,最近又听人提起,于是在自己的Windows 10专业版上安装了一个Ubuntu。运行起来还真方便,以后在windows上开发Linux程序就不需要安装桌面虚拟化应用...

Airship
05/06
0
0
Linux 对 ARM 的支持一团糟

当硬件制造商正在谈论基于ARM芯片的服务器时, 支持ARM的软件还要继续努力开发以跟上发展步伐。LINUX越来越普 及,ARM芯片必须让自己在这个系统上工作得更有效率。 但是,根据IT WORLDS的编辑...

麦秸
2011/07/02
9.2K
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring配置xml启动报错 Connot find 'beans'

1.我们先看一下spring的原始配置 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSc......

江湖鱼大虾
5分钟前
0
0
与女儿谈商业模式 (4):戴尔的成功秘诀

分类:与女儿谈商业模式 | 标签: 戴尔 经济学 陈志武 2007-05-15 10:26阅读(7434)评论(36)   2007年5月《创富志》与“女儿谈商业模式”专栏 (之四)   戴尔的成功秘诀   陈志武   ...

祖冲之
14分钟前
0
0
www.w3.org被qiang导致logback报错:Connect reset

web项目部署到tomcat后,web项目中的logback不能运行,报错信息如下: Reported exception: ch.qos.logback.core.joran.spi.JoranException: I/O error occurred while parsing xml file......

浮躁的码农
28分钟前
0
0
JDeveloper中文乱码解决

全局设置字体; 全局设置环境编码; 项目设置编译器环境编码。

wffger
56分钟前
2
0
MySQL主从介绍 , 准备工作,配置主,配置从, 测试主从同步

MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启bin...

TaoXu
今天
2
0
线性代数学习总结

亭子happy
今天
1
0
Java8:Lambda表达式增强版Comparator和排序

1、概述 在这篇教程里,我们将要去了解下即将到来的JDK 8(译注,现在JDK 8已经发布了)中的Lambda表达式——特别是怎样使用它来编写Comparator和对集合(Collection)进行排序。 这篇文章是...

孟飞阳
今天
0
0
从架构到组件,深挖istio如何连接、管理和保护微服务2.0?

近几年我一直从事于微服务系统的设计以及实现方面的工作,属于微服务架构一线实践者。之前做过一些单体系统的微服务改造,在微服务拆分、治理等方面都有一定的经验。 本人比较特殊一点的经历...

xiaomin0322
今天
1
0
基于vue的h5文件切片上传(获取文件md5,实现秒传、进度条实现)

template <button @click="file"></button><label ref="upload" style="position: relative;"> <input type="file" @change="selectFile" style="position: abs......

hkaikai
今天
2
0
Spring Boot 2.0 项目实现自同步AD域账号

在通过Spring Boot的自动化装配功能及JDK自带的LDAP模块,可通过如下几个简单步骤实现业务系统自动同步AD域账号功能。 1. Java自带ldap搜索域账号信息核心代码: try { LdapContext ctx...

B超
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部