除了安全关键软件外,Ada语言还被用在哪些领域?

30

当人们谈到Ada语言时,通常会想到航空电子。

我对Ada的其他应用非常感兴趣。它在哪些领域被使用?是否有任何已经发布的使用Ada编写的应用程序?

例如,是否有使用Ada编写的增删改查应用程序或游戏等?

9个回答

35

Michael Feldman积极维护一个“谁在使用Ada/实际项目”清单,列出了各种类型的军事和商业项目。由于他保护贡献者的机密性,一些公司赞助的“Ada Inside”项目也会出现在这个清单上,否则这些项目是不会被讨论的。


20
除了安全关键系统外,只有在您有许多团队参与的大型项目中,且逻辑源代码行数超过约1或2百万行时,Ada才真正发挥其优势。
当您需要在几百万行代码中解决错误时,运行时检查非常有用,即使您认为这些检查有点啰嗦并且增加了过多的代码大小。 运行时检查可以帮助更早地检测问题,并将其更接近于出现问题的位置。
不幸的是,许多曾经使用Ada 83或Ada 95进行专业开发的软件开发人员无法告诉您他们曾经工作过的项目。我听说它也被用于空管系统(在各个国家),铁路交通系统(如巴黎地铁和香港地铁)以及银行/金融领域(如路透社和其他机构)。
它是一种非常好的语言,有人主张使用它,因为它是一种好的语言,但有时,当您数月甚至数年没有见到分段错误或非常严重的崩溃时,您会开始想要再次使用C++编码...

14

它起源于美国国防部的首选语言,因此您会在整个国防部程序中找到它。NASA和FAA也是大型用户。由于这个基础,许多商业航空航天也使用它(虽然这可能是“安全关键”)。例如,我认为波音777的大部分软件都是用Ada开发的。我认为欧洲航天局也经常使用它。

尽管如此,它的使用量还远远不够。例如,它几乎天生对缓冲区溢出攻击具有免疫性,因此应该成为操作系统开发的首选语言。


9

Ada最初被构想为一种语言,用于整合用于构建美国军事系统的大量语言。因此,您会发现它在防御系统领域的应用中经常使用。例如,可以查看Tokeneer案例研究,其源代码现在可在线获取


是的,没错。我想我表述得不够具体(或者说不够普遍,随你便吧);) - TraumaPony

5

并非数量上的问题。在GNAT出现之前,Ada编译器和开发工具非常昂贵,并且通常只支持像Suns、Vaxen或IBM大型机这样昂贵的硬件。

虽然有一些这方面的应用 - 各种组织都会使用SPARK进行安全关键性的工作,但它往往是定制化的工作(虽然不是完全如此)。


5

我不能确定,但是通过阅读大量关于Ada的资料,我认为它非常适合所有与物理相关的计算和自动化任务,因为它具有编译时和运行时检查的功能(其中一个美妙之处是你可以创建两种不兼容的浮点类型,例如长度和质量)。


2
绝对正确。然而,就在10年前甚至现在也可能如此,物理本科生仍在学习FORTRAN 77。然后当数学本科生抱怨不得不学习FORTRAN时我们嘲笑他们。 - Nelson
9
我所在的工作领域(飞行模拟产业)仍在编写新的Fortran代码。仅仅因为一种语言不用于制作大量的Web服务器并不意味着它已经“死亡”。 - T.E.D.
1
我不同意; 在计算科学领域中,通常需要不断改进代码以测试新的想法。这就是为什么Python与Numpy/Scipy变得越来越流行的原因。Ada更适用于具有稳定规格的程序。 - syockit
@syockit -- 请问...你为什么说"Ada更适合具有稳定规格的程序" -- 是因为它脆弱、不灵活或笨重吗?语法太多?太啰嗦了吗?(在你看来)你凭什么做出这样的说法?请告诉我们。(我正在调查Ada,目前持中立态度,尽管我喜欢设计按合同进行,它具有先决条件和后置条件,并且认为它们对于第一次构建更正确的软件非常重要。我听说过多个由于Ada而顺利进行的迁移故事。听起来不错!) - MicroservicesOnDDD

2
该项目提供对OpenAPI生成器的支持,用于在Ada中生成CRUD和REST API。Swagger-ada项目链接为swagger-ada,OpenAPI Generator链接为OpenAPI Generator
Alire是Ada的软件包管理器,提供各种库以供嵌入式系统到桌面应用程序使用。虽然这些只是库而不是应用程序本身,但它们展示了在各个领域中的应用。链接为Alire

1

Ada在庞大、遗留的政府定向程序中仍然很受欢迎。它也是VHDL的基础。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接