程序员03年的.....

google就是 强一些。

评论人/二刀

外国人跟咱中国人一样,也是人上一百,形形色色:有迷编程的,有迷军事的,有迷游戏的,还有既迷编程又迷军事又迷游戏的。美国的最新战斗机F-22 “猛禽”,是军事迷们津津乐道的最先进战斗机,一架3亿美金,有优越的隐身能力,能作超音速巡航,超视距攻击不在话下,近距离缠斗也是极为出色。在著名的游戏“皇牌空战”中,F-22就是王牌战机,最后一关F-22近身格斗Su-37“金雕”,是令无数游戏迷激动的经典对局。那么F-22跟编程扯上什么关系了呢?

上个月,在著名的技术论坛slashdot.org上,有位发言者写了这么一个帖子:

最近一位匿名仁兄在一本期刊上发表了一篇文章,提到F-22即将取代美国空军中的F-15和F-16。
文章中有一句话我印象深刻: “现在航电设备突然出现了问题,驾驶员必须象重启PC一样重启整个系
统。”我在google上搜了搜,下面是我搜集的主要资料:该战机航电系统的硬件主体是休斯通用集成处
理器(Hughes Common Integrated Processor),处理器的核心是Intel i960 CPU。操作系统是什么?
我没有找到相关介绍,不过据说是由150万行Ada代码写就的。我说弟兄们,你们有没有参与过这个项目
的?怎么能允许我们的战斗机在飞行中reboot呢?

哈,这对我们中国的军迷来说不失为一个好消息。不过作为软件开发人员,这事多少有些让人尴尬。Ada号称是最安全健壮的语言,而F-22又是那么重要的一个项目,美国的军事软件开发实力勿庸置疑,居然也会出这种问题,这实在值得咱们软件开发人员深思。

从这个帖子的回复来看,很多都是在开玩笑,比如:

“哈哈,F-22的控制键盘上也有Ctrl-Alt-Del键吗?”
“当然,Ctrl键在右边的控制面板上,Alt在左边,至于Del嘛,自然就是导弹发射按钮喽。”

这个讨论在comp.lang.ada上引起了不小的反响。

Ada语言素以高可靠性著称,在1998年前是美国国防部唯一认可的军用系统开发语言,象F-15/16航电系统,波音-777控制系统,阿里亚娜火箭控制系统等重要军用软件,都是用Ada开发的。1998年之后,美国国防部允许军用系统开发商使用他们认为合适的其它语言进行开发。近年来,C/C+ +和Java等语言逐渐进入军用软件开发领域。其中影响最大的个案,是美英联合研制的JSF战斗轰炸机经招标决定用C++进行主体开发。此事当时曾经引起 Ada社群的巨大反应。除了士气遭到打击之外,他们也做出了一些“恶毒”的预言。这次F-22的“丑闻”中,Ada支持者首先怀疑出问题的部分是用C++ 写的。

“据我所知,新增代码是用C++写的,而用Ada写的部分是稳定可靠的。”

下面有另一个人一唱一和地说:

“ 什么? 我没听错吧?你敢肯定说的不是Novalogic的游戏《F22猛禽》,而是我们的F22军用战斗机?用C++来写航电系统?天啊!重启算是怎么回事?‘请按下开火键,弹射逃生键和自毁键’?简直可笑。C++不合适这种任务,至少有两个原因:一,天生的不稳定,二,C++程序员一般水平很次。C++之所以流行,原因是它已经很流行,而且比较容易找到所谓的高手。这样下去,C++的内存泄露可能会导致核战争,到那个时候屏幕上会显示‘请重启人类文明’。

一位拥有博士头衔的发贴者说:

“这件事值得我们重视。现在任何一个国家,无论它对美国是否友好,都可以从网上下载GNAT,并且可用GNAT开发出高可靠性的软件。而美国国防部却在使用C++和Java。这让我回想起历史上类似的情形。德国军队最有效地运用了Charles de Gaulle将军的坦克战术。Billy Mitchell发明了航空母舰,而证实其战争威力的却是山本五十六的日本帝国海军联合舰队。”

GNAT是ACT公司提供的高性能Ada 95开发环境,以从网上自由下载。这位老兄的联想未免太丰富,不
过也有人给他宽心,下面有一个人回复:

“不用担心。可供公开下载的那个GNAT只适合于学习演示之用,要想打败资本主义的军队,必须用ACT
支持版。”

讨论发展到这里,完全脱离轨道,一群人围绕政治问题开始了调侃,从工人阶级到十月革命,从列宁到社会主义形态,从阿波罗登月计划到航母发展史,可谓什么都说,就是跟软件无关。倒是有一个俄国人,说了几句半开玩笑的话:

“你们还没有真正领会贵国国防部的阴谋。大家想想,美国这么干了,那些潜在的敌国军队一定会仿效领先者,采用相似的技术来开发自己的航电系统软件。而他们又不可能聚集那么多的资源来进行代码评审、验证和测试,所以开发出来的系统肯定比较次,这就是美国所希望的结果。战斗机不要最好,只要更好——比敌人的好。”

莫名其妙地,一个署名似乎是中国人的网民写了一个帖子:

“中国新一代喷气式战斗机超7(以前叫做FC-1)最近在成都试飞成功,这种新型战斗机有很多先进的特征,软件就是其中之一。听说线传飞控等不少控制软件是用Ada写的。”

这样的帖子当然让我们中国程序员感到骄傲, 不过放在这个地方,恐怕并不是很合适。

Richard Riehle是著名的Ada专家,深深地参与到美国的军用软件开发工作中,实践经验丰富,心态也十分开放和公平,他指出:

“1. JSF战机已经决定主要用C++和C 开发,Ada将只用于局部系统。
2. F-22的代码中Ada占了很大比重,但也包含其它语言。
3. Ada的确更适合开发军用和民用航空系统软件,但是开发过程仍然是由易犯错误的人类执行的。良好的工具固然有帮助,但是“A fool with a tool is still a fool”。

4. JSF和F-22的软件系统复杂性远远超过之前的任何系统。在大规模复杂程序的开发中,如果按照“庄严设计”的过程来开发,结果会产生更多的缺陷,原因很大程度归咎于这种重型的设计思想本身。
5. 我相信Ada在这样的项目中较之C++更加适合。但是不可否认,如果开发者是一个经验丰富的C++程序员,能够谦虚谨慎地选择该语言中安全有效的部分,那么仍然可以做出令人满意的系统。不过我对那些开发者的自我约束能力实在没什么信心,因为该语言中‘邪恶的诱惑’实在太大了。
6. 当一个用Ada写成的系统出现问题时,我们一定要坦率地承认它确实是用Ada写的。再好的借口也还是借口。我见过用Ada写的极其出色的系统,也见过一些用Ada写得糟糕透顶的系统,按照一位神秘的陆军上校的说法,‘公羊见了都会呕吐’。
7. 最后,我坚信不移,当其它一切条件相似时,使用Ada的团队比使用C++或其它任何语言的团队都更有可能获得成功。”

Ada社群在军用项目中的地位,正在越来越多地受到C++的挑战,为此他们认为这是无知的管理者脑子里的“悬挂指针”引起的错误。但是事实上,军用系统开发走向多语言并存的大趋势是不可逆转的。2001年,在美军的参与下,Real-Time Java规范已经通过。我相信不久的将来,Ada/C/C++/Java会有机会在同一个舞台上互相比试。

但是Richard Riehle说的对,决定性的因素还是我们开发者自己。我们中国程序员所有单项能力中最薄弱的就是对软件可靠性、稳定性的保证能力。实际上中国程序员的创新精神、钻研精神是非常突出的,我们经常可以看到一些构思精巧、界面美观、功能独到的国产应用程序。但是在系统可靠性这种需要扎实功底、严谨作风的地方,我们的表现相当不令人满意。在国内大部分公司,检查和排除软件质量缺陷的唯一办法就是debug,完全没有规范化程序设计和质量保证体系的观念和实践。

提高我们的质量意识,提高我们软件的可靠性,这已经是一个当务之急。正如我们在这次讨论中看到的,这不仅仅关系到你是否可以尽早地拥有一间自己的房子,还关系到你是否可以在这间房子里安安稳稳地睡觉而不用担心被急促的电话吵醒,还可能关系到你以及其它千千万万人的住房是否能够安全存在,而不会随着一声巨响被蘑菇云从地球上抹去。

美国战机F-22空中宕机迷思相关推荐

  1. Comcast在美国境内遭遇大面积宕机和连接中断问题

    美国有线电视.宽带服务提供商康卡斯特(Comcast)在美国境内遭遇了大面积宕机情况,其中旧金山和纽约受影响最为严重.本次宕机是突发性的,且主要集中在大城市.问题是在北京时间16日凌晨0点开始出现的, ...

  2. 经常宕机的RAC系统 -排查案例

     第4章 经常宕机的RAC系统 4.1  3月2日 上海的紧急故障 今天晚上上海的雷总突然打电话过来,说有件事需要我们帮下忙.我问他是什么事,他说是一个客户的系统宕机的问题,最好能够尽快过来一下. ...

  3. DBA日记:上海的RAC宕机

    --转自网络,很好的一个案例供大家细品! 今天晚上上海的雷总突然打电话过来,说有件事需要我们帮下忙.我问他是什么事,他说是一个客户的系统宕机的问题,最好能够尽快过来一下.我说没问题,明天一早就派工程师 ...

  4. DBA日记 上海的RAC宕机(转自网络)

    今天晚上上海的雷总突然打电话过来,说有件事需要我们帮下忙.我问他是什么事,他说是一个客户的系统宕机的问题,最好能够尽快过来一下.我说没问题,明天一早就派工程师过去.老雷一听就急了,老白不是我不信任你的 ...

  5. 2015数据中心宕机20%是由DDoS攻击引起

    由Ponemon Institute进行一个双年度的研究报告显示,和2010年相比,2013年数据中心停机成本已经上涨相比.报告包括来自美国各地的63个数据中心具有代表性的样本数据.研究表明,数据中心 ...

  6. 十一资讯 | 字节跳动进军汽车云;Twitch被黑;Facebook宕机;Netfilx收购游戏公司……...

    点击上方"LiveVideoStack"关注我们 谷歌加大对非洲的投资 美国科技巨头谷歌正在向非洲大陆投资 10 亿美元,以帮助加速其数字化转型,其中 5000 万美元投资于当地的 ...

  7. jvm 宕机 打印jvm_通过入侵JVM打印阵列

    jvm 宕机 打印jvm 总览 Java中最常见的陷阱之一就是知道如何打印数组. 如果有关如何打印阵列的答案获得了超过1000票赞成票,那么您必须怀疑是否有更简单的方法. 几乎所有其他流行语言都具有这 ...

  8. 从谷歌宕机事件认识互联网工作原理

    摘要:谷歌服务器经历了短暂的宕机事件,持续大概27分钟,对部分地区的互联网用户造成了影响.此次事件的原因深究起来需要进入互联网络那深邃的.黑暗的角落. 译者注:本文中提到CloudFlare是一家总部 ...

  9. 走捷径修Bug却引起全球大宕机,Salesforce哭着处理了“肇事”工程师

    编译 | 核子可乐.Tina 日前,因某位维护工程师的错误操作,Salesforce 惹上了意外的大麻烦. 几天前,Salesforce 遭遇了一次长达 5 个小时的全球宕机.向外宣布 5 个小时的宕 ...

最新文章

  1. 用vue-cli脚手架搭建一个仿网易云音乐的全家桶vue项目
  2. python开发安卓程序-如何使用python开发Android手机应用?
  3. 力扣3. 无重复字符的最长子串 two pointer算法|滑动窗口|尺取法
  4. 自然语言处理的未来之路(周明老师,CCF-GRIR,笔记)
  5. php 调用日历控制,基于ThinkPHP实现的日历功能实例详解
  6. python下载文件传到服务器_python实现FTP文件传输(服务器端和客户端)
  7. Android中解析XML的方法
  8. python 使用函数参数注解
  9. 永远感谢雷神-雷霄骅!
  10. 使用微软官方工具制作Windows系统启动U盘
  11. 南阳oj 215 Sum
  12. iphone通讯录的备份与恢复
  13. 用JSP创建一个表格模板 .
  14. 卷积神经网络的训练过程
  15. DELLR420配置RAID
  16. 中文实时语音识别引擎
  17. Tapestry3.0开发概论
  18. 地震提前预警作用有多大
  19. python制作词典软件_AlphaDict: 它是一个轻量级的开放词典格式的开源词典软件,你可以制作自己的词典, 也是一个跨平台的软件支持 linux, unix and windows....
  20. [实训题目EmoProfo]基于深度学习的表情识别服务搭建(一)

热门文章

  1. 每周一篇 文献阅读—paper 5
  2. 小学计算机课教案模板,小学计算机备课教案模板.doc
  3. 使用 data-* 属性来嵌入自定义数据:
  4. 校园介绍网页10多个页面
  5. 智慧养老平台建设方案word
  6. 云计算 docker的安装及简单使用
  7. IE调用WebBrowser控件实现WEB打印、分页打印、无预览打印
  8. 我肾都卖了就给我这样的iPhone X ,手机工艺竟由富士康决定?
  9. MERRA2数据下载与后续处理
  10. java sscanf_【转】sscanf函数用法实例