0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Ada Watch:为工作找到合适的编程语言

星星科技指导员 来源:嵌入式计算设计 作者:GREG GICCA 2022-11-01 09:31 次阅读

Ada 是一种强类型语言,是开发高可靠性程序的自然选择。一些语言,如C,擅长低级编程,但不能解决其他挑战 - 正如我之前的博客所介绍的那样。您需要为工作选择合适的工具。与其对每个问题使用一种语言或一种工具,不如为工程师提供多种选择来开发高可靠性软件——这正是 Ada 的亮点。

我们可以通过高层次的视角来说明这一点,而无需深入研究特定的语言细节和个人偏好。第一步是研究强类型语言如何避免难以检测的错误和不正确的程序操作。

Ada在高可靠性应用中的优势

Ada 的许多高可靠性软件开发功能并非 Ada 所独有,可以在各种其他(强类型)编程语言中找到。Ada的独特之处在于所有这些功能都可以在一种编程语言中找到。

Ada 是强类型。简单来说,这意味着变量、常量或对象必须在使用之前声明。但是,它也允许语言(编译器)静态检查使用此类标识符的有效性。

此设计功能的一个有趣效果是,可以将拼写错误和拼写错误检测为错误并为开发人员标记。任何人类的写作努力都会有错误,随着总写作工作量的增加,错误的数量也会增加。由于许多拼写错误对于不经意的观察者来说看起来是正确的(或者它们一开始就不会发生),让语言检测到这些是非常有价值的。

假设程序员打算将车辆位置“L”计算为实数,并将整数索引“I”用于其他目的。在 Ada 中,如果使用变量“I”而不是“L”,则它将被标记为操作的错误类型。在 C 中,索引“I”将被隐式转换(“强制转换”)为表达式中的实值,从而引入错误。像这样的简单错误可能保持隐藏,难以发现,并且对软件的预期含义有潜移默化的变化。例如,“位置”应该是程序中此时的车辆位置,但索引“I”是不相关的。

Ada 支持将程序规范与实现分离的概念。该语言支持外部程序单元可见和调用的程序规范的定义。这定义了单元或子程序的名称及其参数、类型等。该规范对使用“with”构造的调用方可见。实现或正文可能位于单独的文件中,并包含规范的完整算法实现。此单元在语义上始终对调用方不可见。因此,调用方无法更改算法的内部详细信息

这是Ada语言的一个关键特征,因为可以单独开发,测试和验证单元集合,而不必担心组合时会发生副作用。这允许以安全和可扩展的方式构建分层或组件架构。Ada 在这方面具有其他功能,但此基本概念对于开发高可靠性应用程序至关重要。具有“#Include”样式的其他语言功能在语义上将引用单元的源文本“包含”到引用/调用单元的源中。这使得所有内部详细信息对调用方可见,并允许发生意外或有目的的副作用。在小程序中,可以手动检测对这些内部细节的操纵。读者可以看到,调用方中的拼写错误可能会意外引用并更改被调用单元中的内部值(开发人员键入的“X”未在本地声明,但最终在所包含的单元中引用了“X”)。再一次,在较大的程序中,像这样的简单引用可能保持隐藏状态,难以发现,并且对软件的预期含义有隐蔽的变化。

通过结合这两个简单的功能,语言还可以检查两个标识符是否可以在表达式中一起使用。假设两个变量“A”和B“声明为:

• A 和 B 是整数类型• A 是整数,B 是颜色类型

加号(“+”)是一个子程序,具有定义数量的参数输入,具有特定类型,具有特定的返回值类型。是否有 1 “+” 1 (A+B) 的操作“+”?是否有 1“+” 蓝色 (A+B) 的操作“+”?在 C 语言的情况下,这两个表达式都可能是有效的,但它们是什么意思?在 Ada 的情况下,第一个表达式有效,但第二个表达式无效。同样,此类错误在开发生命周期的早期就被发现,在那里它们很容易被廉价地发现和纠正。

我只概述了 Ada 的一些非常基本功能的一些高级优势,因此可以在直观的层面上理解它们,为什么这些使程序更容易开发而没有错误。Ada 语言还有更多有助于开发高可靠性程序的功能,我鼓励您自己探索和测试它们。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程语言
    +关注

    关注

    9

    文章

    1878

    浏览量

    33108
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48614
收藏 人收藏

    评论

    相关推荐

    plc编程语言与c语言的联系 c语言和PLC有什么区别

    PLC编程语言与C语言的联系 PLC(可编程逻辑控制器)是一种针对自动化控制系统的特殊计算机。PLC编程
    的头像 发表于 02-05 14:21 1044次阅读

    采用3.3V单电源供电时,ADA4932能正常工作吗?

    输入信号为差分信号,幅度最大为1.8Vpp,共模电压0.9V; 使用ADA4932放大此差分信号,输出差分信号为共模信号为1.45V的,Vpp最大为2V的差分信号; 在采用3.3V单电源供电时,ADA4932能正常
    发表于 12-21 07:55

    ADA4084-1/ADA4084-2/ADA4084-4的应用介绍

    电子发烧友网站提供《ADA4084-1/ADA4084-2/ADA4084-4的应用介绍.pdf》资料免费下载
    发表于 11-27 09:56 0次下载
    <b class='flag-5'>ADA</b>4084-1/<b class='flag-5'>ADA</b>4084-2/<b class='flag-5'>ADA</b>4084-4的应用介绍

    脚本语言编程语言的区别

    脚本语言编程语言是计算机语言的两个主要分类。尽管两者都是用于编写计算机程序的工具,但它们在设计和运行方式上存在一些显著的区别。下面将详细探讨脚本
    的头像 发表于 11-22 14:33 1387次阅读

    什么是C语言?单片机有什么特点?为什么要用C语言编程

    随着技术的发展,电子产品越来越多,方便了我们的日常生活,大多数电子产品上都有单片机,而单片机是通过执行软件逻辑来实现功能的。而单片机编程合适编程语言是汇编
    的头像 发表于 11-21 10:06 715次阅读
    什么是C<b class='flag-5'>语言</b>?单片机有什么特点?为什么要用C<b class='flag-5'>语言</b><b class='flag-5'>编程</b>?

    请问哪里可以找到ADA4817的IBIS模型呢?

    大家好,请问哪里可以找到ADA4817的IBIS模型呢?
    发表于 11-17 12:11

    浅谈PLC 5种标准的编程语言

    IEC 1131-3的编程语言是IEC工作组 对世界范围的PLC厂家的编程语言合理地吸收、借鉴的基础上形成的一套针对工业控制系统的国际
    发表于 11-15 11:14 401次阅读
    浅谈PLC 5种标准的<b class='flag-5'>编程</b><b class='flag-5'>语言</b>

    ADA4961脉冲响应异常怎么解决?

    测试,波形如下图所示,发现第一个周期的响应异常:前半周振幅不足,第二周期开始就比较平稳。 如上图,黄色波形输入,绿色输出。增益控制维持不变。 问题: 1、上述响应是否正常 2、是否有更合适器件推荐? 满足脉冲响应和增益可控
    发表于 11-14 08:22

    目前流行的编程语言有哪些?如何选择

    普遍针对的是不同开发人员以及不同的开发用处,例如移动应用、游戏开发、web开发、分布式系统等。所以学习编程语言,最重要是找到最适合自己的语言,并融会贯通加以使用。
    的头像 发表于 09-21 14:45 725次阅读
    目前流行的<b class='flag-5'>编程</b><b class='flag-5'>语言</b>有哪些?如何选择

    五种支持plc编程语言有哪些

    在PLC控制系统设计中,不同型号的PLC编程软件对以上五种编程语言的支持种类是不同的,所以不但对PLC的硬件性能了解外,也要了解PLC对编程语言
    发表于 08-31 14:54 693次阅读
    五种支持plc<b class='flag-5'>编程</b>的<b class='flag-5'>语言</b>有哪些

    PLC编程语言的特点

    PLC的编程语言与一般计算机语言相比,具有明显的特点,它既不同于高级语言,也不同与一般的汇编语言,它既要满足易于编写,又要满足易于调试的要求
    的头像 发表于 07-04 17:13 587次阅读

    西门子PLC的5种标准的编程语言

    IEC 1131-3的编程语言是IEC工作组 对世界范围的PLC厂家的编程语言合理地吸收、借鉴的基础上形成的一套针对工业控制系统的国际
    发表于 06-29 16:01 4378次阅读
    西门子PLC的5种标准的<b class='flag-5'>编程</b><b class='flag-5'>语言</b>

    西门子PLC编程语言介绍

    PLC目前有5种标准的编程语言,包括图形化编程语言和文本化编程语言
    发表于 06-29 16:00 947次阅读
    西门子PLC<b class='flag-5'>编程</b><b class='flag-5'>语言</b>介绍

    基于PASCAL的高级编程语言——SCL编程语言

    根据该标准,可对用于可编程逻辑控制器的编程语言进行标准化。SCL 编程语言实现了该标准中定义的 ST
    发表于 06-20 10:20 1066次阅读
    基于PASCAL的高级<b class='flag-5'>编程</b><b class='flag-5'>语言</b>——SCL<b class='flag-5'>编程</b><b class='flag-5'>语言</b>

    嵌入式用什么语言编程?

    的通用系统开发语言,初Ada83。它支持模块化、独立编译、协处理等功能,其可靠性、可维护性、可读性都是相当好的。后来,为了更好地支持OOP(Object-Oriented Programming),对其
    发表于 05-18 10:08