Linus TED 分享,Linux 背后的思想
1. Linus Torvalds
Linus Torvalds两次改变了技术,第一次是Linux内核,它帮助互联网的发展;第二次是Git,全球开发者使用的源代码管理系统。在一次TED的采访中,Torvalds以极其开放的态度讨论了他独特的工作方式和性格特点。Torvalds说:“我不是一个空想家,我是一名工程师,我非常乐意跟梦想家在一起,他们行走四方,仰望苍穹,看着满天星辰说,“我想到那儿去。”但我是低头看路的那种人,我只想填好眼前这个坑,不让自己掉进去,这就是我。”
2. 关于开源
Linus Torvalds说:
Linux并不是一个合作的产物,它是我一系列项目中的一个,纯粹出于自己当时的需要,部分原因是我需要得到结果,但更重要的原因是我享受编程。这段旅程的终点,在25年后的今天(2016),我们仍未达到。当年我只是想做一个完全属于自己的项目,我压根就没想过开源这件事。但在那之后,随着项目越来越大, 你会开始想让别人知道。感觉就像“哇,快来看看我的成果!”
成千上万的人想参与进来(Linux内核项目),但很多时候,我成为了那个断点,我无法让自己跨出那一步,同上千人合作。
因此Git是我的第二个大项目,它存在的意义就是维护我的第一个大项目。事实上这就是我的工作方式。我编程并不是为了… ,我编程是因为好玩,但我也想做一些有意义的事情,因此我设计每一个程序仅仅是因为我自己需要。
而我喜欢开源软件的一点就是,它能让形形色色的人在一起合作。我们不必相互喜欢,有时候我们甚至互相讨厌。是真的,我们经常吵得不可开交。
科学界的开源显然是一种回归,科学最初是开源的。但之后变得越来越封闭,只存在那些昂贵的科学期刊上。开源让科学回归了,我们有了arXiv和开放期刊。
小编有话说:
Linux并不是选择了开源,只是因为开源恰好是Linux需要的。就如Linus Torvalds所说:“纯粹出于自己当时的需要。”
Linus Torvalds是睿智的,做好自己能控制的。
开源不仅仅代表源代码的开放,开源更是一种工作方式,一种教育方式。因为有了开源,我们多了一种更好的合作共赢的工作方式;因为有了开源,让更多从业者和学生能够学习到更好的技术。
3. 代码的品味
Linus Torvalds说:
有时候你可以换个角度看问题,重写代码,排除特例,完美覆盖所有情况,这就是好的代码。同时也很简单,这是最基本的原则。细节非常重要。对我来说,我愿意与之共事的人,必须有好的品位。
采访中Linus Torvalds对比了以下2个函数:
小编有话说:
大牛们总是对自己严格要求,不仅仅是要实现功能,并且要优雅的实现。下面我们来看看采访中Linus Torvalds对比的两段代码:
1. 不怎么漂亮的代码
remove_list_entry(entry)
{
prev = NULL;
walk = head;
// Walk the list
while (walk != entry)
{
prev = walk;
walk = walk->next;
}
// Remove the entry by updating the
// head or the previous entry
if(!prev)
{
head = entry->next;
}
else
{
prev->next = entry->next;
}
}
上面的代码,需要区分要移除的成员是否为链表的头一个成员。需要单独处理特例情况(要移除的成员为链表的头一个成员)。这个函数比较好理解,这里小编就不做更多的解释了,如有疑问,请添加小编微信交流。
2. 好的代码
remove_list_entry(entry)
{
// The "indirect" pointer points to the
// *address* of the thing we'll update
indirect = &head;
// Walk the list, looking for the thing that
// points to the entry we want to remove
while ((*indirect) != entry))
{
indirect = &(*indirect)->next;
}
// .. and just remove it
*indirect = entry->next;
}
这个代码完全不需要单独处理特例情况,程序整体更加整洁、优雅。其实现原理为:指针变量indirect保存的是链表成员结构体中的next成员的地址(head指针也可这样看),如下图所示:
所以变量*indirect就相当于是前一个链表成员的next成员(相对于要移除的成员来说)。当找到要移除的成员后,进行如下操作即可:
*indirect = entry->next;
本文整理自 Linus 的一次 TED 分享,详情查看原视频:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
openSUSE 投票结果:不改名了
此前社区讨论将 openSUSE 从 SUSE 公司独立出来,主要关注点是希望openSUSE 项目在其治理与更广泛社区的互动方面获得更大的自主权,随后又相应进行了项目是否改名的讨论。 最终投票结果已经出来,绝大多数人认为不同意改名: 42 人同意改名,但高达 225 人认为不需要改名,应该是主要考虑到 openSUSE 这个名字已经成为一个众所周知的品牌,改名可能对其发展带来相应伤害。 其实在讨论改名的过程中,openSUSE 董事会主席 Richard Brown 表示,更改名称的主要动机是商标,由于“openSUSE”包含“ SUSE”,因此公司将必须对基金会(openSUSE 独立出来的基金会)可以使用其自身名称进行的操作保持大量控制,这会“使事情变得相当复杂”。此外还有关于营销方式和项目与公司主体混淆等原因。 而反对者的理由也有不少,包括openSUSE 是一个众所周知的名称,不应无故丢弃、现在改名会给人以项目与 SUSE 公司不友好分手的印象、重蹈 Fedora 项目改名带来的苦恼、更名失去众多用户、目前没有钱也没必要进行改名。 讨论详情查看: https://lwn.ne...
- 下一篇
VS Online上线 | 重写Windows组件 | Chrome OS虚拟桌面
回顾一周社区热门资讯 第【四十七】期:20191102-20191108 点击相应标题,跳转阅读全文。 Orleans 3.0 发布,微软下一代云计算编程模式 Orleans 是一种新的编程模式,用来提升微软通用语言运行库(CLR)的抽象水平,Orleans 的宗旨就是为了创建一种既适用于客户端又适用于服务器的编程模式,简化代码调试,提高代码的可移植性。 微软宣布加入 OpenJDK 项目 “嗨,OpenJDK 社区”。 微软为 Chromium 版 Edge 浏览器推出新的 logo Apache NetBeans 11.2 发布,支持 JDK 13 和 PHP 7.4 NetBeans是一个可扩展的 IDE,可以用于 Java、C/C++ 与 PHP 等语言的开发,本身是一个开发平台,可以通过扩展插件来扩展功能。 Python 将采用 12 个月的发布周期:一年发布一个大版本 总而言之,此举的目的在于让社区有足够的时间在 Beta 版本中提供反馈,同时让开发者有足够的时间来全面测试 RC 并为最终版本做准备。采用一年发布一个大版本旨在让整个开发发布流程更具有可预测性。每个版本将获得...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果