问题描述
几个星期前有一个关于C语言的讨论
死,据我所知,Tisdale先生是NASA的一名员工,
参与告诉我们他正在等待C程序员
死掉。
我最近开始浏览MER分析师笔记本
(。 MER代表火星勘探
罗孚,美国宇航局派往火星的两艘宇宙飞船。
在活动日志中我们找到如下行:
232命令2004-114T16:32:45.289 136010002.844
2004-115T05:32:15.245 88025
RUN_SEQ已完成,状态= 0。
来自引擎2的顺序命令编号3;序列号s0881,
版本0(seq_engine.c:3482)
^^^^^^^^^^^^^^^^^
是,seq_engine.c Tisdale先生。
在其他报告中我们发现:
fme_class.c:3002 mrf_class.c:2724 cmd_dispatch.c:269
seq_controller.c:902 init.c:646
sapp_nate_mode_commander.c:274
vsbm_activities.c:247 sapp_iit.c:321
dwn_sbd.c:799 uhft.c:936 cbm_window.c:1410
use_measurement_set.c:464 fme_class.c:3012
整个软件太空船在C中。
有充分的理由,Tisdale先生。
There was a discussion some weeks ago about the C language
being "dead", where Mr Tisdale, as far as I know a NASA employee,
participated telling us that he is waiting for C programmers
to die off.
I have recently started to browse through the "MER analyst notebook"
(http://anserver1.eprsl.wustl.edu/). MER stands for Mars Exploration
Rover, the two spaceships that NASA sent to Mars.
In the logs of the activity we find lines like:
232 command 2004-114T16:32:45.289 136010002.844
2004-115T05:32:15.245 88025
RUN_SEQ completed with status = 0.
Sequenced Command Number 3 from Engine 2; Sequence ID s0881,
version 0 (seq_engine.c:3482)
^^^^^^^^^^^^^^^^^
Yes, "seq_engine.c" Mr Tisdale.
In other reports we find:
fme_class.c:3002 mrf_class.c:2724 cmd_dispatch.c:269
seq_controller.c:902 init.c:646
sapp_nate_mode_commander.c:274
vsbm_activities.c:247 sapp_iit.c:321
dwn_sbd.c:799 uhft.c:936 cbm_window.c:1410
use_measurement_set.c:464 fme_class.c:3012
The whole software of the spaceships is in C.
And for good reasons, Mr Tisdale.
推荐答案
NASA就像军队一样,非常昂贵耗时测试
并批准使用的语言,因为所需的高完整性。我没有惊讶他们有一个保守的政策要改变。
我一直记得经典的FORTRAN系列让他们花费了航海家的空间
火星任务当有一条线说: -
FOR I = 1.4
它本应该读的: -
FOR I = 1,4
并且编译器未能将其作为警告或错误提取。
昂贵的期间那个!
NASA is like the military, it is very expensive and time consuming to test
and approve a language for use due to the high integrity required. I am
not surprized they have a conservative policy to change.
I always remember the classic FORTRAN line that cost them the voyager space
mission to mars when there was a line which said :-
FOR I=1.4
when it should have read :-
FOR I=1,4
and the compiler failed to pick it up as a warning or error.
an expensive "period" that !
NASA就像军队一样,它是由于所需的高完整性,测试
和批准使用语言非常昂贵且耗时。我并不惊讶他们有一个保守的改变政策。
我一直记得经典的FORTRAN系列让他们花费航海家空间对火星的任务当有一条线说: -
FOR I = 1.4
当它应该读: -
FOR I = 1,4
,编译器未能将其作为警告或错误提取。
昂贵的期间那个!
NASA is like the military, it is very expensive and time consuming to test
and approve a language for use due to the high integrity required. I am
not surprized they have a conservative policy to change. I always remember the classic FORTRAN line that cost them the voyager space
mission to mars when there was a line which said :- FOR I=1.4 when it should have read :- FOR I=1,4 and the compiler failed to pick it up as a warning or error. an expensive "period" that !
如果我没记错的话,那里的那一行将浮动的
点值1.4分配给一个名为FOR的变量I" (没有引号)。
而应该在那里的行就像C for循环
for(I = 1; I< = 4; I ++)。
相当奇怪的语言,Fortran ...
-
/ - Joona Palaste(pa *** **@cc.helsinki.fi)-------------芬兰-------- \
\ ------- -------------------------------------------------规则! -------- /
"''所谓的''意味着'''这有很长的解释,但我没有
时间在这里解释一下。''"
- JIPsoft
If I remember this right, the line that was there assigned the floating
point value 1.4 to a variable named "FOR I" (without the quotes).
Whereas the line that should have been there was like the C for loop
for (I=1; I<=4; I++) .
Quite a strange language, that Fortran...
--
/-- Joona Palaste (pa*****@cc.helsinki.fi) ------------- Finland --------\
\-------------------------------------------------------- rules! --------/
"''So called'' means: ''There is a long explanation for this, but I have no
time to explain it here.''"
- JIPsoft
NASA是与军队一样,由于所需的高完整性,测试
和批准使用语言是非常昂贵和耗时的。我并不感到惊讶,他们有一个保守的改变政策。
我一直记得经典的FORTRAN系列,这使他们成为航海家的空间。说: -
FOR I = 1.4
什么时候应该读: -
FOR I = 1,4
昂贵的期间。那个!
NASA is like the military, it is very expensive and time consuming to test
and approve a language for use due to the high integrity required. I am
not surprized they have a conservative policy to change.
I always remember the classic FORTRAN line that cost them the voyager space
mission to mars when there was a line which said :-
FOR I=1.4
when it should have read :-
FOR I=1,4
and the compiler failed to pick it up as a warning or error.
an expensive "period" that !
< OT>
错误的语法,错误的错误,错误的航天器,错误的星球。除了
之外,它基本上是正确的。
有问题的Fortran bug涉及DO循环。正确的语法是:
DO 10 I = 1,10
一个错字如:
DO 10 I = 1.10
被解析为赋值声明:
DO10I = 1.10
传说这个错误导致失去了Mariner探测器。事实上,由于手写的指导方程中的错误,Mariner I Venus探测器丢失了。在Project Mercury上,DO10I错误确实出现在大约
;在它导致
出现任何实际问题之前,它已得到纠正。
详情请参阅alt.folklore.computers常见问题解答
< http://members.chello.at/theodor.lauppert/computer/afc-faq.htm> ;;
见问题III.1。
< / OT>
-
Keith Thompson(The_Other_Keith)< http://www.ghoti.net/~kst>
圣地亚哥超级计算机中心< *> < http://users.sdsc.edu/~kst>
我们必须做点什么。这是事情。因此,我们必须这样做。
<OT>
Wrong syntax, wrong bug, wrong spacecraft, wrong planet. Apart from
that, it''s essentially correct.
The Fortran bug in question involves a DO loop. The correct syntax is:
DO 10 I = 1,10
A typo like:
DO 10 I = 1.10
is parsed as an assignment statement:
DO10I = 1.10
The legend is that this bug caused the loss of a Mariner probe. In
fact, the Mariner I Venus probe was lost due to an error in a
hand-written guidance equation. The DO10I bug did show up at about
the same time on Project Mercury; it was corrected before it caused
any real problems.
The details are in the alt.folklore.computers FAQ at
<http://members.chello.at/theodor.lauppert/computer/afc-faq.htm>;
see question III.1.
</OT>
--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <*> <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
这篇关于火星上的C语言的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!