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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

Ada Watch:為工作找到合適的編程語(yǔ)言

星星科技指導(dǎo)員 ? 來(lái)源:嵌入式計(jì)算設(shè)計(jì) ? 作者:GREG GICCA ? 2022-11-01 09:31 ? 次閱讀

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

我們可以通過(guò)高層次的視角來(lái)說(shuō)明這一點(diǎn),而無(wú)需深入研究特定的語(yǔ)言細(xì)節(jié)和個(gè)人偏好。第一步是研究強(qiáng)類型語(yǔ)言如何避免難以檢測(cè)的錯(cuò)誤和不正確的程序操作。

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

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

Ada 是強(qiáng)類型。簡(jiǎn)單來(lái)說(shuō),這意味著變量、常量或?qū)ο蟊仨氃谑褂弥奥暶?。但是,它也允許語(yǔ)言(編譯器)靜態(tài)檢查使用此類標(biāo)識(shí)符的有效性。

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

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

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

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

通過(guò)結(jié)合這兩個(gè)簡(jiǎn)單的功能,語(yǔ)言還可以檢查兩個(gè)標(biāo)識(shí)符是否可以在表達(dá)式中一起使用。假設(shè)兩個(gè)變量“A”和B“聲明為:

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

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

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

審核編輯:郭婷

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

    關(guān)注

    10

    文章

    1945

    瀏覽量

    34746
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1634

    瀏覽量

    49134
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Triton編譯器支持的編程語(yǔ)言

    Triton編譯器支持的編程語(yǔ)言主要包括以下幾種: 一、主要編程語(yǔ)言 Python :Triton編譯器通過(guò)Python接口提供了對(duì)Triton語(yǔ)言
    的頭像 發(fā)表于 12-24 17:33 ?331次閱讀

    如何選擇適合自己的編程語(yǔ)言

    在當(dāng)今這個(gè)技術(shù)日新月異的時(shí)代,編程語(yǔ)言的選擇對(duì)于軟件開發(fā)者來(lái)說(shuō)至關(guān)重要。不同的編程語(yǔ)言有著不同的優(yōu)勢(shì)和適用場(chǎng)景,因此,選擇合適
    的頭像 發(fā)表于 11-15 09:37 ?356次閱讀

    編程語(yǔ)言的誤區(qū)與常見問(wèn)題

    誤區(qū)一:編程語(yǔ)言的選擇 常見問(wèn)題: 初學(xué)者在選擇編程語(yǔ)言時(shí),往往會(huì)被市場(chǎng)上的熱門語(yǔ)言所吸引,而忽視了自己的實(shí)際需求和興趣。 一些開發(fā)者認(rèn)為某
    的頭像 發(fā)表于 11-15 09:35 ?290次閱讀

    MCU編程語(yǔ)言和開發(fā)環(huán)境介紹

    微控制器單元(Microcontroller Unit,簡(jiǎn)稱MCU)是嵌入式系統(tǒng)的核心,廣泛應(yīng)用于各種電子產(chǎn)品中。隨著技術(shù)的發(fā)展,MCU編程語(yǔ)言和開發(fā)環(huán)境也在不斷進(jìn)步,以適應(yīng)不同的應(yīng)用需求。 1.
    的頭像 發(fā)表于 11-01 11:51 ?749次閱讀

    C語(yǔ)言與其他編程語(yǔ)言的比較

    C語(yǔ)言作為一種歷史悠久的編程語(yǔ)言,自其誕生以來(lái),一直在軟件開發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強(qiáng)的特點(diǎn),成為了系統(tǒng)級(jí)編程的首選語(yǔ)言
    的頭像 發(fā)表于 10-29 17:30 ?275次閱讀

    Orin芯片的編程語(yǔ)言支持

    Orin是一款高度集成、高性能的車載計(jì)算平臺(tái),由英偉達(dá)推出,并采用了英偉達(dá)自家的Volta架構(gòu)GPU和其他高級(jí)處理器技術(shù)。關(guān)于Orin芯片的編程語(yǔ)言支持,可以從以下幾個(gè)方面進(jìn)行介紹: 一、主要編程
    的頭像 發(fā)表于 10-27 16:45 ?302次閱讀

    plc編程語(yǔ)言編程相關(guān)技巧有哪些

    PLC(可編程邏輯控制器)編程語(yǔ)言及相關(guān)編程技巧是工業(yè)自動(dòng)化領(lǐng)域中不可或缺的知識(shí)。 一、PLC編程語(yǔ)言
    的頭像 發(fā)表于 10-21 16:56 ?345次閱讀

    plc編程st語(yǔ)言怎么編

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

    PLC的編程方式及編程語(yǔ)言

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

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

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

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

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

    PLC常用編程語(yǔ)言有哪些

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

    fpga用的是什么編程語(yǔ)言 fpga用什么語(yǔ)言開發(fā)

    fpga用的是什么編程語(yǔ)言 FPGA(現(xiàn)場(chǎng)可編程邏輯門陣列)主要使用的編程語(yǔ)言是硬件描述語(yǔ)言(H
    的頭像 發(fā)表于 03-14 17:09 ?3513次閱讀

    fpga芯片用什么編程語(yǔ)言

    FPGA芯片主要使用的編程語(yǔ)言包括Verilog HDL和VHDL。這兩種語(yǔ)言都是硬件描述語(yǔ)言,用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)和行為。
    的頭像 發(fā)表于 03-14 16:07 ?1522次閱讀

    plc編程語(yǔ)言與c語(yǔ)言的聯(lián)系 c語(yǔ)言和PLC有什么區(qū)別

    PLC編程語(yǔ)言與C語(yǔ)言的聯(lián)系 PLC(可編程邏輯控制器)是一種針對(duì)自動(dòng)化控制系統(tǒng)的特殊計(jì)算機(jī)。PLC編程
    的頭像 發(fā)表于 02-05 14:21 ?4137次閱讀