位置: IT常识 - 正文

世界上最完美的两个软件,太厉害了!(世界上最完美的犯罪)

编辑:rootadmin
世界上最完美的两个软件,太厉害了!

推荐整理分享世界上最完美的两个软件,太厉害了!(世界上最完美的犯罪),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:世界上最完美的女人,世界上最完美的脸,世界上最完美的腹肌,世界上最完美的腹肌,世界上最完美的男人,世界上最完美的人是谁,世界上最完美的腹肌,世界上最完美的犯罪,内容如对您有帮助,希望把文章链接给更多的朋友!

今天给大家介绍两个软件,一个体现了人类在软件开发流程上的极致,另外一个则体现了程序员个体能力的巅峰。

01

航天飞机飞控软件

先来说第一个,航天飞机飞行控制软件,就是下图这个大家伙。

航天飞机重达120吨,还携带着2000吨的燃料。

它有四台硬件相同,软件也相同的计算机对发射过程进行精准控制,从几千个传感器中提取信息,每秒做出几百个决定,并且对每个决定进行投票。

第五台计算机,则运行着不同的软件,随时待命,准备替换其他发生故障的计算机。

这些计算机要确定什么时候对主发动机点火,什么时候下令固体火箭助推器点火,火箭姿态控制....

每次发射,软件都控制着价值40亿美元的设备,六名航天员的生命,以及国家的梦想。

这个软件不能崩溃,不能重启,最小的误差都不允许:一个三分之二秒的计时错误就会使航天飞机偏离航线近5公里。

洛克希德马丁公司的航天飞机小组实现了目标:软件几乎没有错误,接近完美。

软件的最后三个版本,每个版本(42万行代码)只有一个Bug。

最后的11个版本一共有17个错误,同等复杂度的商业程序有5000个。

这样的软件是如何炼成的呢?

答案是极为苛刻软件流程。

洛克希德马丁公司的航天飞机软件小组有260名员工,这些人创造了一种完全不同的开发文化。

没有超级明星程序员,开发软件的整个流程都是有意设计的,不依赖任何特定的人。

这个流程使得他们过上正常的生活,满足最后期限,交付完全符合其承诺的软件。

这个流程包含几个要点:

1. 软件的质量取决于软件的计划

在航天飞机软件开发小组,软件开发周期中有三分之一的时间不写代码,而是和NASA一起用来讨论需求:软件应该做什么事情。

即使是最微小的细节也要达成一致。不是口头达成一致,而是写下来,文档化,形成规范,非常专业和精确。

未经双方的同意,规范中的任何内容都不会更改。

没有良好定义的规范,程序员不会改任何一行代码。

例如让航天飞机使用GPS导航,这一变化仅涉及6366行代码,占程序总量的1.5%, 但是相关的文档长达2500页,涵盖了各种各样的条件,分支,几乎就是伪代码了。

而航天飞机系统的软件,总文档足足有30卷,40000页!

2. 两个百科全书式的数据库

世界上最完美的两个软件,太厉害了!(世界上最完美的犯罪)

一个是代码历史的数据库,每一行代码都有注释,显示每次的更改时间,更改原因,更改目的,有哪些文档详细说明了更改。

对于代码发生的一切都记录在这里,每一行代码的“祖谱”都可以立刻提供给每个人。

第二个是错误数据库,记录了软件在编写和运行时发生的每一个错误,可以追溯到近20年前。

每个错误都会记录下它被发现的时间,是谁发现了它,当时正在发生什么活动(测试,训练,飞行),错误是如何引入的,为什么逃过了设计阶段,开发阶段,测试阶段的严格审查.....

由于积累了如此多的数据,以至于他们开发了一个代码模型,能预测某个版本中可能有多少错误。

如果开发人员和测试人员发现的Bug太少,大家会重复流程,努力使得现实和预测相匹配。

3.不止要修复错误,要修复任何引入错误的东西

如果软件存在缺陷,那么编写它的方式一定存在问题。

在计划阶段没有发现的Bug,是如何逃过检查的?检查流程是否出了问题,是不是要在checklist上增加一项检查?

重要的是,不要将错误归咎于个人。流程要承担责任---启动一个分析的流程来发现Bug的原因。

航天飞机软件开发小组的流程是如此强大,不仅仅通过了SEI CMM5的认证,而且SEI的不少标准就来自于这个小组的各种实践。

洛克希德马丁开发了近乎完美的软件,大家肯定会想到一个问题:这种开发方式会不会扼杀创造力?

他们的回答是:会,因为大家必须按照手册上规定的流程去做,并且时时刻刻都有人在背后监督。

人们必须将创造力用于改变流程,而不是改变软件。

02

排版软件TEX

经典巨著《计算机程序设计的艺术》在程序员界可谓是无人不知,无人不晓了。

1973年,这部刚出到第三卷的书(计划写七卷)已被计算机界视为“神作”, 1974年美国计算机学会就“迫不及待”的把计算机界的最高奖图灵奖授予高德纳。

此时高德纳仅仅36岁 !只靠一套还没有完成的书就获得ACM图灵奖,不但是前无古人,估计也后无来者了。

然而令人大跌眼镜的是, 拿到图灵奖以后, 高德纳宣布暂停写作, 理由竟然是现有的计算机排版系统太差,破坏了书的美感 !然后单枪匹马开发出了革命性的排版系统TEX , TEX至今仍是全球学术排版的不二之选。

TEX功能强大,几乎无懈可击,其版本号也很有意思,不是数字(3.0, 3.1, 3.2....) 也不是年份(Windows 95, 98, 2000...),而是不断逼近的圆周率 (3.1415926...) ,这从侧面反映了软件几近完美,不需要做改进了。

高德纳曾表示“最后一次升级是(于我过世后)将版本数改为 π,那时任何余下的漏洞将被看作程序的功能!

有趣的是高纳德为此还设置了奖金,谁能从TEX 发现第一个Bug ,奖励2.56美元,然后每年翻一倍,5.12,10.24......

作为算法的大师,不可能不知道指数增长的可怕性,但高德纳对自己的代码质量非常有信心,事实上,当奖金达到327.68美元以后,基本上就没什么Bug报出来了。 

那些找到Bug 的人收到高德纳签名的支票以后也不去兑换, 而是作为珍品收藏了 :-)

高德纳编程能力之强可以说是碾压硅谷的所有程序员,面向对象的发明人Alan Kay(2003年图灵奖)这么说过:

60年代末,当我在斯坦福从事AI项目时,每个感恩节我们都会和硅谷的编程高手们举行编程竞赛,McCarthy(人工智能之父,1971年获图灵奖)出题, 奖品是好像是一只火鸡。

高德纳参与的那一年,把我们都给虐了, 他的代码无论是程序执行和算法执行都是最快的,并且他用的是一台最慢的批处理机器!

我们问高德纳:“你是怎么做到的?”

他说:“当我学习编程时,如果每天有五分钟的时间使用机器,就高兴得不得了, 所以必须要让程序一次运行成功,没有错误,算法设计达到最佳。”

(完)

本文链接地址:https://www.jiuchutong.com/zhishi/298990.html 转载请保留说明!

上一篇:【css伪类选择器及透明度——附项目图片及代码】(css伪类选择器怎么用)

下一篇:Linux c/c++技术方向分析(linux写c++程序)

  • 笔记本电脑开wifi共享(笔记本电脑开wifi)(笔记本电脑开wifi的快捷键)

    笔记本电脑开wifi共享(笔记本电脑开wifi)(笔记本电脑开wifi的快捷键)

  • 荣耀60尺寸(荣耀60尺寸多少寸)

    荣耀60尺寸(荣耀60尺寸多少寸)

  • 黄油相机怎么修剪视频(黄油相机怎么修改图片上的文字)

    黄油相机怎么修剪视频(黄油相机怎么修改图片上的文字)

  • 为什么苹果xsmax下载不了小红书(为什么苹果xsmax突然黑屏过一会自己好了)

    为什么苹果xsmax下载不了小红书(为什么苹果xsmax突然黑屏过一会自己好了)

  • 显示页眉页脚的视图方式是什么(显示页眉页码)

    显示页眉页脚的视图方式是什么(显示页眉页码)

  • 三星旗舰手机有哪几款(三星旗舰手机有哪些还是lcd屏)

    三星旗舰手机有哪几款(三星旗舰手机有哪些还是lcd屏)

  • 滴答预约顺风车取消要给钱吗(滴答预约顺风车车主取消了会怎样)

    滴答预约顺风车取消要给钱吗(滴答预约顺风车车主取消了会怎样)

  • 小米8lite是啥手机(小米手机8 lite)

    小米8lite是啥手机(小米手机8 lite)

  • 闲鱼曝光率突然下来了(闲鱼曝光率突然很低)

    闲鱼曝光率突然下来了(闲鱼曝光率突然很低)

  • 为什么软件打不开(为什么软件打不开电脑)

    为什么软件打不开(为什么软件打不开电脑)

  • 微投票是什么(微投票是什么软件)

    微投票是什么(微投票是什么软件)

  • 静态dns是什么意思(网络静态dns地址字符怎样设置)

    静态dns是什么意思(网络静态dns地址字符怎样设置)

  • 路由器保修期是多久(路由器保修期是什么意思)

    路由器保修期是多久(路由器保修期是什么意思)

  • 奇异果vip和爱奇艺通用吗(奇异果vip和爱奇艺白金会员通用吗)

    奇异果vip和爱奇艺通用吗(奇异果vip和爱奇艺白金会员通用吗)

  • 陌陌互关多久可以语音通话(陌陌互关多久可以语音)

    陌陌互关多久可以语音通话(陌陌互关多久可以语音)

  • led灯不用镇流器行吗(led灯不用镇流器直接接12v电池上)

    led灯不用镇流器行吗(led灯不用镇流器直接接12v电池上)

  • 视频软件有哪些(去掉小内打扑克的视频软件有哪些)

    视频软件有哪些(去掉小内打扑克的视频软件有哪些)

  • 哔哩哔哩有mac版吗(哔哩哔哩mac版能缓存吗)

    哔哩哔哩有mac版吗(哔哩哔哩mac版能缓存吗)

  • 背景在什么选项卡(背景格式在哪个选项中)

    背景在什么选项卡(背景格式在哪个选项中)

  • ios13可以隐藏app吗(ios13.3怎么隐藏软件)

    ios13可以隐藏app吗(ios13.3怎么隐藏软件)

  • 手机屏怎么设置(手机屏怎么设置时间和日期)

    手机屏怎么设置(手机屏怎么设置时间和日期)

  • 2022年最强网站采集软件火车头完美破解版支持最新windows11系统和windows10系统和windows7的64位系统(网站top排行榜)

    2022年最强网站采集软件火车头完美破解版支持最新windows11系统和windows10系统和windows7的64位系统(网站top排行榜)

  • DedeCMS织梦商品详情页放大镜及图集调用(织梦产品详情页相关产品推荐调用代码)

    DedeCMS织梦商品详情页放大镜及图集调用(织梦产品详情页相关产品推荐调用代码)

  • 车辆保险费发票的会计分录
  • 受票方与付款方不一致
  • 所得税税负率是125正常吗
  • 土地增值税暂行条例实施细则 税屋
  • 驾驶员培训服务税率
  • 农产品是零税率还是免税税率
  • 先报个税还是先报增值税,有影响吗?
  • 预收和应收可以冲销吗
  • 土地租赁增值税发票税是多少
  • 购入设备发生的运输费计入什么科目
  • 私营独资企业可以变更法人吗
  • 跨月收入账务处理
  • 先预付一部分货款分录
  • 降库存的方案
  • 绿化工程上税多少
  • 营改增对建筑行业税负的影响
  • 咨询案例模板
  • 增值税发票清单怎么导出
  • 宽带合同属于什么合同
  • 卫生巾的税率
  • 申报清单怎么写
  • 货款打多了对方不愿意退款
  • 填报企业年报
  • 分包开普通发票还是增值税专用发票?
  • 分户记账
  • 股权激励取消怎么处理?
  • 出口货物国际运输流程图
  • 固定资产发现入账错误折旧如何处理?
  • 广告公司的主营业务成本包括哪些
  • win10桌面网络图标怎么调出来
  • 营收和产值的区别和联系
  • 炫龙dd3笔记本怎么样
  • acs_log是什么文件
  • php生成二维码
  • 公司招的兼职员工怎么报个税
  • win10的病毒隔离有用吗
  • php中字符串函数
  • 工程暂估收入入账的会计分录
  • le启动exe是什么意思
  • 应交增值税的会计科目怎么做
  • 系统win7旗舰版
  • 发票填开有哪些规范性要求
  • 影响当期损益的税费
  • 控制层框架
  • 建筑工程合同生效的条件有哪些?
  • 印花税减半征收优惠政策2020
  • 物流公司过户给我需要做什么
  • 2023年highway-env更新之后的使用记录(含DDQN,DuelingDQN,DDQN+OtherChanges) 入门到入土,再踩坑就不玩原神了
  • 发票取得取得售卡方公司开具的增值税专用发票
  • 抄税清卡是一个意思吗
  • 分公司在外地,企业怎么交税
  • 发票验证不过去会怎么样
  • 应计入损益的利得有什么
  • 陈列费怎么开票
  • 农产品增值税免税发票怎么抵扣
  • sqlserver无法打开备份设备
  • 初始化mysql命令
  • 办理契税所需要的证件
  • 红字发票账务处理需冲回成本吗?
  • 小规模企业缴纳公积金怎么做账
  • 营改增是从什么时候开始实施的
  • 电子发票已开出客户退款会计处理是怎样的?
  • 视同销售收入涉及税务如何做账?
  • 预付房租收到发票怎么写摘要
  • 会计怎么做的
  • 企业建账的流程是什么
  • 如何更改centos的语言
  • windows系统钥匙盘制作及启动密码的设置
  • win10操作中心设置
  • linux awk -v
  • linux定时删除2天前的文件输出日志
  • win10如何关闭windows
  • win10激活过期有什么影响吗
  • cocos环境搭建
  • dos 批处理
  • css怎么画图
  • git 删除分支和回滚的实例详解
  • python基础入门教程
  • 增值税申报表如何更正
  • 电子客票号码8768是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设