技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 人工智能和ChatGPT正在改變嵌入式編程

人工智能和ChatGPT正在改變嵌入式編程

時(shí)間:2024-08-21 17:30:34來源:21ic電子網(wǎng)

導(dǎo)語:?除非你一直躲在一塊巖石下,否則你可能已經(jīng)看到ChatGPT正在席卷整個(gè)世界。雖然ChatGPT已經(jīng)引起了人們的普遍興趣,但它是一種人工智能模型,有助于證明開發(fā)者和企業(yè)正在重新思考我們?nèi)绾喂ぷ骱烷_發(fā)軟件系統(tǒng)。我并不是說該技術(shù)正處于我們可以讓人工智能模型為我們編寫生產(chǎn)代碼的階段。相反,我建議人工智能可以通過幾種方式來改變嵌入式軟件開發(fā)人員學(xué)習(xí)、工作和編寫軟件的方式。

  史詩方法#1-通過人工智能對(duì)編程加速開發(fā)

  我一直喜歡的一個(gè)敏捷方法是成對(duì)編程。配對(duì)編程讓兩個(gè)開發(fā)人員一起開發(fā)一個(gè)軟件特性。一個(gè)開發(fā)人員通過編寫代碼作為驅(qū)動(dòng)程序,另一個(gè)作為導(dǎo)航員,檢查準(zhǔn)確性并記住更大的圖片。我很久以前就知道,為嵌入式系統(tǒng)編寫代碼并不是困難的部分。任何人都可以編寫代碼;它檢查代碼是否正確,并做它需要的,這就是訣竅。

  人工智能模型可以生成代碼。Github的副駕駛和OpenAI的代碼沙箱做得很好。將一個(gè)人作為導(dǎo)航器與一個(gè)將編寫代碼的AI模型配對(duì)是加速開發(fā)人員吞吐量的好方法。例如,我最近正在開發(fā)一個(gè)軟件模塊,其中包括單元測(cè)試,在那里我使用了副駕駛來幫助我加速開發(fā)。當(dāng)我開始輸入我正在編寫的函數(shù)或測(cè)試的名稱時(shí),副駕駛會(huì)開始建議代碼的樣子,比如:

  TEST(HeaterGroup, CreateThread)

  {

  UINT status;

  TX_THREAD HeaterThread;

  status = tx_thread_create(&HeaterThread, "HeaterThread", HeaterTask, 0,

  HeaterThreadStack, HEATER_THREAD_STACK_SIZE,

  HEATER_THREAD_PRIORITY, HEATER_THREAD_PRIORITY,

  TX_NO_TIME_SLICE, TX_AUTO_START);

  CHECK_EQUAL(status, TX_SUCCESS);

  }

  副駕駛很快就產(chǎn)生了一個(gè)測(cè)試,我必須在這個(gè)案例中進(jìn)行審查和祝福。它并不總是正確的,也并不總是有一個(gè)好的建議,但總的來說,它提高了我編寫代碼的速度。人工導(dǎo)航器可以導(dǎo)致更高的質(zhì)量和更快的代碼開發(fā)。

  史詩般的方式#2-更快的調(diào)試

  我發(fā)現(xiàn)ChatGPT在查找代碼中的錯(cuò)誤或建議改進(jìn)代碼方面相對(duì)不錯(cuò)。從歷史上看,根據(jù)安斯彭可2020年嵌入式營銷調(diào)查,開發(fā)者平均花了20%的時(shí)間來調(diào)試代碼。然而,我遇到過許多開發(fā)人員和團(tuán)隊(duì),他們花費(fèi)了超過40%的時(shí)間!減少調(diào)試時(shí)間可以節(jié)省數(shù)月和數(shù)十萬美元的開發(fā)成本。人工智能工具將幫助開發(fā)者實(shí)現(xiàn)這一目標(biāo)。

  我最近在一篇演示C緩沖區(qū)溢出的文章中使用了代碼。該代碼如下:

  #include

  #include

  int main (void){

  printf ("Hello, world!\n");

  printf ("Let's overflow the buffer!\r\n");

  uint32_t array[5] = {0, 0, 0, 0, 0,};

  for(int index = 0; index < 6; index++) {

  printf("Index %d: %d\r\n", index, array[index]);

  }

  return 0;

  }

  我把這個(gè)代碼,粘貼到ChatGPT中,并要求它找到這個(gè)bug。其結(jié)果如下:

  “在這段代碼中有一個(gè)緩沖區(qū)溢出。該數(shù)組被定義為大小為5,但是for循環(huán)試圖訪問一個(gè)索引6,這是越界的。這可能會(huì)導(dǎo)致未定義的行為,例如覆蓋不應(yīng)該修改的內(nèi)存。

  要解決這個(gè)問題,您可以改變for循環(huán)條件,以停止在5,如下:

  for(int index = 0; index < 5; index++) {

  printf("Index %d: %d\r\n", index, array[index]);

  }

  This way the loop will only access the valid indices of the array, and will not cause buffer overflow.”

  這可能看起來微不足道,但其潛力是令人信服的。ChatGPT能夠找到緩沖區(qū)溢出,提出修復(fù)它的方法并解釋原因。開發(fā)人員可能花了超過10-20秒的時(shí)間來發(fā)現(xiàn)這樣的錯(cuò)誤,特別是如果錯(cuò)誤更復(fù)雜的話。

  我們已經(jīng)使用了靜態(tài)的和動(dòng)態(tài)的分析工具來改進(jìn)我們的代碼。使用人工智能工具來審查代碼并提出改進(jìn)建議是合乎邏輯的下一步。我已經(jīng)和幾十個(gè)工程師交談過了,他們已經(jīng)在使用ChatGPT來幫助他們學(xué)習(xí)Rust,改進(jìn)他們的C++代碼,找到更好的編寫Python的方法,等等。

  史詩般的方法#3-將開發(fā)者指向正確的方向

  有時(shí),開發(fā)人員會(huì)遇到他們以前沒有完成過的活動(dòng)。在這些情況下,開發(fā)人員將需要在網(wǎng)上走出去,做一些搜索,做一些研究,嘗試一些事情,最終,他們會(huì)弄明白。然而,這個(gè)過程有時(shí)可能需要比我們想要的更多的時(shí)間。有了人工智能工具,開發(fā)者可以找到正確的方向,并更快地加快速度。

  例如,如果你正在開始開發(fā)一個(gè)新產(chǎn)品,并且必須制定一個(gè)軟件開發(fā)計(jì)劃,你可以問人工智能應(yīng)該包括什么。響應(yīng)可能是如下的:

  項(xiàng)目概述:對(duì)項(xiàng)目的目標(biāo)、目標(biāo)和范圍的總結(jié)。

  需求:對(duì)軟件的功能需求和非功能需求的詳細(xì)描述。

  設(shè)計(jì):對(duì)軟件的整體架構(gòu)和設(shè)計(jì)的描述,包括任何相關(guān)的圖表或原理圖。

  開發(fā)時(shí)間表:關(guān)于軟件開發(fā)的詳細(xì)計(jì)劃,包括任務(wù)、里程碑和截止日期。

  測(cè)試和質(zhì)量保證:一個(gè)關(guān)于測(cè)試和質(zhì)量保證的計(jì)劃,包括任何相關(guān)的測(cè)試工具和方法。

  部署和維護(hù):部署軟件并在生產(chǎn)過程中維護(hù)軟件的計(jì)劃。

  資源分配:對(duì)項(xiàng)目所需資源的描述,包括人員、設(shè)備和預(yù)算。

  風(fēng)險(xiǎn)管理:識(shí)別和減輕整個(gè)項(xiàng)目中潛在風(fēng)險(xiǎn)的計(jì)劃。

  溝通:在項(xiàng)目團(tuán)隊(duì)之間和與利益相關(guān)者之間的溝通計(jì)劃。

  附錄:與項(xiàng)目相關(guān)但未包括在計(jì)劃主體中的任何附加信息。

  ChatGPT生成了上述列表。是否準(zhǔn)確?我認(rèn)為這是一個(gè)優(yōu)秀的第一次通過。我使用的軟件開發(fā)計(jì)劃有更多的內(nèi)容,但所有這些項(xiàng)目都包括在內(nèi)了。因此,一個(gè)創(chuàng)建他們的第一個(gè)軟件開發(fā)計(jì)劃的人將會(huì)有一個(gè)方向要走。

  現(xiàn)在,我認(rèn)為這是一個(gè)很好的時(shí)機(jī)來指出,你不能總是相信人工智能工具會(huì)告訴你做的事情。我最近在做一個(gè)項(xiàng)目,其中我必須啟用糾錯(cuò)碼(ECC)。我沒有在那個(gè)微控制器上做過,我很好奇ChatGPT是否會(huì)給我正確的答案,或者給我指明正確的方向。我閱讀了數(shù)據(jù)表,把我需要做的事情放在一起,然后實(shí)現(xiàn)了它。在驗(yàn)證了我的解決方案后,我問ChatGPT如何做同樣的事情。生成的輸出是正確的方向,但遺漏了一些關(guān)鍵的細(xì)節(jié)。如果我單獨(dú)依賴它,我可能還會(huì)試圖弄清楚為什么ECC不工作。

  結(jié)論

  像ChatGPT、CoPilot等許多其他工具將極大地改變企業(yè)和開發(fā)人員編寫軟件的方式(以及更多)。然而,我不相信我們會(huì)很快把鑰匙交給機(jī)器。我懷疑這些工具能否優(yōu)化實(shí)時(shí)性能,或創(chuàng)建正確的權(quán)衡,以確保在多任務(wù)處理環(huán)境中能夠滿足最后期限。然而,增強(qiáng)開發(fā)者并幫助他們變得更高效的潛力是巨大的。大多數(shù)嵌入式系統(tǒng)公司面臨的兩個(gè)最大挑戰(zhàn)是上市時(shí)間和開發(fā)預(yù)算。自動(dòng)化和流程可以幫助團(tuán)隊(duì)沿著這條道路前進(jìn),但人工智能可能只是最終解決這些挑戰(zhàn)的工具。

標(biāo)簽: 人工智能

點(diǎn)贊

分享到:

上一篇:單片機(jī)與PLC的區(qū)別:深入解析...

下一篇:鎖中乾坤CSMH

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號(hào) | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)