漫画 | Linux之父:财务自由以后,我失眠了!

前言:今年是Linux诞生的30周年!

1991年的8月, Linus在新闻组中公布了他正在开发的一个免费的操作系统,这也是以后风靡世界的Linux操作系统的雏形。 

今天翻到这篇漫画,看到Linux的诞生过程,很是感慨,我们什么时候才能追随兴趣做点自己喜欢的东西呢? 

再次把这篇漫画分享给小伙伴们,没看过的强烈推荐,看过的欢迎转发啊


 

1999年,我持股的两家公司相继上市,受华尔街的热捧,股票当天涨了733%, 我这个程序员的财富飙到了2000万美元!

财务自由了,我却失眠了!

这一切是怎么发生的呢?

故事得从我的外公说起, 他是一位统计学教授,有时候需要写点儿程序做统计。

但是他很不喜欢在键盘上打字,所以总是把程序写到一张纸上,让不到十岁的我坐到他的膝盖上,把代码敲入计算机。

我不知道那些统计学的公式有什么用处,但是对电脑产生了强烈的兴趣。

我开始阅读电脑的手册,编写人生的第一个程序。

我妹妹对这个程序非常感兴趣,让我做了修改,把HELLO改成了 “ SARA IS BEST” ,于是电脑开始无休无止地夸奖她。

外公的电脑是比较老旧了,用起来很不爽,我一直梦想有一台自己的电脑。

听说有个写MySQL的人叫Monty,为了买属于自己的电脑,暑假里去铺沥青赚钱!(码农翻身注:详情参见《再见!MySQL》)

我可不会这么笨,我是个优秀的学生,每年都能得到奖学金,再加上我生日的压岁钱,我就买了一个叫做Sinclair QL的电脑。

我们这个地方的寒冬特别长, 长夜漫漫,无心睡眠,于是我培养了一个度过寒冬的室内运动:写程序!

我的妈妈的话非常有道理。

现在的年轻人把所有的时间都花在游戏上,所以啥也学不会。

我那时候也是把时间花在游戏上,不过我不玩游戏,我编写游戏,牛人们都是这样的。

有一次,我在编写一个软盘驱动程序,却发现在Sinclair QL上无法工作,这怎么可能!

我写的代码总是完美无缺的, 肯定是系统的问题!

于是我就把操作系统的代码做了反汇编,果然不出我的所料,操作系统有Bug!

但是我却没法修复这个Bug,因为QL的操作系统不能修改!

我只好继续在QL上移植游戏,像什么Pac-man,“小行星”之类,没办法,游戏的吸引力实在是太大了。

直到有一天, 我遇到了改变我一生的一本书:《操作系统:设计与实现》

这本书是荷兰的Tanenbaum教授写的,里边实现了一个Unix的小型翻版:MINIX。

我真的被迷住了,那年的夏天我啥也没干,一直在读这本书。

丹尼斯·里奇和肯·汤普森真是天才,他们俩设计的Unix非常精妙,它仅仅用几个简单的系统调用(open, close, read, write, fork...)就可以完成非常复杂的任务。

我手痒了,忍不住要去操作一下Unix,或者Minix。

悲催的是, 我的QL电脑装不了Minix, 虽然可以远程登录大学的Unix主机,但是大学还没开学!

我决定买一台真正的386电脑,价格昂贵, 3500美元!等不及了,分期付款也在所不惜!

在MINIX上我玩得很高兴,但是却没法通过电话线连到大学的电脑,因为它没有一个好用的终端仿真程序。

这并不难,我自己写一个就行。

不过,我决定玩一把大的:我的终端仿真程序应该是个独立王国,不依赖于Minix, 一开机就可以运行!

只能从BIOS开始了,我得写好引导分区,搞定实模式,保护模式,让程序在一些地址之间跳来跳去。

我还得读取键盘输入,显示到屏幕上,还要读写调制解调器,俗称“猫”,你们这些年轻人估计是没有见过了。

很快我就意识到,我需要实现多任务:一个任务从“猫”里读数据,显示到屏幕上,另外一个任务从键盘中读数据,写入“猫” 。

于是我仔细研究了386 CPU的多任务编程,做了一个小实验:两个任务交替显示字符:

我妹妹理解不了我的伟大工作,这多少让我有点失望。

我把我的终端仿真程序改造成了多任务, 用它来查看电子邮件,到MINIX讨论组去讨论。

我很快发现,还需要下载东西,保存到硬盘中。

那就来吧,不就是写个磁盘驱动程序和文件文件系统吗?

我开始疯狂编程。

慢慢地我意识到,我这个终端仿真程序已经不仅仅是个程序了!

你看,它平时保存在软盘上,只要把软盘插入电脑,开机就能运行,它还能管理键盘,猫,显示器,磁盘,支持多任务.....

这个程序不就是TMD操作系统嘛!!!

那就让它成为一个真正的操作系统吧!操作系统必须有个用户界面接口,那就是Shell。

我下载了一个著名的Shell:bash。希望它能在我的操作系统上运行起来。

但是这是非常难的一件事情,因为bash需要使用很多操作系统的系统调用才能运行。

黑色的窗帘遮住了阳光,我都不知道什么时候是白天,什么时候是黑夜。

我不断在编程,实现POSIX系统调用, 我就像一个上帝,把计算机世界的一切都创造出来。

斗转星移,终于有一天, bash运行成功了。

整个大厦已经建成,剩下的工作就简单了。我迅速把C语言编辑器 gcc也移植到了我的操作系统上面。

1991年8月,我决定公开我的操作系统 Linux 0.01版(没错,这是它的名称),不过,先让少数人试用一下会更好。

出乎我的意料,虽然Linux 还有不少Bug,甚至破坏了某个人的文件系统,这些技术狂热分子的反馈非常积极,对我的工作十分肯定。

但是我觉得吧,主要的创造性的工作已经完成,剩下的修修补补没啥意思了, 我应该去探索一点儿新的东西。

有一天, 我一不小心把Minix操作系统给搞坏了,我走到了一个重要的十字路口:是选择重装Minix,还是选择Linux 做为操作系统,从此吃自己的狗粮?

上帝让我选择了后者,我从此走上了一条不归路。

我开始不断地修复Bug , 推出新版本 0.02, 0.03 ..... 0.10

Linux 的功能越来多,影响力越来越大,不少用户从Minix那里叛逃,加入Linux。

这引起了Tanenbaum教授的不快,他在网上发表了不少攻击我的帖子。

特别值得一提的是,他是微内核的坚定支持者,他说Linux采用的宏内核已经落伍了,过时了。

我毫不客气的进行了反击。

我知道我会赢,因为Minix限制人们对他进行修改和功能增强, Tanenbaum教授说这是为了教学,防止过度复杂化。

而我的Linux则是完全开放的, 我1991年的时候,在赫尔辛基理工大学听过一次理查德·斯托曼的演讲, 鼓吹什么自由软件运动,他说要搞一个GNU操作系统出来,采用GPL协议。

开源的Linux迅速地获得了用户的芳心, 全世界无数的开发者参与其中。

1994年,Linux 1.0版终于发布了,我在母校赫尔辛基大学搞了一次盛大的发布会,那也是我第一次上电视。

很多人都有一个疑问: 为什么这些程序员吃饱了撑的没事干,去免费开发Linux?

其实我觉得是为了获得别人的尊重和和认可, 不过,如果你是Linux内核的重要贡献者,公司会抢着请你的。

管理全世界的数以万计的程序员可不是一件容易的事情,我被迫成了一个团队的领袖,有人杜撰了一个“仁慈的独裁者”送给我。

我的技术绝对没有问题,关键是沟通的技巧,如何解决分歧,说服别人,还有就是授权给其他人。

因为我很懒,我大多数时候奉行的做法就是中国古代的老子所说的“无为而治”,这种风格在业界居然获得了好评。

奇怪的是,我能管理网络上未曾谋面的数万程序员,却不能面对面地管理好Transmeta公司那十几号人。

有个叫做Eric Raymond的人,专门写了一篇文章,叫《大教堂与集市》,总结了Linux的成功之道,我建议你好好看看:

1. 好软件都源自解决开发者的切身之痛。

2. 把用户当作开发伙伴,是快速改进代码和有效调试的不二法门。

3. 早发布,常发布。并听取用户意见。

4. 有这么多双眼睛看着,Bug无处可藏。

5. 精巧的数据结构即使搭配笨拙的程序代码,也比精巧代码加笨拙结构的组合要强得多。

6. 保持项目的简单性。设计达到完美的时候,不是无法再增加东西了,而是无法再减少东西了。

Linux的发展比我想象得还要快,很多大公司都加入进来。

Sun 要支持Linux,IBM也要支持Linux,他们为此要投入10亿美元,我的天。

然后数据库厂商Informix, Oracle 也纷纷支持Linux。

这让微软非常生气,据说我的头像被钉在了微软飞镖的靶心上。

专注于Linux的Red Hat公司和VA Linux 公司送了我一些股票期权,我一点儿都没在意,我把那些法律文件都扔到了废纸堆里。

然后Linux便获得了华尔街的关注。

1999年8月11日, Red Hat上市了,第一天就涨到了35美金, 我算了算,我一下子拥有了50万美元,这真是让我心跳加速。

很快我就收到了Red Hat的邮件,说上市前股票拆分了, 我的50万变成了100万!

这不算啥,12月9号,VA Linux也上市了,第一天就暴涨了733%, 最高达320美元, 我的个人财富暂时飙至2000万美元!

但是随后VA Linux一路下跌, 我晚上常常在睡梦中醒来,担心财富的迅速缩水。

我是Linus Torvalds , 别人都叫我大神,但是你看,在巨额的财富面前,我和普通人的反应是一样的。

后面的故事大家都很清楚了, Linux统治了服务器端,占据了嵌入式开发,成为了Android的基础操作系统。

由于对现有的版本控制系统不满,我又开发了Git这个风靡世界的系统。

我现在在Linux基金会工作,但是我已经很少编程了,现在主要是阅读邮件,了解大家都在做什么,然后说Yes or No。

这就是我的故事,最后我想给大家来句鸡汤:追随自己内心的兴趣,你才可能真正成功!

还有一句:成功需要一点儿运气!

Linux如果早几年出现,没有踏上互联网的大潮,就不会有大规模的使用和全球范围内的协作,如果晚出几年,很可能会被别的操作系统所替代。

Linux恰逢其时,满足了互联网时代对一个免费操作系统的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/17359.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SuperMap GIS基础产品云GIS FAQ集锦(2)

SuperMap GIS基础产品云GIS FAQ集锦(2) 【iManager】云套件ispeco-dashboard-api的日志等级只有到info,如何设置才能查看到debug级别的日志? 【解决方案】可以在ispeco-dashboard-api的deployment中添加以下环境变量,…

vue框架快速入门

vue 1、第一个Vue程序1.1、什么是Vue程序1.2、为什么要使用MVVM1.3、Vue1.4、第一个vue程序 2、基础语法2.1、v-bind2.2、v-if, v-else2.3、v-for2.4、v-on 3、Vue表单双绑、组件3.1、什么是双向数据绑定3.2、在表单中使用双向数据绑定3.3、什么是组件 4、Axios异步…

PyQt5 基础篇(一)-- 安装与环境配置

1 PyQt5 图形界面开发工具 Qt 库是跨平台的 C 库的集合,是最强大的 GUI 库之一,可以实现高级 API 来访问桌面和移动系统的各种服务。PyQt5 是一套 Python 绑定 Digia QT5 应用的框架。PyQt5 实现了一个 Python模块集,有 620 个类,…

从0学会Spring框架

文章目录 1. 对Spring的理解2. Spring IoC3. DI4. 如何创建一个Spring项目4.1 创建一个Maven项目4.2 添加Spring框架支持4.3 添加启动类 5. 存储Bean对象5.1 添加配置文件5.2 创建Bean对象5.3 注册Bean 6. 获取并使用Bean对象7. 更简单存储Bean对象的方式7.1 前置工作7.2 添加存…

基于javaweb的学生就业管理系统

一、简介 学生基业管理系统有三个角色:管理员、企业、学生 对学生信息管理、企业信息管理、求职信息管理 后端架构:spring springmvc mybatis 前端架构:jsp layui 系统环境:jdk1.8 | maven | mysql 二、主要功能 1. 登录…

一个集团企业,如何从0到1构建信息化系统?

当今时代,信息技术已经成为企业发展不可或缺的一部分,特别是对于一个大型集团公司来说,如何构建一个高效的信息化系统对于其业务发展至关重要。 我们想要构建一个优质高效的信息化系统,首先需要了解现在大的趋势是怎样的。 目前…

看我如何通过帮助服务台轻松黑掉数百家公司

导语:几个月前,我发现黑客可以利用一个漏洞访问目标公司的内部通信。 这个漏洞只需要点击几下,就可以访问企业内部网络、 Twitter等社交媒体账户,以及最常见的Yammer和Slack团队。 更新: The Next Web 写了一篇我发现的这个漏洞的…

【Java笔试强训 28】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥猴子分桃…

二分法相关使用

文章目录 1. 在一个有序数组中,找某个数是否存在2. 在一个有序数组中,找大于等于某个数最左侧的位置3. 在一个有序数组中, 找小于等于某个数最右侧的位置4. 局部最大值问题 1. 在一个有序数组中,找某个数是否存在 在线OJ:704. 二分查找 有序数组下的二分思路如下:…

几种常见时间复杂度实例分析

多项式量级 常量阶 O(1) 对数阶 O(logn) 线性阶 O(n) 线性对数阶 O(nlogn) 平方阶O(n2 ),立方阶O(n3 )...k次方阶O(nk) 非多项式量级(NP(Non-Deterministic Polynomial,非确定多项式)问题) 指数阶O(2n) 阶乘阶…

Android WebRtc+SRS/ZLM视频通话(1):虚拟机安装Ubuntu

Android WebRtcSRS/ZLM视频通话(1):虚拟机安装Ubuntu 来自奔三人员的焦虑日志 秉着没事找事的原则,这里直接从服务器安装开始说起,也当记录自己这一路以来的愚昧之举,由于没有物理服务器,这里以…

MySQL 精选 35 道面试题大厂稳了(含答案)

MySQL 精选 35 道面试题 1.说一下 MySQL 执行一条查询语句的内部执行过程?2.MySQL 查询缓存有什么优缺点?3.MySQL 的常用引擎都有哪些?4.常用的存储引擎 InnoDB 和 MyISAM 有什么区别?5.什么叫回表查询?6.如果把一个 I…

95后阿里P7晒出工资单:狠补了这个,真香···

最近一哥们跟我聊天装逼,说他最近从阿里跳槽了,我问他跳出来拿了多少?哥们表示很得意,说跳槽到新公司一个月后发了工资,月入5万多,表示很满足!这样的高薪资着实让人羡慕,我猜这是税后…

TCP的粘包和拆包

UDP有数据边界,TCP是没有数据边界,是流协议。如何拆包,就要靠应用层来处理。 四层网络模型,消息在进入每一层时都会多加一个报头。mac头部记录的是硬件的唯一地址,IP头记录的是从哪来和到哪去,传输层头记录…

优化问题的拉格朗日Lagrange对偶法原理

首先我们定义一般形式的求解x的优化问题: 表示优化的目标函数,上述为最小优化,实际上最大优化可以改写为的形式表示第i个不等式约束表示等式约束 1. Lagrange对偶问题 上述优化问题的拉格朗日Lagrange对偶法求解,是将上述带约束…

【Vue学习笔记6】好用的 Vueuse 工具包

1. 安装Vueuse VueUse 的官方(https://vueuse.org/)的介绍说这是一个 Composition API 的工具集合,适用于 Vue 2.x 或者 Vue 3.x,用起来和 React Hooks 还挺像的。 VueUse 插件的安装 npm install vueuse/core2. 实现全屏功能 …

【网络安全】记一次杀猪盘渗透实战

看起来非常假的网站,这个网站是没有 cdn 的用的是 thinkphpk 框架搭建的。 先打一波 poc 没有效果 访问一下后台直接在 url 后面加/admin。 一个开源的 cms 还没有验证码尝试用 burp 进行爆破,首先在火狐上设置代理 ip 为 127.0.0.1 代理端口为 8081。 B…

GPT详细安装教程-GPT软件国内也能使用

GPT (Generative Pre-trained Transformer) 是一种基于 Transformer 模型的自然语言处理模型,由 OpenAI 提出,可以应用于各种任务,如对话系统、文本生成、机器翻译等。GPT-3 是目前最大的语言模型之一,其预训练参数超过了 13 亿个…

ChatGPT终于被我问到胡说八道的程度了!

问:Python是强类型语言,还是弱类型语言 chatgpt:Python是强类型语言。Python很少会隐式地转换变量的类型,所以Python是强类型的语言 问:什么是强类型语言 chatgpt:强类型语言是指在编程语言中&#xff0…

Packet Tracer - 配置交换机端口安全

Packet Tracer - 配置交换机端口安全 地址分配表 设备 接口 IP 地址 子网掩码 S1 VLAN 1 10.10.10.2 255.255.255.0 PC1 NIC 10.10.10.10 255.255.255.0 PC2 NIC 10.10.10.11 255.255.255.0 非法笔记本电脑 NIC 10.10.10.12 255.255.255.0 目标 第 1 部…