从Linus Torvalds对丑陋代码发怒说起—应当建立程序员的评级机制

Posted by

提交linux内核代码丑陋,引发Linus发怒

Linus因为linux内核开发者提交的丑陋代码而发怒
Linus因为linux内核开发者提交的丑陋代码而发怒

11月初的时候,文武双全在OSC上看到一篇文章(实际上也是转载的,哈哈),标题叫《Linus 又发怒了,这次是针对丑陋的代码》。事情的原因是,一位linux内核开发者提交的内核代码过于丑陋难读,Linus Torvalds看完以后觉得用这个傻叉的代码替代之前简洁的代码完全是一种倒退。Linux因此在邮件列表上爆粗口狂骂,批评这名内核开发者和他的代码。

媒体和粉丝们的观点大多集中在,Linus骂人到底对不对,他做人太差劲、不好沟通等等。Linus大神一向脾气不好经常骂人,嘴巴臭到举世闻名。文武双全确想到了另外一个问题,那就是Git提交代码的机制有问题,才导致了Linus不得不面对垃圾代码。以至于不能忍到要在邮件列表上爆粗口,发泄不满甚至警醒世人。

问题的关键是:垃圾代码为什么会提交到Linus面前。就好比一个傻叉秀才,给皇帝提了一个馊主意。放到古代,别说骂娘了,直接都可以砍头了吧。

Git是Linus给自己挖的坑

Git是Linus本人为Linux内核开发的版本控制系统,说到底这个坑是他给自己挖的。在设计Git时,Git的机制是所有人都可以Fork,然后提交代码。提交请求并没有分级,虽然做到了开发者人人平等,但是效率问题突出。这个问题不仅仅在Linux内核上面遇到,所有的Git上面的开源项目,都会遇到这一问题。一些水平较差的开发者,试图向开源项目贡献代码。在一些大的项目上,不被采纳的请求占比非常高。

所以说,这个坑说到底还是Linus挖给自己跳的。或许说,他当初开发Git时,根本就没考虑到这个问题。以至于自己从一开始到现在,就饱受垃圾代码的折磨。他生命里,相当大一部分时间是在跟无效的请求做斗争。你说,他能不愤怒吗?

无效的请求和垃圾代码,极大的浪费全人类的资源和生命

以前上学的时候,老师经常会说让我们节省粮食。每年人类浪费的粮食,可以养活多少多少人。实际上这个规律,可以用“二八定律”来做总结,而且放在任何一个领域都有点作用。比如说:人类平均每天浪费的时间跟认真工作的时间大约是80%跟20%。据我观察,Git上面被采纳的有意义的Request和不被采纳的无意义的Request,差不多也可以二八开。

苹果在GitHub上开源的编程语言swift的Pull Requests数量对比
苹果在GitHub上开源的编程语言swift的Pull Requests数量对比

2015年12月4日,OSC上出现了另外一条新闻,就是Swift正式开源了。文武双全跑到GitHub上面,找到了swift开源项目的地址。在所有Pull requests的请求中,有120个被关闭,有26个处于Open的状态。有相当一部分人在浪费时间和精力,去贡献无效代码。代码是开发者写出来的,但是目前Git上根本就没有一套机制,可以给开发者进行评级,对低水平开发者和垃圾代码进行过滤。让正确的代码给正确的人审核,让正确的人能够提交代码。

应当建立开发者的评级机制

按照惯例,文武双全绝对不会只提出问题,而不提出解决问题的方法。类似Github这样的平台,应当有一个制度来解决这个问题,比如说:对开发者进行评级。像Linus这样的代码审核者,完全可以按照开发者的评级对Pull request进行排序,优先查阅高评级的代码开发者提交的。也可以安排其他代码审核者,去审核余下由低评级开发者提交的代码。这样就会大大减少本文开头所说的情况,Linus见到垃圾代码忍无可忍的情况。

文武双全的小秘密

文武双全其实一直在思考类似的机制,其实我不仅仅想做程序员的评级机制。参考谷歌已经抛弃的PageRank机制,我希望能够做出一套全人类的评级机制。传统搜索引擎对网页和网站的评级和排名机制,点评网站对企业的评级和排名机制,完全可以转化为对人类自身的评级。只要文武双全的这个项目可以成功,我相信人类会向前进一大步。

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据