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 语言还有更多有助于开发高可靠性程序的功能,我鼓励您自己探索和测试它们。

审核编辑:郭婷

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

    关注

    10

    文章

    1959

    浏览量

    38884
  • 编译器
    +关注

    关注

    1

    文章

    1669

    浏览量

    51069
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C语言编程技巧

    设计,分层开发代码,便于理解和维护。 ‌8、避免使用GOTO语句‌:尽管GOTO语句在某些情况下仍然有用,但现代编程更倾向于使用函数和循环控制结构,以提高代码的可读性和维护性。 ‌9、利用C语言的灵活性
    发表于 11-27 06:46

    2025年最佳的嵌入式编程语言有哪些呢?

    嵌入式系统是现代科技不可或缺的一部分。它们存在于家用电器、汽车、住宅、医院、商店等各个领域。它们与我们的社会紧密相连。选择合适语言来构建嵌入式系统对于成功至关重要。那么,2025年最佳的嵌入式编程
    的头像 发表于 11-14 10:27 882次阅读
    2025年最佳的嵌入式<b class='flag-5'>编程</b><b class='flag-5'>语言</b>有哪些呢?

    HarmonyOSAI编程自然语言代码生成

    插入Swiper组件,其中有3个Image组件,其图片资源名分别为app.media.phone,app.media.watch,app.media.glasses。这些Image组件的宽度撑满父布局,高度
    发表于 09-05 16:58

    梯形图语言补充编程说明书

    电子发烧友网站提供《梯形图语言补充编程说明书.pdf》资料免费下载
    发表于 07-09 14:14 2次下载

    Analog Devices Inc. ADA4351-2精密可编程增益跨阻抗放大器数据手册

    ,可使用两个用户可选的外部电阻器对增益进行编程,以提供灵活、功能齐全的紧凑型PGTIA解决方案。独立的模拟和数字电源允许ADA4351-2的放大器在双极电源下工作,而集成的逻辑电平转换功能允许数字接口保持
    的头像 发表于 06-11 13:56 664次阅读
    Analog Devices Inc. <b class='flag-5'>ADA</b>4351-2精密可<b class='flag-5'>编程</b>增益跨阻抗放大器数据手册

    ADA4352-2双通道、精密、可编程增益跨阻放大器(PGTIA),集成增益电阻器技术手册

    ADA4352-2 是一款紧凑的单片双通道 精密、可编程增益跨阻放大器 (PGTIA)。ADA4352-2 是一个突破 精确测量 A 以上小电流的解决方案 动态范围宽。ADA4352-
    的头像 发表于 05-09 15:04 819次阅读
    <b class='flag-5'>ADA</b>4352-2双通道、精密、可<b class='flag-5'>编程</b>增益跨阻放大器(PGTIA),集成增益电阻器技术手册

    ADA4351-2紧凑型、双通道、精密、可编程增益跨阻放大器(PGTIA)技术手册

    编程,以提供灵活紧凑、功能齐全的PGTIA解决方案。凭借单独的模拟和数字电源,ADA4351-2的放大器可以采用双极性电源供电,而集成逻辑电平转换可使数字接口保持以地基准。此外,ADA
    的头像 发表于 05-09 09:49 845次阅读
    <b class='flag-5'>ADA</b>4351-2紧凑型、双通道、精密、可<b class='flag-5'>编程</b>增益跨阻放大器(PGTIA)技术手册

    单片机c语言编程实例大全

    单片机c语言编程实例大全_18
    发表于 04-30 16:11 6次下载

    ADA8282雷达接收路径AFE:4通道LNA和PGA技术手册

    ADA8282针对低成本、低功耗、小尺寸及灵活性的应用而设计。 ADA8282具有四个并联通道,每个通道都包括一个低噪声前置放大器(LNA)和一个可编程增益放大器(PGA)。 LNA和PGA合并时可形成信号链,具有18 dB至3
    的头像 发表于 03-13 09:33 974次阅读
    <b class='flag-5'>ADA</b>8282雷达接收路径AFE:4通道LNA和PGA技术手册

    ADA4807-1 adi

    电子发烧友网你提供ADI(ADI)ADA4807-1相关产品参数、数据手册,更有ADA4807-1的引脚图、接线图、封装手册、中文资料、英文资料,ADA4807-1真值表,
    发表于 03-11 18:52
    <b class='flag-5'>ADA</b>4807-1 adi

    数字电路编程语言介绍

    数字电路编程语言是专门描述和模拟数字电路而设计的编程语言。它们通常具有以下特点: 硬件描述语言
    的头像 发表于 01-24 09:39 1385次阅读

    gitee 支持的编程语言有哪些

    Gitee(码云)是一个基于 Git 的代码托管和研发协作平台,类似于 GitHub 和 GitLab。它支持多种编程语言,允许开发者托管和管理代码,进行版本控制,以及协作开发。以下是一些
    的头像 发表于 01-06 09:50 1101次阅读

    三菱PLC编程语言解析

    三菱电机(Mitsubishi Electric)是全球知名的自动化和制造解决方案供应商,其PLC(可编程逻辑控制器)产品广泛应用于工业自动化领域。三菱PLC编程语言主要基于国际标准IEC
    的头像 发表于 12-26 17:36 2212次阅读

    Triton编译器支持的编程语言

    Triton编译器支持的编程语言主要包括以下几种: 一、主要编程语言 Python :Triton编译器通过Python接口提供了对Triton语言
    的头像 发表于 12-24 17:33 1444次阅读

    Verilog与VHDL的比较 Verilog HDL编程技巧

    Verilog 与 VHDL 比较 1. 语法和风格 Verilog :Verilog 的语法更接近于 C 语言,对于有 C 语言背景的工程师来说,学习曲线较平缓。它支持结构化编程,代码更直观,易于
    的头像 发表于 12-17 09:44 2678次阅读