发信人: 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)。
标 题: [转载] [合集]航天飞机和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)。