航天飞机和Fortran

这篇帖子讲述了航天飞机失事可能与一个简单的Fortran编程错误有关,一个DO循环的小数点错误导致编译器误解,进而造成灾难。帖子强调了编程细节的重要性,以及在高度自动化的系统中,程序缺陷可能导致严重后果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发信人: quasar (飞贼克斯), 信区: Fortran
标  题: [转载] [合集]航天飞机和Fortran
发信站: 南京大学小百合站 (Tue Jun  1 09:50:15 2004)

【 以下文字转载自 HPC 讨论区 】
【 原文由 StArGazEr 所发表 】


StArGazEr (Wanderer-In-Heavens: Captain St.Argazer) 于Mon Jan  6 09:56:11 2003)
提到:

马上就到美国“挑战者”号航天飞机罹难17周年纪念日了,官方的失事报道是说0型密封圈失效,也许这是比较冠冕堂皇而且易被政府和大众接受的理由吧。
但是在Fortran界一直流传着这么一个说法:一个DO循环错误,葬送了“挑战者”。
一个简单浅显到不能再简单浅显的错误,肉眼很容易查出,但是在浩如烟海的源代码中肉眼不得不被编译器取代,而编译器却不能查出这个错误:
   DO 30 I = 1.1000
   ......
30 CONTINUE
上面的逗点被错误的写作小数点,编译器的隐式说明会把该句解释为:
一个实型变量DO30I被赋值为1.1000,而不是循环一千次!……
这个逗号实在太昂贵啦, 它的的价值居然是一架航天飞机和7个宇航员的生命!
同志们编程序的时候可要注意啦。


Shea (Shea) 于Wed Jan  8 15:09:57 2003)
提到:

StArGazEr不愧是A系的,对自家领域的事情知道得还真是多,今后还要向学长多多请教(
有关HPC)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值