世界上最完美的两个软件是什么(世界上最完美的两个软件叫什么)

作者:电脑培训网 2024-04-23 04:51:53 656

世界上最完美的两个软件,太神奇了!今天给大家介绍两款软件。一种体现了人类软件开发过程的极致,另一种则体现了程序员个人能力的巅峰。

01

世界上最完美的两个软件是什么(世界上最完美的两个软件叫什么)

航天飞机飞行控制软件

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

航天飞机重120吨,携带2000吨燃料。

它有四台具有相同硬件和相同软件的计算机,可以精确控制发射过程,从数千个传感器中提取信息,每秒做出数百个决策,并对每个决策进行投票。

第五台计算机运行不同的软件,处于待命状态,准备替换其他出现故障的计算机。

这些计算机决定何时点燃主发动机,何时命令固体火箭助推器点火,并控制火箭的姿态……

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

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

洛克希德·马丁公司的航天飞机团队实现了其目标:该软件几乎没有错误且近乎完美。

该软件的最后三个版本各只有一个错误。

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

这样的软件是如何制作的呢?

答案是要求极高的软件流程。

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

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

这个过程使他们能够过上正常的生活,按时完成任务,并交付兑现承诺的软件。

这个过程包括几个关键点:

1、软件的质量取决于软件的规划

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

即使是最小的细节也能达成一致。不是口头上达成一致,而是书面化、文件化、规范化,非常专业、精准。

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

如果没有明确定义的规范,程序员将不会更改一行代码。

例如,允许航天飞机使用GPS导航。此次改动仅涉及6366行代码,占程序总量的1.5%。然而,相关文档长达2500页,涵盖了各种条件和分支,几乎都是伪代码。

至于航天飞机系统软件,总共文档有30卷,4万页!

2.两个百科全书数据库

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

代码发生的一切都记录在这里,每一行代码的“祖传”都可以立即提供给大家。

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

每个错误都被记录下来,当它被发现时,谁发现了它,当时正在进行什么活动,错误是如何引入的,为什么它逃脱了设计阶段,开发阶段,测试阶段的严格审查。

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

如果开发人员和测试人员发现的错误太少,每个人都会重复这个过程,努力将现实与预测相匹配。

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

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

规划阶段没有发现的bug如何逃过检查?是不是检查流程有问题?我应该在清单中添加检查吗?

重要的是不要将错误归咎于个人。该流程必须承担责任——启动分析流程以发现错误的原因。

航天飞机软件开发团队的流程非常强大,不仅通过了SEICMM5认证,而且SEI的很多标准都来自于这个团队的各种实践。

洛克希德·马丁公司开发出了近乎完美的软件,人们一定会想到一个问题:这种开发方法会扼杀创造力吗?

他们的回答是:可以,因为每个人都必须按照手册规定的程序进行,并且总有人在幕后监督。

人们必须利用他们的创造力来改变流程,而不是软件。

02

排版软件TEX

经典力作《计算机程序设计的艺术》在程序员界无人不知无人不晓。

1973年,这本书刚刚出版了第三卷,就已经被计算机界视为“杰作”。1974年,美国计算机学会“迫不及待”颁发了计算机行业最高奖项图灵奖。高德纳.

此时Knuth才36岁!仅用一套未完成的书就获得了ACM图灵奖,这不仅是史无前例的,而且可能也是史无前例的。

然而,令人惊讶的是,在获得图灵奖后,高德纳宣布暂停写作。原因原来是现有的电脑排版系统太差,破坏了书的美感!随后他一手开发了革命性的排版系统TEX。TEX仍然是全球学术排版的最佳选择。

TEX功能强大,几乎无可挑剔,而且它的版本号也很有趣。它不是数字或年份,而是接近的圆周率,这从侧面反映了该软件是几乎完美,不需要改进。

Knuth曾说过,“最后一次升级将把版本号更改为,此时任何剩余的漏洞都将被视为程序的功能!

有趣的是,科纳德还为此设置了奖金。谁能找到TEX中的第一个bug,将获得奖励2.56美元,之后每年翻倍,5.12、10.24……

作为算法大师,不可能不知道指数增长的恐怖,但Knuth对自己的代码质量非常有信心。事实上,奖金达到327.68美元后,基本上没有报告任何错误。

发现bug的人收到Knuth签名的支票后并没有兑换,而是把它当作宝藏:-)

Gartner的编程能力可以说碾压硅谷所有程序员。面向对象的发明者AlanKay是这样说的:

20世纪60年代末,当我在斯坦福大学做AI项目时,每年感恩节我们都会和硅谷的编程大师们一起举办编程比赛。麦卡锡提出了这个问题,奖品是火鸡之类的东西。

高德纳参加的那一年,他折磨了我们所有人。他的代码无论是程序执行还是算法执行都是最快的,而他使用的批处理机器却是最慢的!

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

他说:“当我学习编程时,如果每天有五分钟使用机器,我会很高兴,所以我必须让程序第一次运行成功,没有错误,而且算法设计应该是最优的”。

相关推荐

热门推荐

猜你喜欢