怼天怼地怼空气的Linus 喜欢和什么样的人一起工作?
Linus Torvalds的“暴脾气”是出了名的,看到令自己不爽的事情就会怼过去,比如:
他曾经说Intel提交的漏洞修复程序是彻底的垃圾!
当别人说Git没用C++开发的时候, 他反击说“C++是一种可怕的语言”
他喷别人的Pull Request : Your code is shit .....
他吐槽XML可能是有史以来最糟糕的格式......
甚至直接对着摄像机说了一句“So NVIDIA, Fxxk you.”同时给了一个中指。
有人说这是天才的个性,但是这种性格确实是得罪了不少人,去年9月份,他发邮件做了一个反省,说自己也许要照照镜子,为自己的人身攻击言论道歉。
我是有点好奇,领导着世界上最大的开源项目,Linus欣赏谁,尊重谁,喜欢和谁一起共事?
TED上对Linus 的一段访谈视频“The mind behind Linux” 给出了一点线索。
(ps. Linus 不喜欢在公众面前演讲,如果非要参加一些活动的话,他更喜欢和主持人一对一地对话,这会让他感觉到舒服)
在这段访谈中展示了两段完成同样功能的代码(伪码), 第一段是这样的:
remove_list_entry(entry){prev = NULL;walk = head;// Walk the listwhile (walk != entry){prev = walk;walk = walk -> next;}// Remove the entry by updating the // head or the previous entryif (!prev)head = entry->next;elseprev->next = entry->next;
}
学过数据结构的同学(即使你没学过C语言中的指针),估计也能明白这段代码的大致意思: 这是在删除一个单向链表中的某个节点。
(这段代码没有考虑待删除的节点不在链表中的情况。)
由于是单向链表,在寻找某个节点的时候,需要不断地记录下这个节点前面的节点(prev)
另外,这段代码还考虑到了一个特殊情况, 待删除的节点不是中间节点, 而是头节点(head)。 即使有这个特殊的情况,这段代码还是相当容易理解的,绝大部分人都会写出这样的代码,学校的老师也会这么教我们。
然后Linus给出了另外一段代码(伪码),完成了同样的功能。
remove_list_entry(entry){// The "indirect" pointer points to the // *address* of the thing we'll updateindirect = &head;// Walk the list, looking for the thing that// poins to the entry we want to remove_list_entrywhile ((*indirect) != entry){indirect = &((*indirect)->next);}// .. and just remove it*indirect = entry -> next;
}
我看到这段代码的第一印象就是很简洁, 根本没有if else, 不管你删除的是头结点还是中间节点,都可以用同样的逻辑来表达。
但是这段代码使用了指针的指针,我看了一会儿才明白到底是怎么工作的。 一旦理解以后,就发现,这确实是个更优雅的方法。 消除了if else, 消除了previous。
我本来也想用图来表达一下,但是发现画出这个indirect的变化过程有点麻烦,大家充分发挥下想象力,自行脑补一下吧。
关键点就是indirect 这个指针第一次指向的是 head 的地址,第二次指向的是节点1.next的地址, 第三次指向的是节点2.next的地址。
Linus对比了这两段代码以后说道:
第一段代码并不好, 它需要区别第一个节点和中间节点,有特例。
第二段代码展示了用一种不同的方式来看待一个问题,它可以把一个特例当成正常情况来处理,这就是好的代码。
我就喜欢和这样的人一起工作,他们有着更好的代码的“品味”。
好的代码“品味” 能够让你从更大的范围来看待问题,本能地知道怎么才能把事情做对,做好。
这两段代码只是很简单的例子,它们甚至不完美, 但我理解Linus所说的意思,它给我们的启示是:在写代码的时候,要努力地从更高的层次去思考问题,找到更抽象,更通用的解决方案,而不是简单地对各种情况写满if else, 那样的代码,难以理解,难以维护。
优雅的代码不仅仅是格式规范,命名良好,更重要的是思维方式和抽象层次,以及由此带来的良好的设计。
怼天怼地怼空气的Linus 喜欢和什么样的人一起工作?相关推荐
- 怼天怼地怼空气的Linus喜欢怎样的工作方式?
Linus Torvalds的"暴脾气"是出了名的,看到令自己不爽的事情就会怼过去,比如: 他曾经说Intel提交的漏洞修复程序是彻底的垃圾! 当别人说Git没用C++开发的时候, ...
- “马导”怒怼“小鲜肉”,当马儿遇到配音,短视频内容让人捧腹
"马导"怒怼"小鲜肉",当马儿遇到配音,短视频内容让人捧腹 搞笑配音短视频其实是非常受人欢迎的,尤其是有才华的作者为小动物们配上的搞笑配音,更是让小动物们有了一 ...
- “程序员吐槽大会”上,被怼坏的阿里美女产品经理,做出了2亿人在用的钉邮钉盘!...
点击"技术领导力"关注∆ 每天早上8:30推送 来源:电商报(ID:kandianshang) 作为产品经理的你,现在还好吗? 2019年9月的云栖大会,专门为程序员举办的&qu ...
- 某大厂程序员吐槽外包员工是大爷,晚上八点就想下班,叫他加班却被怼!网友:怼得没毛病!...
外包员工是公司里比较特殊的存在,拿钱比正式员工少很多,还常常被嫌弃,许多外包员工都觉得自己低人一等. 但有一个大厂正式员工却发帖吐槽外包员工是大爷,因为晚上八点该外包员工就要下班,楼主叫他做完需求再走 ...
- 被程序员怼完被自己人怼,产品经理就这样被逼哭了!
我是一个产品运营 每天总有各种各样的会议等着我 我每天需要不断的听取用户提的需求 在听取的同时还得去笔记本上把需求记录上 记录完以后还得去厚着脸皮去找我们技术讨论这个需求是否可以做 每次讨论完,我都很 ...
- Linus Torvalds称讨厌被人崇拜
Huffington Post的TechView采访了Linux 作者Linus Torvalds.Torvalds称他对技术趋势没什么"远见卓识",他只是那种只盯着面前地面的人, ...
- 写技术文章也挺好的,虽然没有多少人看
微信改版信息流以后,正式进入了"拼标题"时代,如果没有一个吸引眼球.摄人心魄,不点进来心里就痒痒的标题,那阅读量肯定是嗖嗖地下降. 偏偏我又不擅长此道,绞尽脑汁想了个自以为是10w ...
- 基于STM32设计的智慧浇花系统(华为云IOT)
1. 前言 随着社会的不断发展和人们生活水平的逐渐提高,人们逐渐追求高质量的生活,很多人都会选择在家里或办公室种植一些花卉以净化家庭空气,陶冶情操,但是很多人忙于工作.学习.出差.旅游或者一些其他的原 ...
- 基于STM32+华为云IOT设计的智能浇花系统
一.前言 随着社会的不断发展和人们生活水平的逐渐提高,人们逐渐追求高质量的生活,很多人都会选择在家里或办公室种植一些花卉以净化家庭空气,陶冶情操,但是很多人忙于工作.学习.出差.旅游或者一些其他的原因 ...
最新文章
- 条件随机场(conditional random fields) 及代码实现
- 经信局推荐 | 网易智慧企业多产品入选《杭州市支持企业远程办公助力复工防疫产品和服务目录》!...
- 探寻AI未来式,百度AI Studio两周年寻最强锦鲤送超大惊喜
- haproxy服务启动命令_安装haproxy和haproxy命令
- 如何实现自动化前端开发?
- 微服务实践 | 网易考拉海购Dubbok框架优化详解
- Qt获取时间秒数,毫秒数,当前时间
- 小白入门必学——时间复杂度
- 基于SSH商场管理系统
- 五角星是不是旋转对称图形_在线等。很简单,五角星是不是中心对称图形?
- 算法专题训练(1)股票问题
- IT运维大咖带你玩转企业信息运维自动化
- 教你win10怎么从电脑查找隐藏视频
- 01Java并发编程的艺术之并发编程的挑战
- 华氏温度转换成摄氏温度
- php 抓取 知乎专栏,php爬取知乎用戶信息
- 聊聊角色扮演探索式测试与肥皂剧模型
- 二维码生成器-客户端
- 手机网游制造之请求处理篇(已发《电脑报》)
- emc整改措施及案例_EMC整改秘籍(有实例)
热门文章
- 2.4 编写第一个自动化脚本
- Linux 文件和目录的属性及权限
- Linux桌面极速文件浏览器PCMan
- 老实守法的人是怎样成为笑柄的?
- Python之max(num, key=lambda x:x[0])用法的详细解析
- Matlab绘图基础——利用axes(坐标系图形对象)绘制重叠图像 及 一图多轴(一幅图绘制多个坐标轴)
- windows下安装emscripten
- C++使用ICE实现两台主机通信实例
- c++函数返回值与引用
- opencv摄像头 vmware虚拟机出现select timeout