`
helloyesyes
  • 浏览: 1305669 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

工程传奇——会飞的猪

阅读更多
空军之翼网站上有一篇文章叫给猪装上翅膀。标题党的厉害,实际上内容是很严肃的,讲的是隐形飞机的里里外外。第一代的隐形飞机是F-117 Nighthawk,的确是很雷人。很难想象,这副样子的东西,居然还能飞起来,还能打仗。从某种程度讲,它长得真有几分像一头猪,还长着翅膀。
f-117的身世还极具传奇色彩。研制的时候它的保密工作做到了家,造谣、掩盖、烟幕弹,都干过,甚至还出了款玩具欺骗大众,把地球人忽悠了十多年。废话少说,回到主题。F-117项目差不多开始于1975年,也是Skunk Works的 杰作。美国人在越战后想造一种能够躲过雷达侦测的战斗机。但是限于当时的计算能力,无法计算曲面的雷达反射特性,更不说复杂曲面和曲面的组合了。如果做模 型挨个试,纯粹大海捞针,况且雷达波反射测试费用不菲,不能像F-104那样用点战争剩余物资就能摆平的。结果洛马的工程师们做了很geeky的设计—— 用平面造飞机。既然平面的电磁反射特征是可以计算的,那么把各种不同形状的平面拼接起来,就有可能造出一架雷达难以探测的飞机。Skunk Works很快做出了一个模型, 并且验证了其隐身特性。那么这样的飞机能飞吗?很显然,它飞起来了。非但飞起来了,还正式服役到今年(今年8月份最后一架夜鹰退役)。在入侵巴拿马的作战 行动中扔下了第一枚,参与了海湾战争,空袭伊拉克,并在科索沃被击落一架。为了不被侦测到,F-117事实上付出了巨大的代价。不能超音速,不能做剧 烈机动,没有雷达,只能带两枚2000lb的。一旦被发现,打不了,也跑不了。
但是,作为第一种全面隐身的战斗机(实际上是攻击机,拿战斗机的名头糊弄人呢),F-117是相当成功的。最关键的,它达到了根本的目标——隐形战斗机。 首先,它能飞,而且飞的还不错。其次,能够战斗,它可以扔,尽管只有两枚。最后,它隐形了,雷达难以侦测。F-117的设计基于这样一个核心逻辑:无 论你多么强悍,如果看不见对手,一个小毛孩子拿着吉利刀片也能要你的命。只要达到隐形这个目标,即便有不佳的飞行性能和很少的载弹量,也足以发挥关键性的 作用。因而,F-117被用于针对关键目标的关键任务,就好比用剃刀割对手的颈动脉那样,一击致命。
从工程角度来讲,Skunk Works的工程师们主动地简化设计,降低目标要求。他们在当时技术条件的制约下,不追求完美的解决方案,把目标集中在关键性的特性(隐形)上。在其他方 面,主动放弃次要目标。这是典型的:make it run first。我们在设计软件时,有时会陷入最求完美的困境。要求更多的灵活性、适应性、扩展性、性能等等。最终,迷失在特性的海洋里。我们时常被告诫,先 实现80%的功能。而这80%的功能,通常都集中在20%的特性上。

假设我们需要开发一个基于web的查询平台,具体查询的内容和算法会随着客户的变化和需求的变化而变动,有时还会有现场快速实现的需求。同时所查询的数据 的结构具有动态的特征,有些数据的结构在运行时方能确定。基于这些要求,我们不能把查询写死在代码里,需要脚本化。又因为是web的应用,那么如果能够从 数据库中获得数据,直接转换成html片段插入页面,那么系统就会很容易实现和变化。实现这个任务最理想的做法是使用xml db之类的数据库,利用xslt或者xquery直接在数据上查询。但是,目前xml db并不成熟,性能也不如rdms。现在,我们有两种选择:开发成熟的,性能优良的xmldb;或者仍旧使用rdms,但利用一些辅助工具。很显然,前者 是愚蠢的行为。
最初,我们可以手工地写sql语句,然后把结果集组织成层次化的结构,提取出xml,再用xslt或者xquery处理,获得html。更好一些的方法, 利用现成的数据转换模块,诸如.net的DataSet,进行结果集组织和xml提取。这种设计所需的东西就在手边,可以很快实现。它的不足之处在于,必 须提取出所有的结果集数据,然后才能转换成完整的xml,在处理大数据量时,会有性能问题。做到这一步,我们可以分析一下,是否还需要更进一步地深入开发,增加功能。
首 先,这个方案是否容易变化。在这个方案中,实现查询的是一个sql命令和一个xslt stylesheet。前者用于从rdms中提取数据,并组织成xml结构。而后者则负责构造html,并处理一些在sql中实现困难的查询。两者都是用 于数据处理的DSL,相比通用语言,执行查询任务更加简洁方便。两者都可以组织在一个脚本文件中,都是文本,可以方便修改。
其次,是否能够现场快速实现需求变化。sql和stylesheet都可以脚本化,可以直接修改运行,无需编译,和ide的支持。
再次,能否处理运行时的数据结构变化。sql只能依赖固定的数据结构,这是在design time已经确定的东西。但是当sql查询获得的结果集转换为xml后,就成为半结构化数据,可以拥有动态的数据构造。而xslt则具备在这种构造上查询数据的能力。
最 后,再来看看性能问题。对于一般应用,查询获得的数据量不会,也不应当太多。对于人而言,成千上万条数据放在面前,也是无法处理的。所以,一般情况下,一 次查询返回的数据不超过3、5百条,大约30KB以内。这些数据量,转换成xml,然后再执行xslt转换,在普通的PIV 3.0/1G内存的系统上,0.1秒以内肯定可以完成。这点时间对于用户而言完全可以接受。更何况系统运行在web服务器上,执行时间会有数量级的提升。
但是,终究会有不少查询需要处理大量的数据。这 些查询中可以进一步分类。其中比较多出现的,是简单结果集,也就是一个sql查询获得的结果集就是用户需要的结果。这些结果集没有层次结构,完全就是一个 table。这样的查询,可以先分段,比如100条数据一段,把一段数据转换成xml,然后执行xslt,结果传送到客户端显示,然后再处理下一段。这 样,用户就不必等待数据全部提取并处理完成,几乎立刻就能看到数据,而后续数据,则利用用户阅读第一批数据的时间进行处理。这种分段处理机制可以很容易地 加入查询平台,无需很大的工作量。
至此,大部分的查询需求(差不多就有80%了吧)都得到覆盖。至于那些大数据量的有层次结构的数据,或者无法分段处理的数据,或者无法固定分段处理的数据,可以不做考虑。一旦用户需要,定制专门的模块处理。

F-117并不是“飞猪”故事的终结,而是开始。随着技术的发展,工程师们拥有了处理简单曲面的计算能力。于是,立刻将其运用到飞机上,B-2 Spirit诞 生了。无论如何,B-2看起来更像一架正常的飞机了,尽管它也不是一种常规的飞机。仅从数据上看,B-2强大的令人发指,最大起飞重量170吨,航程 11000km,载弹量22.7吨,可以携带几乎所有的美军现役,最新的改进,使得它能够同时扔下80枚,打击80个不同的目标。相对于F- 117,这已经是质的飞跃了。而尽管其身躯庞大,但隐身能力则比F-117更进一步。这也就是关键技术突破带来的必然结果。不过,B-2还不够,80年代后期开始,it技术的发展使得人们拥有了处理复杂曲面的计算能力。于是,美国人不惜血本地研发了终极战机——F-22 Raptor。F-22的能力只需一个数字便可说明:在美军组织的F-22vsF-15/16演习中,F-22取得了114:1的战绩。
这 三代隐形战机的成功故事再一次强调了工程中的一个经典实践:make it run first。在最初阶段,着力实现最关键,最核心的功能,而这些功能足以满足多数的应用需求。而其他方面的需求则暂时加以回避,或通过传统手段实现。随着 技术的发展和进步,那些外围功能的技术条件逐步成熟,相应的功能也会自然而然地得到实现。

随着xml及其相关技术的大规模应用,各大传统rdms厂商也逐步地在各自的数据库中引入xml相关的技术。比如xml/sql,for xml子句等等。这些技术可以使得我们直接在sql语句中将结果集构造成有层次结构的xml文档。利用这些技术,大数据量却拥有层次结构的结果集,以及无 法固定分段的结果集,都可以进行分段处理。在这些技术的作用下,真正无法在这个查询系统中实现的查询,变得很稀少了。此时,我们也可以近似地认为这个查询 系统可以满足所有面临的应用,而不必耗费更多的精力来实现剩下的这些千年一遇的需求了。

不过,在运用这种工程方法的时候,有一个先决条件:必须正确地识别关键目标特性。如果我们在查询系统的案例中,一开始把大数据量处理能力作为关键目标特 性,那么很显然,不会采用这样的设计,从而偏离真正的目标。对于关键目标特性的识别,可以通过考察需求,寻找那些满足最多需求的特性,加以排序分析。
分享到:
评论

相关推荐

    记事本 高级版 会飞的猪

    可实现基本功能 包括新建 打开 保存 页面设计 打印 复制 剪切 粘贴等

    2021初赛反应器赛前练习工程.zip

    《2021初赛反应器赛前练习工程——西门子杯智能制造探索》 在当前全球制造业转型的大背景下,智能制造已经成为推动产业升级的关键力量。"西门子杯"作为一项备受瞩目的赛事,旨在培养和选拔具备创新能力和实践技能的...

    CIMC离散行业运动控制-全国总决赛.pdf

    中国智能制造挑战赛是一项旨在推动智能制造技术和人才的发展,通过比赛形式对参赛者在智能制造相关领域的工程设计与应用能力进行检验。该赛事往往涵盖不同的技术方向,例如离散行业运动控制,是当前工业自动化的热点...

    CIMC流程行业自动化

    6. **智能制造工程设计**:"智能制造工程设计与应用类赛项-流程行业自动化方向-样题-本科组6375202195932286926152967.pdf"提供了智能制造工程设计的实际案例,对于学习者来说,这是一个宝贵的实践资源,可以提升...

    chromedriver2.33_win64

    【描述】"selenium与webdriver所用到的最新版Chrome浏览器驱动" 指的是Selenium自动化测试框架中的一个重要组件——ChromeDriver。Selenium是一个强大的开源工具,用于自动化Web浏览器,而WebDriver是一种接口,允许...

    sliver5.5与sliver6.0.zip

    本次我们关注的是名为“sliver”的两个重要版本——sliver5.5与sliver6.0。这两个版本因其在功能、性能以及用户界面等方面的显著改进,受到了广泛关注。 sliver5.5,作为sliver系列的一个里程碑,它在5.0的基础上...

    有佳完成端口网络通信系统

    另外,连同组件一起的还有两个DEMO VC工程,演示了ICompleteServer<->IBaseSession以及 IPacketServer<->IPacketSession的使用方法,同时提供了C++格式的接口文档提供开发人员使用,以及关于组件功能描述的DOC文档...

    最全51元件库,下载安装即可使用

    标题中的“最全51元件库,下载安装即可使用”表明这是一个针对51单片机用户的资源集合,其中包含了各种元器件模型,方便用户在进行51单片机的电路设计时使用。51单片机是微控制器领域非常基础且广泛使用的一种型号,...

    程序和软硬件设计软件.rar

    在电子竞赛和课程设计中,程序和软硬件设计软件扮演着至关重要的角色。这些工具能够帮助开发者实现创新的解决方案,提高工作效率,并使项目更具可行性。本文将深入探讨这些软件的相关知识点,以帮助初学者和专业人士...

    过程控制系统 (王树青 著)课后习题答案

    在自动控制系统中,控制系统主要由被控对象、测量变送器、执行器(如控制阀)和控制器构成。被控对象通常是需要控制的生产设备或装置,测量变送器用于测量被控变量,并将其转换为标准信号。执行器则是接收来自控制器...

    暗黑风格-图解网络-小林coding-v2.0.pdf

    它是一种用于分布式、协作式和超媒体信息系统的应用层协议。... ... ...当我们在网络上浏览网页时,浏览器作为客户端发起请求,而网页服务器则作为服务器端进行响应。...协议一词在日常生活中并不陌生,例如签订的租房合同。...

    相当于svn工具

    git这个软件很好用!用起来很方便!真心不错!好用!

    将excel一行分成多行

    将excel 一行分成多行

    InputFilter

    在Android开发中,`EditText` 是一个非常常用的组件,它允许用户输入文本并进行相应的交互。然而,有时候我们可能需要对用户的输入进行特定的限制,比如限制输入小数点后的位数。在这种情况下,我们可以创建自定义的...

    VC++6.0助手.zip

    vc++的番茄助手,亲测有用!!!直接就是破解版 什么都不用干 解压就好

    chromedriver2.33

    ChromeDriver是用于自动化测试Google Chrome浏览器的一个关键工具,它是由Selenium WebDriver接口支持的。Selenium WebDriver是一个开源的API,允许开发者编写脚本控制多种浏览器的行为,进行网页应用的自动化测试。...

    IOS13 真机调试包.zip

    包含最新IOS系统的 IOS 13.0, IOS 13.1, IOS 13.2 真机调试包,拷贝到 /应用程序/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/ 目录下,重启Xcode即可使用

    python获取验证码

    python+selenium自动获取验证码,可实现自动登录功能!

    checkm8-a5 和 libraries.zip

    该压缩包包含checkm8-a5和libraries,其中libraries中的USB_Host_Shield_2.0文件已经修改(因为资源库是没有修改过,上传数据会编译失败,如果你不是绕ID,那请不要下载)。当然还需要配合arduino软件来使用,如果你...

Global site tag (gtag.js) - Google Analytics