老婆离家三周,我写了一个操作系统!

Posted 程序员大咖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了老婆离家三周,我写了一个操作系统!相关的知识,希望对你有一定的参考价值。

????????关注后回复 “进群” ,拉你进程序员交流群????????

作者丨码农翻身刘欣

来源丨码农翻身(ID:coderising)

我出生于1943年,今年已经78岁了,依然战斗编程的第一线,今天给大家讲讲我当年写操作系统的故事......


我小时候特别喜欢鼓捣电器,玩了10年。

当我去加州大学伯克利分校读电子工程的时候,我发现课程超级简单,于是我迷上了一个新玩意儿:计算机。

每天晚上,我都会偷偷打开机房大门......

到了大四,我觉得自己玩得太嗨,学业不够优秀,就没有申请读研。

但是有一天,教我课的Berlekamp教授突然给我我一个“惊吓”。

原来Berlekamp教授替我做了申请,并且通过了!教授真是一个好人。

一年以后,我拿到了电子工程和计算机科学的硕士学位。

大名鼎鼎的贝尔实验室想把我招去工作,但是当时我的心还比较“野”。

贝尔实验室不厌其烦地邀请我, 我把他们拒绝了七八次,最后他们居然找到了我家里!

我来到了贝尔实验室参观,被震撼了!

第二天,我租车出行,去找我的朋友。

贝尔实验室不知怎么查到了行踪, 居然在我旅途的第三站留下来一份offer。

1966年,我加入贝尔实验室。

悲催的是,我的第一项工作就和同事们一起掉进了坑:Multics操作系统。

这个操作系统是我们和GE、MIT一起研制的,试图做一个比CTSS更好的OS,但是大家犯了一个大错误:过度设计。

(注:第二系统效应,意思是在首个系统(如CTSS)创建成功以后,打算创建一个新系统,修正旧系统的遗留问题,添加新特性,结果塞进去太多东西,得到了过于复杂的系统)

1969年,Multics还是无法完成,忍无可忍的贝尔实验室决定退出。

回来以后, 我和项目组成员还是想做操作系统,向经理申请费用。

(其实我是有点想念Multics上我开发的太空旅行游戏了)

但是管理层被Multics伤透了心,不愿意给我们买硬件。

既然如此,我只能“废物利用”了,我很快找到一台没怎么用过的PDP-7。

PDP-7的图形显示还不错, 我很快在上面“恢复”了太空旅行这个游戏。

玩家可以模拟操作太空船在代表太阳系的二维画面内进行飞行、着陆。太空船会受到万有引力影响。

这个游戏很容易上瘾,经常让人一玩就是好几个小时

我相信程序员热爱游戏的传统将会被传承下去,例如mysql发明人, Linux发明人,都是游戏迷,他们不但玩游戏,还会像我一样写游戏。

我在移植游戏的过程中,开发了自己的数学计算和图形子程序。

但是太空旅行在PDP-7上运行得很慢, 于是,我和Dennis Ritchie等人又重新设计了文件系统:

等到太空旅行能顺利运行起来的时候,我赫然发现, 我离一个操作系统只剩下三周之遥了

恰巧,我太太休了三周假, 带着1岁的儿子回娘家,我就有了三周不受打扰的工作时间。

这三周,我的代码生产力简直爆棚!

1969年底,一个操作系统可以运行了,它被我的同事称为Unix。

Unix操作系统看起来像是我们为了玩游戏而产生的副产品 !

20多年后,一个芬兰的小伙子Linus会再次深刻地体会了这个过程:本来想给自己找点儿乐子, 结果却做出了伟大的操作系统。

正所谓:有心栽花花不开,无心插柳柳成荫。

当然,这一切的底层基础是:对计算机强烈的兴趣,以及强悍的编程能力

(Linus的故事传送门在这里《Linux之父:财务自由以后,我失眠了!》)

虽然我们直接买机器的企图失败了,但我们很快找到了替代办法。

贝尔实验室创新太强了,平均每天都能产出一项专利,处理专利文件成了一个大问题。

交易达成,买了一台PDP-11 , 我和Dennis Ritchie很快就把Unix移植了过来,哈哈。

打字员们白天处理专利文档,到了晚上,我们Unix小组的人就它来开发软件。

后来,专利部门尝到甜头,又给我们买了一台PDP-11, 这样我们才能全天候开发了

于是就有了这张著名的图片,我和Dennis Ritchie在一起工作。

说起Dennis Ritchie,这可是我一生的好友,超级大牛。

他看到Unix是汇编写的,而不同架构的机器,汇编语言是不同的,移植起来很费劲。

于是,他发明了C语言,并且用C语言重写了Unix,让Unix可以轻松地在各种机器间移植。

Unix很快便在大学和科研机构流行起来。

1975的秋天,我休了一个长假,回到了母校加州大学伯克利分校,开设了一门Unix课程。

我不仅讲解理论,还在晚上带着大家阅读一行行的Unix内核代码,向大家解释为什么这么做。

我在伯克利大学的教学激发了很多人对操作系统的热情, Bill Joy尤其突出,他后来创建了著名的Unix分支:BSD 。

(Bill Joy的故事传送门在这里:《那些神一样的程序员》)

贝尔实验室是个非常棒的地方, 既给每个人提供独立办公室,又提供可以协作的共享空间, 这里鼓励创造,不同的思想在这里碰撞、激发,充满了黑客的氛围。

我的同事道哥在Unix上开发了一个叫speak的程序,可以和一个叫Votrax的语音合成器连接,把文字变成语音输出。

每天下午一点,Votrax的大喇叭就会提醒大家1点15分食堂就关门,该去吃饭了。

我从小就热爱国际象棋,1971年,我在PDP-11上写了一个国际象棋程序,后来又制作了加速运算的特殊硬件, 最终形成了一台叫Belle的国际象棋计算机。

Belle战绩骄人,在于人类的常规比赛中,获得了2200等级分,成为第一台荣升国际象棋大师的计算机,还获得了1980年世界计算机国际象棋大赛的冠军。

除了象棋之外,我还是一个狂热的飞行爱好者。

在我的影响下, 贝尔实验室计算机科学研究中心出现了六七位私人飞行员 。

我们经常约着飞出去看秋叶,或者到有意思的地方吃午饭。

但是,这些飞机开起来不过瘾。

1992年,我决定玩儿一票大的,来到莫斯科,去玩了一把米格29战斗机

由于在Unix操作系统和C语言的杰出贡献,我和Dennis Ritchie获得了1983年的图灵奖。

2000年,57岁的我从贝尔实验室退休。

但是我觉得还能折腾。

2006年,我又加入了Google ,和Rob Pike, Robert Griesemer等人发明了Go 语言,现在Go语言的发展势头还不错!

这就是我这几十年的故事,我是Ken Thompson, 一个写过操作系统,会开飞机的程序员!

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

点击????卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

以上是关于老婆离家三周,我写了一个操作系统!的主要内容,如果未能解决你的问题,请参考以下文章

片段“F1”不能在这里传播,因为“节点”类型的对象永远不能是“商店”类型

将字符串数据从Activity发送到片段[关闭]

popBackStack导致一次又一次调用片段的oncreateView

(原创)多系统间需要对接,我写了一个接口框架。实用性非常强,写出来大家交流。需要的可以直接搬过去用。(第1篇)

eclipse运行配置怎么设置?尤其是那个Main类,我写了包含main方法的类名,运行后系统说找

我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段