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

    文章

    1966

    浏览量

    40021
  • 编译器
    +关注

    关注

    1

    文章

    1673

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ADA2200评估板介绍:电子工程师提供的实用工具

    ADA2200 评估板介绍:电子工程师提供的实用工具 在电子设计领域,评估板是验证和测试芯片性能的重要工具。今天就来给大家介绍一下ADA2200的两款评估板,它们在电子工程师的设计工作
    的头像 发表于 05-23 13:25 458次阅读

    使用Ada语言在Zynq上点亮LED

    当你还在用C语言写GPIO、用Verilog连LED的时候,有人已经开始用一门“冷门但强大”的语言——Ada,在Zynq上点灯了。
    的头像 发表于 05-12 10:33 621次阅读
    使用<b class='flag-5'>Ada</b><b class='flag-5'>语言</b>在Zynq上点亮LED

    深入解析ADA4356:可编程跨阻电流转比特接收器µModule

    深入解析ADA4356:可编程跨阻电流转比特接收器µModule 在电子设计领域,高性能的数据采集模块一直是工程师们追求的目标。ADA4356作为一款可编程跨阻、电流转比特接收器µMo
    的头像 发表于 03-25 16:00 285次阅读

    低功耗高性能之选:ADA4505-1放大器深度解析

    低功耗高性能之选:ADA4505系列放大器深度解析 在电子工程师的日常设计工作中,选择合适的放大器至关重要,尤其是在低电压、电池供电的应用场景中,对放大器的性能和功耗有着极高的要求。今天,我们就来
    的头像 发表于 01-23 10:50 381次阅读

    深入剖析ADA4084系列运放:特性、应用与设计要点

    深入剖析ADA4084系列运放:特性、应用与设计要点 作为电子工程师,在设计电路时,选择合适的运算放大器至关重要。今天,我们就来详细探讨一下Analog Devices公司推出的ADA
    的头像 发表于 01-22 15:20 396次阅读

    深入解析ADA4255:零漂移、高压可编程增益仪表放大器

    深入解析ADA4255:零漂移、高压可编程增益仪表放大器 在工业和数据采集领域,对高精度、高性能仪表放大器的需求日益增长。ADA4255作为一款零漂移、高压可编程增益仪表放大器,凭借其
    的头像 发表于 01-15 17:30 940次阅读

    深入解析ADA4254:零漂移可编程增益仪表放大器的卓越性能与应用

    (PGIA),工程师们提供了出色的解决方案。本文将深入剖析ADA4254的特性、工作原理、应用场景以及寄存器配置等方面,帮助工程师更好地理解和应用这款产品。 文件下载: ADA425
    的头像 发表于 01-15 17:25 729次阅读

    深入剖析ADA4351 - 2:精密可编程增益跨阻放大器的卓越之选

    深入剖析ADA4351 - 2:精密可编程增益跨阻放大器的卓越之选 在电子设计领域,对于高精度电流测量和信号处理的需求日益增长。ADA4351 - 2作为一款紧凑、双通道、精密的可编程
    的头像 发表于 01-15 11:35 576次阅读

    探究高性能放大器ADA4352 - 2:特性、原理及应用全解析

    探究高性能放大器ADA4352 - 2:特性、原理及应用全解析 在电子工程师的日常工作中,选择一款合适的放大器对于实现精确的信号处理至关重要。今天我们要深入探讨的是ADI公司的ADA4
    的头像 发表于 01-15 11:35 467次阅读

    雷达接收路径AFE:ADA8282深度解析

    雷达接收路径AFE:ADA8282深度解析 在电子工程师的日常设计中,雷达系统选择合适的接收路径AFE(模拟前端)至关重要。今天我们就来深入剖析Analog Devices推出的ADA
    的头像 发表于 01-14 11:20 804次阅读

    超低失真差分 ADC 驱动器 ADA4938-1/ADA4938-2 深度解析

    超低失真差分 ADC 驱动器 ADA4938-1/ADA4938-2 深度解析 作为电子工程师,在进行硬件设计开发时,选择合适的 ADC 驱动器至关重要。今天我们就来详细探讨一下 Analog
    的头像 发表于 01-13 09:20 655次阅读

    超低失真电流反馈差分 ADC 驱动器 ADA4927-1/ADA4927-2 深度剖析

    超低失真电流反馈差分 ADC 驱动器 ADA4927-1/ADA4927-2 深度剖析 在电子工程师的日常设计工作中,选择合适的 ADC 驱动器至关重要。今天,我们就来深入了解一款性能
    的头像 发表于 01-12 15:30 512次阅读

    低电压ADC的超低噪声驱动器ADA4930-1/ADA4930-2深度解析

    低电压ADC的超低噪声驱动器ADA4930-1/ADA4930-2深度解析 在电子设计领域,高性能ADC选择合适的驱动器至关重要。ADA4
    的头像 发表于 01-12 15:25 562次阅读

    C语言编程技巧

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

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

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