0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Ada Watch:為工作找到合適的編程語言

星星科技指導員 ? 來源:嵌入式計算設計 ? 作者:GREG GICCA ? 2022-11-01 09:31 ? 次閱讀

Ada 是一種強類型語言,是開發(fā)高可靠性程序的自然選擇。一些語言,如C,擅長低級編程,但不能解決其他挑戰(zhàn) - 正如我之前的博客所介紹的那樣。您需要為工作選擇合適的工具。與其對每個問題使用一種語言或一種工具,不如為工程師提供多種選擇來開發(fā)高可靠性軟件——這正是 Ada 的亮點。

我們可以通過高層次的視角來說明這一點,而無需深入研究特定的語言細節(jié)和個人偏好。第一步是研究強類型語言如何避免難以檢測的錯誤和不正確的程序操作。

Ada在高可靠性應用中的優(yōu)勢

Ada 的許多高可靠性軟件開發(fā)功能并非 Ada 所獨有,可以在各種其他(強類型)編程語言中找到。Ada的獨特之處在于所有這些功能都可以在一種編程語言中找到。

Ada 是強類型。簡單來說,這意味著變量、常量或?qū)ο蟊仨氃谑褂弥奥暶?。但是,它也允許語言(編譯器)靜態(tài)檢查使用此類標識符的有效性。

此設計功能的一個有趣效果是,可以將拼寫錯誤和拼寫錯誤檢測為錯誤并為開發(fā)人員標記。任何人類的寫作努力都會有錯誤,隨著總寫作工作量的增加,錯誤的數(shù)量也會增加。由于許多拼寫錯誤對于不經(jīng)意的觀察者來說看起來是正確的(或者它們一開始就不會發(fā)生),讓語言檢測到這些是非常有價值的。

假設程序員打算將車輛位置“L”計算為實數(shù),并將整數(shù)索引“I”用于其他目的。在 Ada 中,如果使用變量“I”而不是“L”,則它將被標記為操作的錯誤類型。在 C 中,索引“I”將被隱式轉(zhuǎn)換(“強制轉(zhuǎn)換”)為表達式中的實值,從而引入錯誤。像這樣的簡單錯誤可能保持隱藏,難以發(fā)現(xiàn),并且對軟件的預期含義有潛移默化的變化。例如,“位置”應該是程序中此時的車輛位置,但索引“I”是不相關的。

Ada 支持將程序規(guī)范與實現(xiàn)分離的概念。該語言支持外部程序單元可見和調(diào)用的程序規(guī)范的定義。這定義了單元或子程序的名稱及其參數(shù)、類型等。該規(guī)范對使用“with”構造的調(diào)用方可見。實現(xiàn)或正文可能位于單獨的文件中,并包含規(guī)范的完整算法實現(xiàn)。此單元在語義上始終對調(diào)用方不可見。因此,調(diào)用方無法更改算法的內(nèi)部詳細信息。

這是Ada語言的一個關鍵特征,因為可以單獨開發(fā),測試和驗證單元集合,而不必擔心組合時會發(fā)生副作用。這允許以安全和可擴展的方式構建分層或組件架構。Ada 在這方面具有其他功能,但此基本概念對于開發(fā)高可靠性應用程序至關重要。具有“#Include”樣式的其他語言功能在語義上將引用單元的源文本“包含”到引用/調(diào)用單元的源中。這使得所有內(nèi)部詳細信息對調(diào)用方可見,并允許發(fā)生意外或有目的的副作用。在小程序中,可以手動檢測對這些內(nèi)部細節(jié)的操縱。讀者可以看到,調(diào)用方中的拼寫錯誤可能會意外引用并更改被調(diào)用單元中的內(nèi)部值(開發(fā)人員鍵入的“X”未在本地聲明,但最終在所包含的單元中引用了“X”)。再一次,在較大的程序中,像這樣的簡單引用可能保持隱藏狀態(tài),難以發(fā)現(xiàn),并且對軟件的預期含義有隱蔽的變化。

通過結(jié)合這兩個簡單的功能,語言還可以檢查兩個標識符是否可以在表達式中一起使用。假設兩個變量“A”和B“聲明為:

? A 和 B 是整數(shù)類型? A 是整數(shù),B 是顏色類型

加號(“+”)是一個子程序,具有定義數(shù)量的參數(shù)輸入,具有特定類型,具有特定的返回值類型。是否有 1 “+” 1 (A+B) 的操作“+”?是否有 1“+” 藍色 (A+B) 的操作“+”?在 C 語言的情況下,這兩個表達式都可能是有效的,但它們是什么意思?在 Ada 的情況下,第一個表達式有效,但第二個表達式無效。同樣,此類錯誤在開發(fā)生命周期的早期就被發(fā)現(xiàn),在那里它們很容易被廉價地發(fā)現(xiàn)和糾正。

我只概述了 Ada 的一些非?;竟δ艿囊恍└呒墐?yōu)勢,因此可以在直觀的層面上理解它們,為什么這些使程序更容易開發(fā)而沒有錯誤。Ada 語言還有更多有助于開發(fā)高可靠性程序的功能,我鼓勵您自己探索和測試它們。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編程語言
    +關注

    關注

    10

    文章

    1916

    瀏覽量

    34374
  • 編譯器
    +關注

    關注

    1

    文章

    1602

    瀏覽量

    48895
收藏 人收藏

    評論

    相關推薦

    plc編程st語言怎么編

    PLC(可編程邏輯控制器)編程中的ST(Structured Text)語言是一種高級編程語言,它類似于Pascal或C
    的頭像 發(fā)表于 08-25 10:05 ?296次閱讀

    PLC的編程方式及編程語言

    在工業(yè)自動化領域,PLC(Programmable Logic Controller,可編程邏輯控制器)因其強大的控制功能和靈活的編程方式而得到了廣泛應用。PLC的編程方式和編程
    的頭像 發(fā)表于 06-27 14:08 ?411次閱讀

    abb工業(yè)機器人的編程語言是什么

    ABB工業(yè)機器人的編程語言主要是RAPID(Robot Application Programming Interface for Development),它是一種高級編程語言,專門
    的頭像 發(fā)表于 06-16 16:49 ?1669次閱讀

    PLC編程語言和C語言的區(qū)別

    在工業(yè)自動化和計算機編程領域中,PLC(可編程邏輯控制器)編程語言和C語言各自扮演著重要的角色。盡管兩者都是
    的頭像 發(fā)表于 06-14 17:11 ?1575次閱讀

    PLC常用編程語言有哪些

    在工業(yè)自動化領域,PLC(Programmable Logic Controller,可編程邏輯控制器)作為一種核心控制設備,其編程語言的選擇對于控制系統(tǒng)的設計、開發(fā)和維護具有重要影響。PLC的
    的頭像 發(fā)表于 06-14 16:58 ?720次閱讀

    采用3.3V單電源供電時,ADA4932能正常工作嗎?

    輸入信號為差分信號,幅度最大為1.8Vpp,共模電壓0.9V; 使用ADA4932放大此差分信號,輸出差分信號為共模信號為1.45V的,Vpp最大為2V的差分信號; 在采用3.3V單電源供電時,ADA4932能正常
    發(fā)表于 12-21 07:55

    如何為功率器件找到合適的驅(qū)動芯片

    每一個功率器件都需要一個驅(qū)動芯片,合適的驅(qū)動芯片總能帶來事半功倍的效果,客戶提供全面、高效的產(chǎn)品和解決方案
    發(fā)表于 12-04 09:15 ?272次閱讀
    如何為功率器件<b class='flag-5'>找到</b><b class='flag-5'>合適</b>的驅(qū)動芯片

    腳本語言編程語言的區(qū)別

    腳本語言編程語言是計算機語言的兩個主要分類。盡管兩者都是用于編寫計算機程序的工具,但它們在設計和運行方式上存在一些顯著的區(qū)別。下面將詳細探討腳本
    的頭像 發(fā)表于 11-22 14:33 ?2518次閱讀

    Python編程語言屬于什么語言

    Python編程語言屬于高級編程語言中的一種。它是一種通用、面向?qū)ο?、解釋?b class='flag-5'>編程語言。Pytho
    的頭像 發(fā)表于 11-22 14:31 ?1144次閱讀

    什么是C語言?單片機有什么特點?為什么要用C語言編程?

    隨著技術的發(fā)展,電子產(chǎn)品越來越多,方便了我們的日常生活,大多數(shù)電子產(chǎn)品上都有單片機,而單片機是通過執(zhí)行軟件邏輯來實現(xiàn)功能的。而單片機編程合適編程語言是匯編
    的頭像 發(fā)表于 11-21 10:06 ?1313次閱讀
    什么是C<b class='flag-5'>語言</b>?單片機有什么特點?為什么要用C<b class='flag-5'>語言</b><b class='flag-5'>編程</b>?

    基于Rust開發(fā)的編程語言

    Move 是一門由 Rust 語言開發(fā)的一門面向資產(chǎn)的編程語言,最早由 Facebook (現(xiàn) Meta )投入大量的人力物力開發(fā),用于 Libra (現(xiàn) Dime )項目,處理全球性大規(guī)模支付系統(tǒng)的
    的頭像 發(fā)表于 11-17 12:30 ?576次閱讀

    請問哪里可以找到ADA4817的IBIS模型呢?

    大家好,請問哪里可以找到ADA4817的IBIS模型呢?
    發(fā)表于 11-17 12:11

    淺談PLC 5種標準的編程語言

    IEC 1131-3的編程語言是IEC工作組 對世界范圍的PLC廠家的編程語言合理地吸收、借鑒的基礎上形成的一套針對工業(yè)控制系統(tǒng)的國際
    發(fā)表于 11-15 11:14 ?671次閱讀
    淺談PLC 5種標準的<b class='flag-5'>編程</b><b class='flag-5'>語言</b>

    ADA4961脈沖響應異常怎么解決?

    測試,波形如下圖所示,發(fā)現(xiàn)第一個周期的響應異常:前半周振幅不足,第二周期開始就比較平穩(wěn)。 如上圖,黃色波形輸入,綠色輸出。增益控制維持不變。 問題: 1、上述響應是否正常 2、是否有更合適器件推薦? 滿足脈沖響應和增益可控
    發(fā)表于 11-14 08:22

    ADA4351-2/ADA4352-2:小型、雙通道、精密度、可編程-伽因、移動式放大器(PGTIAs)初步數(shù)據(jù)表 ADI

    電子發(fā)燒友網(wǎng)你提供ADI(ADI)ADA4351-2/ADA4352-2:小型、雙通道、精密度、可編程-伽因、移動式放大器(PGTIAs)初步數(shù)據(jù)表相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有
    發(fā)表于 10-08 16:42
    <b class='flag-5'>ADA</b>4351-2/<b class='flag-5'>ADA</b>4352-2:小型、雙通道、精密度、可<b class='flag-5'>編程</b>-伽因、移動式放大器(PGTIAs)初步數(shù)據(jù)表 ADI