50年前的程序员女神,用代码把人类送上月球

【MATLAB例程,无人机避障7】基于RRT*与人工势场法(RRT*+APF)的多无人机二维动态路径规划与避障 程序采用快速扩展随机树星算法(RRT*)与人工势场法(APF),实现四架无人机在二维动态障碍环境中的路径规划与协同避碰。通过RRT*的邻域选父和节点重连优化全局参考路径,利用APF进行局部动态避障,绘制全局路径、实际轨迹、安全净间隙、速度与加速度及航程等图像,对比RRT+APF与RRT*+APF的规划效果。无人机起终点、障碍物分布、采样次数及运动约束均可自行调整。 立即下载

1969年7月20日,经过4天飞行的阿波罗11号终于来到了最关键的时刻:降落到月球表面。

就在这个时候,飞船计算机突然开始闪烁报警。

全球6亿人在观看电视直播,NASA飞行控制中心的气氛让人窒息。

人类的首次登月计划面临着艰难的抉择:降落还是放弃。

幸运的是,控制中心的人对飞行控制软件有着高度的信心,指示阿波罗11号继续降落。

飞行控制软件不负众望,它忽略了那些低优先级的情况,专注于最高优先级的任务,引导着阿姆斯特朗和奥尔德林穿过坑坑洼洼的月球表面,成功着陆。

事后分析发现,是因为一个开关被放置到了错误的位置,导致计算机进入了过载的状态。 

那个只有2K内存的计算机既得执行降落所需的计算,又得处理开关错误引起的额外数据。

但是这个程序居然实现了抢占式任务:用高优先级的着陆任务打断了低优先级的,实在太厉害了。

这个飞行控制软件是玛格丽特·汉密尔顿和她的团队编写的。

(代码等身)

这无疑是玛格丽特人生的最高光时刻。

后来乐高公司根据那张著名的照片开发了乐高玩具套装:NASA中的女性,玛格丽特成为其中的一员。

1、2K内存的计算机

玛格丽特1936年出生于美国印第安纳州,后来全家搬到了密歇根,1958年她获得了密歇根大学的数学学士学位,随后她在MIT找了一份工作,成为了一名程序员,开发气象预测软件。

这是软件开发的蛮荒岁月,计算机科学和软件工程还没有建立,一切全靠程序员在工作的实践中学习。

1961年,玛格丽特开始参与国防项目SAGE,协助开发了美国第一个空中防御系统,通过雷达来搜索飞机。

玛格丽特在这个项目上展示自己的天赋:“当一个新人进入项目时,总是会被分配一些没有人能搞清楚的程序,我也被分了一个非常怪异的程序,最早写程序的人甚至用希腊语和拉丁语来写注释!不过我还是成为了第一个让这个程序跑起来的人!”

正是在SAGE项目上的成就让玛格丽特的人生发生了转折。

1965年,她的丈夫在当地报纸上看到了一则消息:NASA正在寻找程序员,开发程序,把人类送上月球。 

玛格丽特非常兴奋:“哇,那我一定得去!”。 

这一年玛格丽特28岁,加入了阿波罗项目,成为了项目的第一个程序员。

阿波罗项目需要开发一个精简的计算机AGC(Appollo Guidance Computer),用来控制登月飞船。

这是一件艰难的任务,因为当时的计算机通常要占据一间屋子,但是AGC被限制到只有一立方英尺那么大。

项目组被分为两拨人,一拨设计硬件,另外一拨开发软件。 

玛格丽特自然成为了软件组的负责人。

AGC只有可怜巴巴的2K内存,36K的ROM,更匪夷所思的是那个ROM是Core rope memory(芯绳存储器?),也就是说,0和1是通过电线和微小的环形磁芯表示。

电线穿过磁芯表示1,没有穿过表示0。

我们现在想把程序存盘,只需要按一个Ctrl + S就可以,但是想把阿波罗飞行软件存盘,只有一种办法:像纺织工那样细心地把电线和磁芯给编织起来。

这个工作不能出一点儿差错,要不然,无论代码写得多么正确,最终都会功亏一篑。

事实上,这个工作的确是由新英格兰纺织厂的女工们完成的,绳索存储器被一些程序员戏称为Little Old Lady memory。

2、软件工程

在NASA工作的大多数软件工程师都是男性,有人在家里照顾孩子,但是玛格丽特没有办法,在周末和晚上她会带女儿劳拉来到办公室。

劳拉经常看到她的妈妈在飞船中扮演宇航员来测试软件,好奇心大起,也想试一试,结果突然间整个系统崩溃了,原来劳拉在飞船“飞行”期间,选择了一个叫做P01的功能。

玛格丽特意识宇航员也有可能犯类似错误,希望修改软件防止它。 

但是NASA的人说,宇航员都是训练过的,绝对不会犯类似错误。当然,修改软件也非常难,想想芯绳存储器!

但是,在阿波罗8号绕月飞行的时候,宇航员恰恰犯了和她女儿一样同样的错误,飞船在太空“迷路”,无法将宇航员送回地球。得知消息的玛格丽特带领团队,突击9个小时,终于让阿波罗8号回到正常轨道。

(支援阿波罗8号)

此后,软件都内置了保护功能,防止类似事件的发生。 

玛格丽特开始将整个阿波罗任务视为一个系统,这个系统由3部分组成:软件,硬件,人。

在开发飞行控制软件的过程中,玛格丽特创造了“软件工程”这一术语,她要赋予“软件”的合法性,就像硬件以及其他类型的工程一样,构建软件的人也应该得到应用的尊重。

在刚开始的时候,大家认为这是一个笑话:软件开发是工程吗? 

随着时间的推移,NASA逐渐意识到,软件工程会成为它们的重要工具,能够抢先苏联一步完成登月。

3、除了成为先行者别无选择

“回想起来,我们是世界上最幸运的人,除了成为先行者别无选择” ---玛格丽特·汉密尔顿

玛格丽特就是软件工程领域的先行者,开发阿波罗飞行软件这种对正确性、可靠性要求极高的软件,没人任何经验可以遵循,没有任何学校可以学习,软件不仅要工作,而且必须第一次就正确工作。软件不仅要可靠,而且必须能进行实时的错误检测和恢复。

玛格丽特带领团队出色地完成了这个软件,在关键时刻把人类送上了月球。

2016年11月22日,玛格丽特获得了奥巴马总统颁发的总统自由勋章,以表彰她在阿波罗登月任务开发机载飞行软件所做的工作,以及对软件工程的基础性贡献。

玛格丽特说:当我想了解新事物或者做新东西的时候,一定不要让恐惧成为障碍。

一个人不应该害怕说“我不知道”,“我不理解”,或者问“愚蠢的问题”。

即使事情看起来不可能,即使所谓专家说这不可能,也要继续下去。

不要害怕犯错,只有敢于失败的人才能取得更大的成就。

【机械故障诊断】基于VMD分解与故障频率匹配的复合故障分离方法:MATLAB实现与智能运维应用 MATLAB 轴承复合故障分离|VMD分解与故障频率匹配 内容概要:通过结合变分模态分解(VMD)与理论故障频率匹配技术,实现对滚动轴承复合故障的自适应分离与精准诊断。该方法首先对振动信号进行稳健预处理,再通过参数寻优的VMD实现频带自适应分解,随后利用包络解调提取各模态的冲击周期,并基于轴承几何参数和转速计算理论故障频率。通过基频、倍频与边带的多证据匹配策略,将模态与外圈、内圈、滚动体、保持架等具体故障类型关联,支持共享模态的复合故障重构,最终输出各故障类型的独立分量与诊断结果。该方案提升了复杂工况下弱故障的识别能力与诊断的可解释性。; 适合人群:具备一定信号处理与机械故障诊断基础知识,从事工业设备状态监测、智能运维系统开发或相关算法研究的研发人员。; 使用场景及目标:①应用于电机、泵组、风电、轨道交通等领域的轴承复合故障诊断;②解决强弱故障共存、频率重叠导致的掩蔽问题,实现多故障的分离与识别;③为设备的智能运维、健康管理和剩余寿命预测提供可靠的故障分量数据与诊断依据; 阅读建议:此资源以MATLAB R2025b为实现平台,提供了完整的算法流程、代码示例与GUI界面。建议使用者在实践中重点关注参数搜索策略、多证据匹配的实现细节以及共享模态重构的逻辑,并结合实际工程数据进行验证和调优。 立即下载

相关推荐

基于.NET8开发,是一套开源、免费、跨平台、企业级在线考试软件,支持x64、x86、Arm64芯片架构的windows和linux操作系统,支持人大金仓、达梦、OceanBase数据库 等数据库

星期八在线考试系统,基于.NET8开发,是一套开源、免费、跨平台、企业级在线考试软件,支持x64、x86、Arm64芯片架构的windows和linux操作系统,支持人大金仓、达梦、OceanBase数据库 及 MySql、SqlServer、PostgreSql、SQLite 等数据库。

第二章 软件工程与项目管理

是什么。软件工程是把系统化的、规范的、可度量的方法应用于软件的开发、运行和维护,也就是把工程化方法用于软件。它包含三个要素,三者缺一不可。要素含义常见干扰项方法完成软件开发各项任务的技术手段,如分析方法、设计方法、测试方法工具、过程工具为方法提供自动或半自动支撑的软件环境方法过程把方法与工具综合起来、完成软件任务的工作步骤与活动人员、文档怎么考。一是多选直接问"软件工程三要素包括",二是把"人员"“文档”“技术”"组织"混进选项让你排除。【易错】三要素只有方法、工具、过程。

被放养的研究生的博客 649

TC8测试TCP-UNACCEPTABLE-04/006

TC8测试TCP-UNACCEPTABLE-04/006

2027年软件工程、机电一体化与智能控制国际会议(SEMIC 2027)

2027年软件工程、机电一体化与智能控制国际会议在厦门召开,突出“软件定义装备、控制驱动产线”的实务导向,关注需求如何从图纸、代码、控制器一路跑通到稳定量产。

Yangxshy的博客 224

通信行业面向5G微服务的接口测试自动化方案:持续集成中质量门禁与服务虚拟化协同的持续测试体系设计

通信行业面向5G微服务的接口测试自动化方案:持续集成中质量门禁与服务虚拟化协同的持续测试体系设计

企业数字化转型AI大模型数字底座项目设计方案.pptx

企业数字化转型AI大模型数字底座项目设计方案.pptx

openFuyao x 复旦大学软件工程实验室 Panel 回顾:Agentic时代,集群调度技术体系将如何演进?

近期,openFuyao开源社区与复旦大学软件工程实验室(CodeWisdom团队)联合举办“Agentic时代,集群调度技术体系将如何演进”Panel活动,围绕Agentic负载带来的调度挑战、Kubernetes的角色定位及其与Agent Runtime的分层协作机制,结合产业实践展开深入讨论,共探AI Native基础设施的架构演进方向。

openFuyao的博客 308

PSIM-串联谐振半桥LLC开关电源+PFM变频闭环控制【仿真+计算书+参考文献】

内容概要:本文档系统性地整合了电力电子与控制系统仿真领域的丰富资源,聚焦于基于PSIM和Simulink平台的串联谐振半桥LLC开关电源建模与仿真,深入探讨PFM变频闭环控制策略的设计与实现。内容涵盖LLC谐振变换器的工作原理、关键参数设计、开环与闭环仿真模型构建、软开关技术(ZVS/ZCS)、恒压恒流双竞争控制机制以及调频控制等核心技术,配套提供完整的仿真文件、计算书和参考文献,有助于深入理解高频开关电源系统的动态响应特性与稳定性分析方法。此外,文档还汇集了大量拓展性仿真资源,涉及双向DC-DC变换器、PWM整流器、PFC电路、储能系统、微电网优化、DAB变换器、并网逆变器等多个方向,构成一套完整的科研与工程实践参考资料体系。; 适合人群:适用于电力电子、电气工程及其自动化等相关专业的高校本科生、研究生,以及从事开关电源设计、新能源系统开发、电力变换器研发等工作的工程技术人员。; 使用场景及目标:①深入学习LLC谐振变换器的拓扑结构与闭环控制原理;②掌握PSIM/Simulink在电力电子系统中的高精度建模与仿真技能;③为科研项目、学位论文或产品开发提供可复用的技术方案与代码基础;④深化对PFM控制、软启动过程、ZVS/ZCS实现机制及系统稳定性的理解; 阅读建议:建议结合文档中提供的仿真模型与计算书进行同步操作,优先剖析主电路拓扑与控制逻辑架构,再逐步开展参数调节与仿真验证实验,同时可参考所列相关资源拓展技术视野,提升综合设计能力。

AI 能让一个人成为团队吗?从数据中台到 OPC,重新理解软件工程能力

AI 扩大了个人的实现能力,但完整数据中台仍受到跨部门决策、并行任务、独立验收和持续运行的约束。本文从架构师的责任边界出发,分析 OPC 如何通过可重复交付与成本控制形成经营能力,并梳理工程师在业务理解、系统设计、AI 协作和验证运行方面的学习重点。

hiliang521的博客 392

Windows开发工具环境管理:Git、Node.js、Python多版本与PATH冲突排查 - 配套实验资源

本资源是《Windows开发工具环境管理:Git、Node.js、Python多版本与PATH冲突排查》的配套实验工具,适用于 Windows PowerShell 5.1 和 PowerShell 7,帮助开发者排查 Git、Node.js、Python、Codex 等工具的多版本共存、PATH 配置异常及命令优先级冲突问题。 **资源包含两个 PowerShell 脚本:** 1. **Get-ToolchainInventory.ps1**:只读环境诊断工具,可列出开发工具的命令候选路径,检查 PATH 目录、重复条目及无效路径。不执行开发工具,也不修改系统配置。 2. **Invoke-PathPrecedenceLab.ps1**:PATH 优先级演示工具,在系统临时目录中生成测试命令,通过临时调整当前进程的 PATH,直观展示 Windows 命令查找与优先级规则。实验结束后自动恢复 PATH 并清理自身创建的临时文件。 **资源特点:** - 兼容 Windows PowerShell 5.1 和 PowerShell 7。 - 支持开发工具路径盘点与 PATH 冲突分析。 - 提供可重复的命令优先级实验。 - 不修改注册表、系统级或用户级环境变量。 - 不卸载软件、不安装依赖、不执行包管理器。 - 适合 Windows 开发环境排查、PowerShell 学习与技术教学。 **使用说明:** 下载后建议先审查脚本,再按照配套文章中的 PowerShell 命令运行。脚本已完成静态检查与打包,尚未经过 Windows 实机执行验证。 **安全提示:** 诊断结果可能包含个人或组织目录信息,公开分享前请脱敏。若受到 PowerShell 执行策略限制,应采用符合环境安全要求的授权方式运行,不建议全局关闭安全限制。

基于动态窗口法DWA的机器人路径规划研究(Matlab代码实现)

内容概要:本文系统研究了基于动态窗口法(DWA)的机器人局部路径规划算法,深入剖析其在动态环境中实现自主避障与实时轨迹优化的核心机制。文章详细阐述了DWA算法的速度空间采样策略、轨迹预测模型、动力学约束处理及多目标代价函数的设计原理,并通过构建完整的Matlab仿真框架验证算法有效性。结合典型场景的仿真实验,展示了机器人在复杂障碍物环境下如何实时生成安全、平滑且符合运动学约束的最优路径,充分体现了DWA在移动机器人导航中的实用性与鲁棒性。; 适合人群:具备机器人运动规划基础知识和Matlab编程能力,从事智能移动机器人、自动驾驶或服务机器人研发的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解DWA算法的理论基础与实现细节;②掌握机器人局部路径规划的仿真实现方法;③为实际机器人系统的导航模块开发提供可复用的算法原型与代码参考;④作为进一步研究高级导航算法(如TEB、MPC)的技术基础。; 阅读建议:建议结合提供的Matlab代码逐模块分析与调试,重点关注速度采样、轨迹积分、障碍物距离计算及代价评估等关键环节,通过调整参数在不同地图环境中进行对比实验,以深刻把握算法性能与参数之间的关系,进而提升对实时路径规划系统设计的理解与应用能力。

AI时代软件工程建模能力提升指南(迎接2027版)

AI给人类剩下的技能,需要辛苦学习才能掌握,然后用来引领AI。如果某个技能不需要你付出任何脑力,这样的技能没有竞争优势。

rolt的专栏 1643

升级版本基于多目标粒子群算法的微电网优化调度【风光、储能、柴油、燃气、电网交互】(Matlab代码实现)

内容概要:本文详细介绍了一种基于多目标粒子群算法(MOPSO)的微电网优化调度系统,涵盖风能、太阳能、储能系统、柴油发电机、燃气机组以及与主电网之间的能量交互。通过Matlab编程实现,该模型能够综合优化经济成本、环境污染和能源利用效率等多个目标,对微电网内部多种能源进行协调调度,提升系统整体运行效能与可持续性。文中提供了完整的仿真代码与典型算例分析,具有较强的可复现性和实际应用价值,适用于科研验证与教学演示。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、智能电网、优化算法等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于微电网多能源协同优化调度的研究与仿真;②支撑学术论文的算法复现、改进与对比实验;③为电力系统中多目标优化问题提供可行的技术路径与解决方案参考; 阅读建议:建议结合文中提供的YALMIP工具包及网盘资源链接,进行代码的运行、调试与参数优化,重点掌握目标函数构建、约束条件设定以及MOPSO算法在复杂能源系统中的具体应用方法。

从软件工程 1.0 到 3.0:研发方式如何演进,工程体系如何延续

一个退款功能,从提出需求到上线,需要完成多少工作?业务人员可能只说了一句“用户付款后可以申请退款”,团队就要继续明确:发货后还能退吗?允许部分退款吗?重复提交会不会重复退款?支付平台超时后,订单应该处于什么状态?规则明确之后,还要设计模块协作、实现代码、验证结果、安排发布,并观察上线后的行为。它把业务诉求转化为可运行、可验证、可持续维护的软件,并协调参与其中的人、技术和资源。《软件工程 3.0》用三个阶段描述这一体系的演变。

hiliang521的博客 394

数据融合状态估计基于KF、UKF、EKF、PF、FKF、DKF卡尔曼滤波KF、无迹卡尔曼滤波UKF、拓展卡尔曼滤波数据融合研究(Matlab代码实现)

内容概要:本文系统研究了多种卡尔曼滤波算法在数据融合与状态估计中的应用,重点涵盖经典卡尔曼滤波(KF)、扩展卡尔曼滤波(EKF)、无迹卡尔曼滤波(UKF)、粒子滤波(PF)、联邦卡尔曼滤波(FKF)和分布式卡尔曼滤波(DKF)等方法的原理、建模过程及Matlab实现。通过仿真实验对比各类算法在非线性系统、高噪声环境和多传感器耦合场景下的状态估计性能,深入分析其适用条件、精度差异与计算复杂度,特别聚焦于无人机、机器人、导航系统等实际工程背景下的传感器融合问题,提供了完整的算法实现代码与结果可视化分析,帮助读者掌握不同滤波技术的核心机制与工程选型依据。; 适合人群:具备信号处理、控制理论或状态估计基础,从事自动化、电子信息、导航制导、智能系统等相关领域的研究生、科研人员及工程技术人员,尤其适合开展多传感器融合、动态系统建模与状态估计方向研究的专业人士。; 使用场景及目标:①深入理解并对比主流状态估计算法的理论差异与实际表现;②应用于无人机姿态估计、机器人定位、电力系统状态监测等多源信息融合任务;③为科研论文复现、工程项目开发或算法优化提供可靠的Matlab代码参考与技术支撑; 阅读建议:此资源以Matlab代码实现为核心,强调理论与实践结合,建议读者在掌握基本滤波原理的基础上,边运行代码边分析算法流程,尝试调整系统模型与噪声参数,观察不同工况下的滤波效果,从而深化对状态估计技术的理解与应用能力。

三相PWM整流器双闭环仿真(Simulink仿真实现)

内容概要:本文围绕基于Simulink的三相PWM整流器双闭环控制系统展开,详细构建了电压外环与电流内环协同控制的仿真模型,旨在提升整流器在动态响应、稳态精度及系统稳定性方面的性能。文档深入阐述了双闭环控制策略的设计原理,包括PI控制器参数整定、坐标变换(如abc/dq变换)、SVPWM调制技术的应用,并结合电网平衡工况下的控制需求,验证系统在单位功率因数运行、直流侧电压稳定等方面的控制效果。同时,文章强调科研过程中逻辑思维与“借力”意识的重要性,倡导利用高质量开源资源加速研究进程。配套提供了完整的仿真模型与相关技术资料,涵盖YALMIP优化工具包等内容,支持进一步拓展至新能源并网、电能质量治理等工程应用场景。; 适合人群:电气工程、自动化、电力电子与电力传动等相关专业的本科生、研究生及科研人员,特别适用于从事电力电子系统建模、控制算法设计与仿真实践的初学者与进阶学习者。; 使用场景及目标:①掌握三相PWM整流器的工作机理与双闭环控制结构设计方法;②熟练运用Simulink搭建电力电子系统仿真模型;③理解PI控制、前馈补偿、坐标变换在实际系统中的应用;④为后续研究电网不平衡、能量回馈、混合储能系统等复杂工况奠定基础。; 阅读建议:建议按照资源目录顺序系统学习,先理解控制理论框架,再结合Simulink模型进行仿真调试,重点关注各模块信号流向与参数设置,并配合团队提供的其他电力电子与优化控制资源深化技术积累。

计算轴向磁铁和环状磁铁的磁场(Matlab代码实现)

内容概要:本文提供了用于计算轴向磁铁和环状磁铁磁场分布的Matlab代码实现,基于电磁学基本理论(如毕奥-萨伐尔定律)对永磁体产生的磁场进行数值建模与仿真分析。代码能够精确计算并可视化磁铁周围空间中磁场强度的大小与方向分布,特别适用于具有轴对称结构的磁体系统,支持不同几何参数(如半径、高度、磁化方向)下的磁场仿真,可用于科研验证、工程设计及教学演示,为磁性器件的研发提供可靠的理论支撑与仿真工具。; 适合人群:具备电磁场与电磁波基础知识及Matlab编程能力,从事电气工程、物理学、磁性材料设计、电机与传感器研发等领域的科研人员、高年级本科生与研究生。; 使用场景及目标:①用于教学中演示轴向磁铁与环状磁铁磁场的空间分布特性,帮助学生理解磁场矢量场的物理意义;②支撑电机、磁悬浮装置、霍尔传感器等设备中的磁路设计与性能优化;③作为复杂磁场系统仿真的基础模块,支持进一步的二次开发与多物理场耦合分析; 阅读建议:使用者应熟悉Matlab编程环境及基本绘图功能,建议结合经典电磁学理论公式对照代码逻辑逐行理解,通过调整磁体尺寸、磁化强度等参数开展仿真实验,观察磁场变化趋势,深入掌握磁场分布规律及其工程应用价值。

Comsol超声空化气泡仿真:从基础理论到工业应用实践

本文详细介绍了Comsol超声空化气泡仿真的基础理论及工业应用实践。通过解析超声空化现象、Comsol模型搭建流程及求解器优化技巧,帮助工程师掌握气泡仿真技术,提升超声波清洗和乳液制备等工业应用的效率与质量。

weixin_27966471的博客 250
上一篇: 原来墙,是这么把我TCP连接干掉的!
下一篇: 顶级代码女神,编程界最有权势的女王
IT界那些事儿
博客等级 码龄6年 2万+粉丝 22原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值