写出Windows操作系统内核的程序员,70多岁,还去办公室敲代码

news2024/10/25 14:21:31

大家好,我是二哥呀。

微软前 CEO 鲍尔默曾说过一句言简意赅的话:“没有 Dave,就没有今天的微软”。

可见 Dave 在微软的分量。Dave 的全名叫 Dave Cutler,微软的超级程序员,Windows NT 操作系统内核的缔造者,中文译名为大卫·卡特勒。

截图来自微软官网

可能有些小伙伴对 Windows NT 比较陌生,我这里简单解释下,像 Windows 2000、Windows XP、Windows 7、Windows 10 等等,都是披了一层华丽外衣的 Windows NT。

截图来自 fandom

按照卡特勒的意思就是,现如今的 Windows 操作系统版本,不管界面怎么变,内核代码都可以追溯到 1993 年的 Windows NT 分支。

可能有些小伙伴会好奇 NT 是什么意思?

比尔盖茨的解释是,NT 就是 new technology,代表微软在技术上的重大革新。这一点我到是不否认的,因为以前的 Windows 都是基于 DOS(Disk Operating System,磁盘操作系统)的。

截图来自维基百科

Windows NT 于 1993 年 7 月推出,比原定的 deadline 1991 年 3 月 30 日足足晚了 2 年多时间。

看来即便是真正的神级程序员,在预估周期的时候也会过于乐观,因此我们普通程序员在估算工时的时候最起码要留一倍的缓冲期(🤣)。

项目之所以延期,是因为卡特勒要解决的难题非常多,包括:

①、日志文件系统 NTFS,具备抗崩溃能力,相信很多格式化硬盘过的小伙伴都了解这个文件格式。

②、采用用户模式和内核模式的分层设计,并且是可抢占式和可重入式的,互联网大厂面试中常问的题目。

截图来自维基百科:WindowsNT 的体系结构

③、服务的概念,允许用户集中式管理服务进程,Windows 用户可以通过 ctrl+alt+delete 调期

④、引入硬件抽象层,使得 Windows 操作系统可以运行在不同的硬件平台上(如 x86、MIPS、Alpha、PowerPC 等)

⑤、在多个处理器上运行(支持多核 CPU),且能够同时运行多个程序(多进程)

⑥、还要向后兼容,不能把微软之前的老用户弃之不管,写过向后兼容的小伙伴都知道,这非常的难。

Windows NT 项目是在 1988 年启动的,卡特勒和他的团队耗时 5 年才推出了第一个版本,他们几乎完成了一项不可能的挑战。

卡特勒在 Windows NT 发布时俯身签字

在之后的岁月里,卡特勒并没有躺在功劳簿上。

2005 年,他协助 AMD 公司开发了 64 位架构(32 位 x86 架构的扩展),并且领导团队推出了可以在 64 位架构上运行的 Windows 操作系统。

2006 年,当微软开始向云端进军的时候,亟需构建一个基于云端的操作系统,于是又招募了即将退休的卡特勒,部门负责人 Amitabh Srivastava 用一句“这可能会改变世界”成功激起了卡特勒的兴致,于是卡特勒就开发了一款云操作系统的虚拟机管理程序(Hypervisor)。

看来画饼对大佬们一直都有效啊😄。如今,微软的 Azure 云平台已经成为微软所有开发和产品的战略重心,微软也从一家软件公司顺利转型为了云计算公司。

正在开发Windows Azure的卡特勒(2008年)

2012 年,卡特勒还参与开发了 Xbox 主机的操作系统。

这还不算完,2016 年,74 岁的卡特勒每天仍然会去位于华盛顿州雷德蒙德微软园区的办公室敲代码,是不是非常不可思议?

这样神级的程序员,大家能猜到他年轻时的梦想是什么吗?

没错,一名足球运动员。

可惜后来的伤病摧毁了他的职业生涯,于是卡特勒就开始琢磨着以后该怎么办?

机缘巧合,他进入一家杜邦公司从事材料测试,但这份工作需要编程来建模,于是卡特勒只好去 IBM 开办的学校去学习编程。

结果,他竟然发现自己是如此的热爱编程。

于是 1971 年,他进入 DEC(1998年被康柏以 96 亿美元的价格收购)编写软件,他利用汇编语言在非常有限的内存空间内实现了多项系统功能,比如树型文件系统、交换应用程序、实时调度和一整套开发工具等。

“是金子到哪都会发光”。

卡特勒过硬的技术功底得到了 DEC 首席工程主管贝尔的赏识,就被安排负责编写 VMS 操作系统,可运行在一种新的 32 位超级小型计算机(VAX)上。

因贝尔定律而闻名

两年后,一经推出的 VAX 迅速占领了市场,卡特勒也因此一战成名,贝尔称其为“世界上最好的操作系统编写者”。

1983 年,贝尔首次将卡特勒介绍给比尔·盖茨。五年后,卡特勒加入微软,并开发出了 Windows NT 操作系统内核,让微软彻底起飞,从此一发不可收拾。

我们普通人能从卡特勒这样的大神身上学到些什么呢?

我从卡特勒过往的采访中 get 到了三句话,我觉得非常值得分享给大家。

①、When all is said and done, much more is said than done.

也就是我们常说的“思想上的巨人,行动上的矮子”,很多人说起来总是头头是道,但做起来却是束手无策。

就像很多技术大牛一旦做了管理岗,就不再重视代码能力,开始变得说得多做的少,出了事就让下属背锅。

卡特勒一向是亲力亲为,冲在第一线。

网上有个论调说:技术不重要,哪怕技术做得再好,也不如会拍领导的马屁。我觉得这个论调就很可怕,它背离了技术人的初衷,让很多原本热爱技术的人,逐渐走向了 KPI 的不归路。

这可能也是为什么我们做不出来 Windows NT 这种操作系统内核的本质原因,公司不愿意给时间,技术人不愿意沉下心去打磨

②、Successful people do what unsuccessful people won’t.

我的理解就是,成功的人愿意去干那些失败者不愿意干的事。

就比如说,很多人都不喜欢去学习操作系统,包括我自己在内。因为感觉很枯燥,学了又感觉用不到,日常工作和学习中几乎都是偏应用类的编码。

所以在职业生涯的很长一段时间里,我都没有关注过操作系统方面的知识,就导致底层知识是欠缺的。接触的读者多了,他们的诉求就多了,于是我就也开始强迫自己去看操作系统方面的知识。

没想到,打开了另外一扇世界,编程功底得到了很大的提升。

③、If you don’t put them [bugs] in, you don’t have to take them out.

我理解的意思就是,敲代码之前要先想清楚,比如说脑海中有一副蓝图,或者敲完代码自己要先做一次 review,现在有了 AI 的帮助,那最好让 AI 再检测一遍,这样就不会引入 bug,也就不用解决 bug。

卡特勒也说过类似的观点:“不知道是因为懒惰还是愚蠢或是两者都有,有些程序员在将代码提交构建前不做测试,不理解高质量检入的重要性。”

所以我们在提交代码库的之前,一定要 check,不要想当然。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】ArrayList相关操作及其案例

ArrayList相当于集合&#xff0c;作为一种容器存储数据&#xff0c;与数组类似。不同的是&#xff0c;ArrayList中长度可变&#xff0c;而数组长度不可变。 ArrayList相关API 构造器 public ArrayList() 创建一个空的集合对象 ArrayList<String>arrnew ArrayList<>…

RHCE【web服务器】

目录 一、web服务器简介 1、什么是www 2、网址及HTTP简介 3、http协议请求的工作过程&#xff1a; 二、web服务器的类型 1、仅提供用户浏览的单向静态网页 2、提供用户互动接口的动态网站 三、web服务器基本配置 四、虚拟主机配置实战 1、搭建静态网站--基于http协议…

草地杂草数据集野外草地数据集田间野草数据集YOLO格式VOC格式目标检测计算机视觉数据集

一、数据集概述 数据集名称&#xff1a;杂草图像数据集 数据集是一个包含野草种类的集合&#xff0c;其中每种野草都有详细的特征描述和标记。这些数据可以包括野草的图片、生长习性、叶片形状、颜色等特征。 1.1可能应用的领域 农业领域: 农业专家和农民可以利用这一数据集来…

Spring Boot:植物健康监测的智能先锋

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了植物健康系统的开发全过程。通过分析植物健康系统管理的不足&#xff0c;创建了一个计算机管理植物健康系统的方案。文章介绍了植物健康系统的系统分析部分&…

VScode分文件编写C++报错 | 如何进行VScode分文件编写C++ | 不懂也能轻松解决版

分文件编写遇到的问题 分文件编写例子如下所示&#xff1a; 但是直接使用 Run Code 或者 调试C/C文件 会报错如下&#xff1a; 正在执行任务: C/C: g.exe 生成活动文件 正在启动生成… cmd /c chcp 65001>nul && D:\Librarys\mingw64\bin\g.exe -fdiagnostics-col…

RabbitMQ常见问题持续汇总

文章目录 消息分发不公平分发限流-basic.qos主要功能使用场景示例代码 消费者默认concurrency数量prefetch和concurrency结合&#xff1f; spring.rabbitmq.template.retry.enabledtrue和spring.rabbitmq.listener.simple.retry.enabledtrue有什么区别1. spring.rabbitmq.templ…

中药大数据(二)中药方剂表设计与导入

中药大数据&#xff08;二&#xff09;中药方剂表设计与导入 最近在做一个中药大数据的单子&#xff0c;已经爬取到了中药和方剂的数据&#xff0c;现在根据爬取到的数据设计数据库和导入neo4j形成知识图谱。 1 中药方剂数据表设计 爬取到的字段有 方剂名 title 处方 presc…

自动化部署-01-jenkins安装

文章目录 前言一、下载安装二、启动三、问题3.1 jdk版本问题3.2 端口冲突3.3 系统字体配置问题 四、再次启动五、配置jenkins5.1 解锁5.2 安装插件5.3 创建管理员用户5.4 实例配置5.5 开始使用5.6 完成 总结 前言 spingcloud微服务等每次部署到服务器上&#xff0c;都需要本地…

【判断推理】逻辑论证之数量论证

3.1 比例类论证 看比例而不是单看分子&#xff01; 逻辑类似于抛开剂量谈毒性没有价值。不明确基数大小&#xff0c;单纯比较数量没有价值。 本题中&#xff0c;平民总数可能有1000万&#xff0c;军队综述可能就50万&#xff0c;死亡率不可能相似。 论点&#xff1a;家人吸…

利用Pixabay API获取免费图片和视频的完整指南

视觉内容在吸引受众和有效传达信息方面发挥着举足轻重的作用。然而&#xff0c;获取这些内容往往需要付出高昂的代价。 幸运的是&#xff0c;Pixabay 提供了 440 多万种免费资产&#xff0c;从令人惊叹的照片到引人入胜的视频&#xff0c;所有这些都可以通过其 API 访问。 在…

处理Hutool的Http工具上传大文件报OOM

程序环境 JDK版本&#xff1a; 1.8Hutool版本&#xff1a; 5.8.25 问题描述 客服端文件上传主要代码&#xff1a; HttpRequest httpRequest HttpUtil.createPost(FILE_UPLOAD_URL); Resource urlResource new UrlResource(url, fileName); httpRequest.form("file&q…

nrm之npm镜像源管理工具(NPMRegistryManager)

1. Whats is nrm? 1. 官网地址 https://github.com/Pana/nrm https://www.npmjs.com/package/nrm 2. 关于nrm nrm can help you easy and fast switch between different npm registries, now include: npm, cnpm, taobao, nj(nodejitsu). nrm可以帮助您在不同的 npm 注册表…

智能AI监测系统燃气安全改造方案的背景及应用价值

随着燃气行业的迅速发展和城市化进程的加快&#xff0c;燃气安全管理成为企业运营和城市管理中不可忽视的关键领域。燃气泄漏、管道破损等事故的发生不仅会造成严重的经济损失&#xff0c;还威胁到人民生命财产安全。传统的安全管理方法往往依赖人工巡检和手动监测&#xff0c;…

Discuz发布原创AI帖子内容生成:起尔 | AI原创帖子内容生成插件开发定制

Discuz发布原创AI帖子内容生成&#xff1a;起尔 | AI原创帖子内容生成插件开发定制 在当今互联网快速发展的时代&#xff0c;内容创作成为了网站运营、社交媒体管理和个人博客维护不可或缺的一部分。然而&#xff0c;高质量内容的创作往往耗时耗力&#xff0c;特别是对于需要频…

webpack 老项目升级记录:从 node-sass 限制的的 node v8 提升至支持 ^node v22

老项目简介 技术框架 vue 2.5.17webpack 4.16.5"webpack-cli": "3.1.0""node-sass": "^4.7.2" 几个阶段 第一步&#xff1a;vue2 升级到最新 第一步&#xff1a;升级 vue2 至最新版本&#xff0c;截止到目前&#xff08;2024-10-…

用js+css实现圆环型的进度条——js+css基础积累

如果用jscss实现圆环型的进度条&#xff1a; 直接上代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><met…

通信协议——UART

目录 基础概念串行&并行串行的优缺点 单工&双工 UART基本概念时序图思考&#xff1a;接收方如何确定01和0011 基础概念 串行&并行 串行为8车道&#xff0c;并行为1车道 串行的优缺点 通行速度快浪费资源布线复杂线与线之间存在干扰 单工&双工 单工&#xf…

vite脚手架中安装和按需引入vuetify

最近想尝试以下vuetify&#xff0c;然后根据chatgpt的引导安装上了&#xff0c;但是谁知道呢&#xff0c;最后打包后的项目&#xff08;里面什么都没写&#xff0c;只是一个vuetify测试页面&#xff09;大小已经超过了5mb&#xff0c;然后我找了很多资料&#xff0c;最终学会了…

【LeetCode】1297、子串的最大出现次数

【LeetCode】1297、子串的最大出现次数 文章目录 一、定长滑动窗口1.1 定长滑动窗口 二、多语言解法 一、定长滑动窗口 1.1 定长滑动窗口 参考 本题, 只需要 考虑 minSize, 而不需要考虑 maxSize 以例1为例: s “aababcaab”, maxLetters 2, minSize 3, maxSize 4 结论: …

[Linux网络编程]05-TCP状态和端口复用,shutdown函数(主动方建立/关闭连接状态,被动方建立/关闭连接状态,2MSL时长,TCP其他状态)

一.TCP状态图表示 netstat -apn | grep client 查看客户端网络连接状态 netstat -apn | grep port 查看端口的网络连接状态 二.主动方&#xff0c;被动方TCP连接状态 1. 主动发起连接请求端&#xff1a; CLOSE – 发送SYN – SEND_SYN – 接收 ACK、SYN – SEND_SYN – 发送 A…