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

news/2024/4/26 2:56:49/文章来源:https://blog.csdn.net/ATYtian/article/details/130387009

前言:今年是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恰逢其时,满足了互联网时代对一个免费操作系统的需求。

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

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

相关文章

Unlimited “使用GPT-4 ”!它来了!

备注本文末尾附录注册登录过程 平台介绍: 聊天机器Chat.fore人front.ai是一为款基于人主工智能的题聊天的机器人主平台,旨在帮菜助企,业提可以高客户服务质是量和一效率。该平款台利用自然语精言处理技术和机器致学习的算法,能够自牛动排回答客,户的问题,提供个性化的服…

《string的模拟实现》

本文主要介绍库里面string类的模拟实现 文章目录 前言一、string的构造函数①无参的构造函数②带参的构造函数③修改构造函数 二、析构函数三、拷贝构造四、赋值重载五、返回size 、capacity和empty六、[]的运算符重载七、迭代器① 正向迭代器。② 正向const迭代器 八、string比…

接口自动化测试数据处理:技术人员必备的一项技能

目录 前言: 1.定义测试数据结构 2.从文件中加载测试数据 3.使用faker库生成随机测试数据 4.在测试用例中使用测试数据 总结: 前言: 在进行接口自动化测试时,测试数据的准备和处理是至关重要的一环。测试数据的准确性和完整性…

SAP 已根据规则拒绝服务器触发的操作 报错处理

SAP GUI在读取和写入文件的时候,询问是否给与权限,误操作点了否,导致报错如下 解决步骤如下: 点击选项 在下面的界面中依次点击安全配置---》已定制--》打开安全配置 在下面的界面找到你拒绝的条目,双击 将下图下拉框…

python海龟库教学

海龟库: 海龟绘图 “小海龟”turtle是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动&…

Win11打开移动热点后电脑无法上网怎么办?

Win11打开移动热点后电脑无法上网怎么办?有用户将自己的电脑开启移动热点来使用的时候,发现自己的电脑出现了无法上网的情况。那么为什么开启热点之后,就会无法进行上网呢?来看看以下的解决方法分享吧。 Win11打开移动热点无法上网…

【Python】matplotlib画散点图,并根据目标列的类别来设置颜色区间(含源代码及参数解释)

最近在进行绘图时,遇到了matplotlib画散点图,并根据目标列的类别来设置颜色区间的问题,但是实现的过程较为艰辛。 文章目录 一、数据准备二、第一次尝试(失败及其原因)2.1 失败2.2 原因 三、第二次尝试(成功…

算法记录lday3 LinkedList 链表移除 + 链表构建 + 链表反转reverse

今日任务 ● 链表理论基础 ● 203.移除链表元素 ● 707.设计链表 ● 206.反转链表 链表理论基础 建议:了解一下链接基础,以及链表和数组的区别 文章链接:https://programmercarl.com/%E9%93%BE%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A…

JavaWeb搭建| Tomcat配置| Maven依赖|这一篇就够了(超详细)

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:老茶icon 🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎 📚系列专栏:Java全栈,计…

记录自己第一次项目管理(附件:WBS计划与会议纪要模板)

记录自己第一次项目管理 前言 20**年新入职到一家公司,刚到就接到紧急任务,因为上一个后端跑路,现在系统上出现接口报错、假接口的问题,客户又着急验收,所以入职之后,一直在着急改代码。最后因为系统没有…

思科模拟器 | 生成树协议STP、RSTP、HSRP配置

一、生成树协议STP 概念介绍: 生成树协议是一种网络协议,用于在交换机之间建立逻辑上的树形拓扑结构避免产生环路。为了完成这个功能,生成树协议需要进行些配置,包括根桥的选举、端口的状态切换等。 步骤明细: 使用思…

游戏测试的面试技巧

游戏测试的面试技巧 1.自我介绍 回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验 ,这些在简历上都有,其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入…

实现PXE批量网络装机及kickstrat无人值守安装(富士山终究留不住欲落的樱花)

一、PXE概述和部署PXE批量装机 1.PXE简介 PXE(预启动执行环境,在操作系统之前运行)是由Intel公司开发的网络引导技术,c/s架构,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统…

燃气管道定位83KHZ地下电子标识器探测仪ED-8000操作指南

1、电子标识器探测工作 燃气管道定位83KHZ地下电子标识器探测仪ED-8000,探测时周边 3 米范围内不能有其他探测仪,保持探测仪垂直向 下,探测仪的末端距离地面 5~10cm 左右,延估计的埋地管线走向水平移动探测仪。当发现持续信号且信…

RuntimeError: “LayerNormKernelImpl“ not implemented for ‘Long‘解决方法

问题出现的场景: 输入: import torch import torch.nn as nn atorch.randint(10,[3,4]) # atorch.DoubleTensor(a) # aa.double() print(a) layer_normnn.LayerNorm(4) layer_norm(a) 我就是想测试一下经过layernorm之后的输出会变成什么样 但是报错…

量表题如何分析?

量表是一种测量工具,量表设计标准有很多,并且每种量表的设计都有各自的特性,不同量表的特性也决定了测量尺度,在数据分析中常用的量表为李克特量表。李克特量表1932年由美国社会心理学家李克特在当时原有总加量表的基础上进行改进…

eBPF的发展演进---从石器时代到成为神(二)

3. 发展溯源 回顾技术的发展过程,就像观看非洲大草原日出日落一样,宏大的过程让人感动,细节部分引人深思。每天循环不辍,却又每天不同。 BPF的应用早已超越了它最初的设计,但如果要追溯BPF最初的来源,则必…

kubernetes为何需要默认的serviceaccount?

文章目录 什么是k8s的serviceAccount?为什么每一个ns下都有默认的sa?default sa yaml 默认的sa下都会挂一个secret,这个secret是从哪里来的?一道关于RBAC的CKA考题1、创建一个新的 ServiceAccount2、创建一个新的 Role3、创建一个…

2023_8.0.33版windows版MySql安装_配置远程连接_修改设置初始密码---MySql工作笔记0001

MySQL :: Download MySQL Community Server https://dev.mysql.com/downloads/mysql/ 首先去下载mysql 可以看到这里下载第一个就可以了,最新版的8.0.33 这里点击仅仅下载 just start my download 然后解压到一个文件夹,然后配置一下环境变量 然后新建一个my.ini文件 然后把…

【GNN】谱域图卷积

谱域图卷积 1. 谱域卷积的背景知识 1.1 谱域图卷积实现思路 f 1 ( t ) ⋆ f 2 ( t ) F − 1 [ F 1 ( w ) F 2 ( w ) ] f_1(t) \star f_2(t) F^{-1}[F_1(w)F_2(w) ] f1​(t)⋆f2​(t)F−1[F1​(w)F2​(w)] 1.2 如何定义图上的傅里叶变换 经典傅里叶变换: x ( …