图灵奖得主Fernando Corbató逝世:没有他或许没有Linux和C语言

图灵奖得主fernando corbató逝世:若无他,可能不会有linuxc语言

图灵奖得主Fernando Corbató逝世:没有他或许没有Linux和C语言

新智元报道

来源:thenextweb等

编辑:张佳

立即学习“C语言免费学习笔记(深入)”;

【新智元导读】计算机密码的发明者、图灵奖获得者Fernando Corbató逝世,享年93岁。他领导开发了计算机分时系统(CTSS),这是世界上首个操作系统之一,允许多人同时使用计算机,加快了程序员的工作速度。CTSS也是首个使用密码的计算机系统。本文将回顾Fernando的生涯及其贡献。

从二战技师到MIT副主任

Fernando José Corbató被亲切地称为“Corby”,1926年7月1日出生于加利福尼亚州奥克兰市,他的父母是加州大学伯克利分校的研究生。在Corby五岁时,他的家庭搬到了洛杉矶,他的父亲成为加州大学洛杉矶分校的西班牙文学教授。

第二次世界大战爆发时,Corby在洛杉矶的高中就读,因此他早早毕业并在17岁时加入美国海军,成为一名电子技师。战后,他进入加州理工学院,并于1950年获得物理学学士学位。

随后,Corby前往麻省理工学院攻读研究生。在麻省理工学院担任研究生助理期间,Philip M. Morse教授鼓励他成为使用Whirlwind计算机进行物理计算的专家。

1956年获得物理学博士学位后,Corby成为Morse教授新成立的麻省理工学院计算中心的研究人员,该中心当时拥有IBM 704计算机。1958年至1965年,Corby担任计算中心的副主任。

图灵奖得主Fernando Corbató逝世:没有他或许没有Linux和C语言

构建CTSS,极大缩短计算机响应时间

随着20世纪50年代后期麻省理工学院计算机使用量的迅速增加,Corby开始了解它们的局限性。

许多用户对管理计算机访问的方式感到不满。像Whirlwind这样的计算机一次只能供一个人使用,并且需要提前注册。计算中心的IBM 704以“批处理模式”运行,由专业操作员执行之前提交的计算任务。这两种方法都需要程序员等待数小时或数天,如果由于错误而必须重新运行作业,则需要再次等待。

20世纪50年代末,包括麻省理工学院教授 John McCarthy(1971年图灵奖得主)在内的几个人提出了一个名为“分时”的新概念,支持几个用户同时连接到计算机。它会在程序之间快速切换,短时间运行一个,然后运行另一个程序,每个用户将使用类似Teletype的终端设备与自己的程序交互。

为了使“分时”能够工作,计算机必须能够中断正在运行的作业,保存其状态,查找和恢复另一个作业,并在中断的位置启动它。过程控制计算机当时具备这样的能力,但计算中心的IBM 709等科学计算机却没有。此外,必须保护在用户之间切换的管理程序不被行为不当的用户程序覆盖。

1961年,Corby提出了一个关于IBM 709的小型项目,可以展示这种交互式计算。与Bob Daley和Marjorie Merwin-Daggett一起,Corby构建了兼容时间共享系统(CTSS)的初始版本,并于1961年11月进行了演示。它将暂停的程序保存到四个磁带驱动器上,为使用改进的Flexowriter终端的四个分时用户提供同时访问。

CTSS是“兼容的”,因为以批处理模式运行的二进制目标程序也可以交互运行,并且传统批处理可以与分时用户共享计算机。系统为每个用户提供了一台虚拟IBM 709计算机,该计算机可以响应终端输入的命令行执行用户程序和系统命令。

灵机语音 灵机语音

灵机语音

灵机语音 56 查看详情 灵机语音

在1963年的采访中,Corby解释了他的分时方法。他表示:计算机使用起来非常昂贵,任何闲置时间都是一个巨大的浪费。但有了分时,计算机时间被仔细计量,浪费时间几乎消失了。

CTSS的使用将计算机响应的等待时间从数小时缩短到秒,极大地提高了效率,用户从不会注意到任何滞后,使该技术更加实用。

图灵奖得主Fernando Corbató逝世:没有他或许没有Linux和C语言

发明计算机密码,保护私人账户

在20世纪60年代改进分时系统的过程中,Corby提出了另一个新颖的概念:计算机密码。

CTSS为每个用户提供了一组私有文件,但无需密码即可登陆系统意味着用户可以自由地阅读其他人的文件。

计算机密码的出现让在共享计算系统上工作的开发人员拥有自己的私人账户,他们可以在那里存储和保护他们的工作。

Corby表示:“为每个用户设置登录密码似乎是一个非常直接的解决方案。”CTSS的密码被广泛认为是最早的计算机安全机制之一。

构建Multics,被授予图灵奖

在CTSS之后,Corby开始了另一项名为Multics的工作,这项工作对当今的计算机产生了巨大的影响,Multics分时系统为以后的操作系统(如Linux)铺平了道路。

受Multics的启发出现了Unix,Unix被Dennis Ritchie使用,他与Brian Kernighan一起开发了编程的C语言,至今仍在广泛使用。

Corby的工作也激发了MIT启动MAC项目,这是计算机科学实验室的前身,后来又与麻省理工学院人工智能实验室合并,创建了计算机科学和人工智能实验室(CSAIL)。

现如今,MIT的计算机科学和人工智能实验室拥有600多名研究人员,这里也诞生了许多人工智能领域的重大突破。

1990年,Corby因其在通用、大规模、分时和资源共享计算机系统——CTSS和MULTIS的开创性工作被授予“图灵奖”。

参考链接:

https://www.php.cn/link/767f4c28a2895898b0edab21c1b18ebd

https://www.php.cn/link/2bc3900bff210b080e6bd19c10331244

以上就是图灵奖得主Fernando Corbató逝世:没有他或许没有Linux和C语言的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/587217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月10日 13:51:51
下一篇 2025年11月10日 13:52:26

相关推荐

  • Prisma 查询未返回 Schema 中指定的数组:解决方案与最佳实践

    在使用 Prisma 进行数据库查询时,有时会遇到 Schema 中定义的关联数组未被返回的问题。本文将深入探讨此问题的原因,并提供详细的解决方案和最佳实践,帮助开发者避免类似错误,确保数据查询的完整性和准确性。核心在于理解 Prisma 的 include 选项,以及如何在查询中正确使用它来获取关…

    2025年12月20日
    000
  • Prisma 查询未返回 Schema 中指定的数组:解决方案

    本文旨在解决 Prisma 在查询时未返回 Schema 中定义的关联数组的问题。通过分析问题原因和提供示例代码,帮助开发者正确配置 Prisma 查询,确保关联数据能够被正确检索。本文将重点介绍如何在 findUnique 查询中包含关联的 items 数组,并提供相应的代码示例。 在使用 Pri…

    2025年12月20日
    000
  • 解决Prisma查询不返回Schema中指定的数组问题

    在使用Prisma进行数据库查询时,有时会遇到模型中定义的关联数组(例如,ShoppingList中的items数组)未被返回的问题。本文将深入探讨该问题的原因,并提供明确的解决方案,确保关联数据能够正确地包含在查询结果中,从而避免数据缺失和潜在的应用程序错误。 Prisma关联数据查询:理解inc…

    2025年12月20日
    000
  • Prisma 查询未返回 Schema 中指定的数组?原因及解决方案

    在使用 Prisma 进行数据库查询时,有时会遇到 Schema 中定义的关联数组未被返回的问题。这通常是因为在查询时没有显式地指定要包含这些关联数据。本文将深入探讨这一问题的原因,并提供详细的解决方案,确保您能正确获取关联数据,构建健壮的应用。 在使用 Prisma 时,即使数据库中存在关联数据,…

    2025年12月20日
    000
  • Prisma:查询未返回 Schema 中指定的数组的解决方案

    在使用 Prisma 进行数据库查询时,如果遇到 Schema 中定义的关联数组未返回的问题,通常是因为在查询中没有明确指定需要包含该关联数组。 在使用 prisma 进行数据库查询时,可能会遇到一个常见的问题:尽管在 prisma schema 中定义了关联关系,但查询结果中并未包含关联的数组数据…

    2025年12月20日
    000
  • Prisma关系查询:如何使用include获取关联数据

    Prisma ORM在执行查询时,默认情况下不会自动返回关联模型的数据,即使这些关系在Schema中已明确定义。要获取这些关联数据,开发者需要显式地在查询中利用include选项。本文将详细阐述Prisma这一默认行为的原因,并提供include选项的多种用法,包括基本使用、嵌套关联以及与selec…

    好文分享 2025年12月20日
    000
  • Vue 应用中高效共享数据的模块化策略

    本文探讨了在Vue应用中如何高效管理和共享数据,以避免重复的API请求。通过利用JavaScript模块的单例特性和Vue的响应式系统,我们能够构建一个轻量级的数据管理方案。该方案允许数据仅被加载一次,并在多个组件间实现响应式共享,从而优化性能并简化数据流,特别适用于不需要复杂状态管理库的场景。 在…

    2025年12月20日 好文分享
    000
  • Vue应用中高效共享数据:模块化响应式数据管理实践

    本教程探讨Vue应用中组件间数据共享的最佳实践,特别针对多个组件需展示相同数据时避免重复API请求的问题。文章提出一种轻量级、模块化的响应式数据管理方案,通过一个独立的JavaScript模块集中管理数据加载与状态,确保数据仅被请求一次,并能实时响应更新,从而优化应用性能并简化数据流。 在vue应用…

    2025年12月20日
    000
  • Promise与生成器的结合使用

    promise与生成器结合通过生成器的暂停/恢复特性配合promise处理异步操作,使异步代码更像同步代码,提升可读性和维护性。其核心在于将异步操作封装为promise,并在生成器中通过yield等待结果,由runner函数(如run或spawn)驱动生成器执行。这种模式适用于按序执行依赖性强的异步…

    2025年12月20日 好文分享
    000
  • 事件循环中的“闲置”阶段是什么?

    事件循环的“闲置”阶段是指主线程无紧急任务时的状态,可用来执行低优先级任务以提升性能和用户体验;2. 浏览器通过requestidlecallback api 显式支持该机制,传入任务函数和超时配置,利用timeremaining()和didtimeout控制执行节奏;3. node.js没有直接等…

    2025年12月20日 好文分享
    000
  • JavaScript中事件循环和缓存策略的关系

    事件循环管理异步操作的执行顺序,而缓存策略则在其中优化数据获取效率。1. 事件循环确保网络请求异步执行,避免阻塞主线程;2. 缓存策略通过检查本地存储减少网络请求,提升响应速度;3. 缓存未命中时发起异步请求,并在数据返回后更新缓存;4. 利用事件循环调度实现 stale-while-revalid…

    2025年12月20日 好文分享
    000
  • 使用Promise处理浏览器存储异步

    使用promise处理浏览器存储异步操作的核心在于将基于回调或事件的api封装为promise,从而提升代码可读性、简化错误处理,并实现统一的异步调用风格。1. 将indexeddb等异步api通过封装成promise,将事件监听转换为resolve和reject,避免回调地狱;2. 对locals…

    2025年12月20日 好文分享
    000
  • 事件循环中的“关闭回调”阶段是什么?

    1.关闭回调阶段是node.js事件循环最后处理资源清理回调的环节;2.它确保socket.destroy()、server.close()等操作的回调被执行,防止资源泄露;3.该阶段对优雅停机至关重要,保障连接关闭后才退出进程;4.调试时可用–trace-event-loop-phas…

    2025年12月20日 好文分享
    000
  • 事件循环中的“任务优先级”是什么?

    微任务在当前宏任务结束后立即执行并清空,2. 宏任务按队列顺序每次执行一个,3. 微任务优先级“高”体现在插队机制,确保promise等异步操作更快响应,4. 理解该机制可优化性能、避免卡顿、保证异步顺序、批处理dom更新,最终提升代码质量与用户体验。 事件循环中的“任务优先级”并非我们传统意义上那…

    2025年12月20日 好文分享
    000
  • 事件循环中的任务队列是如何管理的?

    事件循环通过区分宏任务和微任务管理执行顺序,确保异步代码合理调度;2. 每个宏任务执行后会清空所有微任务再进入下一宏任务或ui渲染;3. 宏任务包括script执行、settimeout、i/o、ui渲染等,微任务包括promise回调、queuemicrotask等;4. 区分两者可提升性能:微任…

    2025年12月20日 好文分享
    000
  • javascript闭包如何保持组件状态

    javascript闭包通过函数“记住”其词法作用域来保持组件状态,即使函数在其作用域外执行也能访问内部变量。1. 利用闭包封装状态变量:将状态定义在函数内部并返回可操作该状态的函数,如createcounter示例中count被increment等函数持续访问;2. 在react函数组件中使用闭包…

    2025年12月20日 好文分享
    000
  • javascript闭包怎么在Web Workers中使用

    无法直接在web worker中访问主线程变量,必须通过postmessage传递数据;2. 在worker内部接收数据后,可结合内部变量创建闭包,使闭包访问主线程传入的数据和worker本地数据;3. 闭包常用于图像处理等场景,保持对配置参数的持久访问;4. 需注意闭包带来的作用域链开销和内存占用…

    2025年12月20日 好文分享
    000
  • 如何利用事件循环实现高效的缓存策略?

    传统缓存策略可能成为性能瓶颈,因其常含同步阻塞操作(如磁盘i/o、网络请求或复杂失效逻辑),会冻结主线程,尤其在高并发下导致服务卡顿;2. 在node.js中应利用事件循环优化缓存读写,通过异步i/o(如redis客户端)、setimmediate/process.nexttick延迟非关键任务、w…

    2025年12月20日 好文分享
    000
  • 事件循环中的“任务拆分”是什么?

    识别需任务拆分的场景:当应用卡顿或无响应时,用chrome devtools performance面板分析性能瓶颈,常见场景包括大量数据处理、复杂计算、长时网络请求、渲染大量dom;2. 实现方式:可用settimeout/requestanimationframe拆分任务块,或用async/aw…

    2025年12月20日 好文分享
    000
  • javascript如何实现数组垃圾回收

    javascript垃圾回收机制的核心是“标记-清除”算法,引擎从根对象(如全局对象、调用栈)出发,标记所有可达对象,未被标记的不可达数组在清除阶段被回收;2. 数组能否被回收取决于是否存在强引用,当所有引用被解除(如赋值为null、超出作用域、从父结构移除)时,数组变为不可达,即可被回收;3. 常…

    2025年12月20日 好文分享
    000

发表回复

登录后才能评论
关注微信