使用AI幫助我們編寫嵌入式軟件的最佳做法
您是否使用人工智能開發(fā)您的嵌入式軟件?雖然它可能還沒有成為主流,但我看到很多團(tuán)隊(duì)都在瘋狂地研究如何使用AI來提高性能和吞吐量。如果你不想落后,你也應(yīng)該嘗試。我將是第一個(gè)承認(rèn)你所獲得的并不總是正確的,但是我已經(jīng)看到并經(jīng)歷了使用人工智能工具的巨大改進(jìn),這些工具還處于嬰兒期。在這篇文章中,我將分享一些最佳實(shí)踐,這些實(shí)踐將幫助您改進(jìn)提示,從而從AI模型中獲得更好的結(jié)果。一個(gè)人工智能模型能夠產(chǎn)生多少嵌入式軟件會讓你吃驚。
警告:不要毫無疑問地相信任何人工智能輸出!確保遵循最佳實(shí)踐,如執(zhí)行代碼評審和測試。
最佳實(shí)踐#1-從編碼標(biāo)準(zhǔn)開始
我經(jīng)常發(fā)現(xiàn),當(dāng)有人想使用LLM生成代碼時(shí),他們會直接跳進(jìn)來,問一些問題,比如"你能生成一個(gè)……"。毫無疑問,您將從模型中得到一個(gè)答案,而代碼的風(fēng)格將無法匹配您需要的內(nèi)容。即使模型提供了正確的解決方案,您也必須重新編寫代碼。
我經(jīng)常遵循的第一步是為模型提供我的風(fēng)格偏好和示例。它不需要是一個(gè)長達(dá)90頁的樣式文檔,但靜態(tài)分析或格式化工具無法捕捉到的基本內(nèi)容。我通常包括如何命名變量、函數(shù)等。我會排除像大括號應(yīng)該去哪里這樣的細(xì)節(jié),因?yàn)榭梢允褂孟褡フ麧嵾@樣的工具來清理代碼。
最佳實(shí)踐#2-使用迭代步驟
模糊地告訴人工智能模型產(chǎn)生一些"大"的東西是很有誘惑力的。比如要求它開發(fā)一個(gè)完整的碼頭者圖像或代碼模塊。當(dāng)你在沒有提供太多細(xì)節(jié)的情況下對某些東西進(jìn)行猛烈的打擊時(shí),你會得到很多垃圾。然而,我也發(fā)現(xiàn),如果你給太多的信息,你也有可能得到垃圾!
訣竅是使用迭代步驟。例如,你可以遵循如下流程:
1. 把你的問題分成任務(wù)或步驟
2. 提供您的編碼風(fēng)格偏好
3. 將提示符與最初的任務(wù)細(xì)節(jié)結(jié)合起來
4. 分析反應(yīng)
1)如果成功了,繼續(xù)下一個(gè)任務(wù)
2)如果不成功,改進(jìn)提示和重復(fù)
5. 對最終結(jié)果進(jìn)行代碼審查
6. 測試代碼
7. 手工代碼任何改進(jìn)
最佳實(shí)踐#3-使用AI優(yōu)化現(xiàn)有代碼
我發(fā)現(xiàn)人類不會編寫有效執(zhí)行的代碼。我們傾向于編寫邏輯上流動正確的代碼,但不一定使用可用的編程語言或硬件。我最喜歡的提示之一是:
下面的代碼是在[硬件架構(gòu)]上運(yùn)行的,您能改進(jìn)它以更有效地執(zhí)行嗎?
我發(fā)現(xiàn),即使是相對簡單的函數(shù),有時(shí)也可以改進(jìn)。在一個(gè)非常有問題的情況下,模型能夠提出降低CPU利用率近20%的建議!現(xiàn)在,沒有任何黑暗魔法或特殊的技術(shù)。像我一樣,一個(gè)有經(jīng)驗(yàn)的開發(fā)人員可以看到該做些什么。我很想知道人工智能是否會得出類似的結(jié)論。是的,它在大約5秒鐘內(nèi)寫出了代碼,當(dāng)時(shí)我需要幾分鐘。(我不能在5秒內(nèi)寫20行代碼!)。
最佳做法#4-針對具體情況和具體情況定制提示
當(dāng)使用AI生成代碼時(shí),輸出質(zhì)量直接與輸入的質(zhì)量掛鉤。一個(gè)有效的策略是盡可能使提示盡可能具有特定性和上下文,而不使模型中的信息過載。這可以包括:
· 指定您需要解決的精確問題。而不是"生成一個(gè)排序列表的函數(shù)",使用"生成一個(gè)用快速排序排序一個(gè)整數(shù)數(shù)組的C函數(shù)"。"
· 提供代碼運(yùn)行的上下文,如硬件架構(gòu)、操作系統(tǒng)和編譯器版本。
· 包括內(nèi)存使用或執(zhí)行時(shí)間等限制。
例如,您可以制作如下提示符:
"該功能將在一個(gè)有限制的內(nèi)存的8位單片機(jī)上運(yùn)行。您是否可以優(yōu)化下面的排序算法,以減少其內(nèi)存足跡,而又不嚴(yán)重影響其運(yùn)行時(shí)性能?"
這種方法有助于生成更準(zhǔn)確和有用的代碼,并隨著時(shí)間的推移教給人工智能模型您的需求。
最佳做法#5-驗(yàn)證人工智能建議并將其與人類專業(yè)知識結(jié)合起來
大赦國際可以提供強(qiáng)有力的建議和見解,但這些不應(yīng)取代人的專門知識。相反,使用人工智能作為工具來增強(qiáng)你的技能。例如:
· 具有現(xiàn)有解決方案和最佳實(shí)踐的交叉引用A生成的代碼。
· 根據(jù)行業(yè)標(biāo)準(zhǔn)和你自己的經(jīng)驗(yàn)驗(yàn)證代碼的邏輯和效率。
· 仔細(xì)整合AI代碼建議,確保它們與您現(xiàn)有的代碼庫很好地融合,并堅(jiān)持您的項(xiàng)目架構(gòu)。
通過驗(yàn)證Ai生成的代碼并進(jìn)行深思熟慮的集成,您可以利用AI的速度和建議,同時(shí)保持成功的嵌入式軟件開發(fā)所需的高標(biāo)準(zhǔn)。
結(jié)論
我不能說的太多,你真的不能相信人工智能今天的模型。就像計(jì)算機(jī)科學(xué)101一樣,垃圾會給你提供垃圾。人工智能的問題是,有時(shí)候我們認(rèn)為我們沒有提供垃圾!關(guān)鍵是遵循最佳實(shí)踐,為您提供更好的提示,以獲得您正在尋找的結(jié)果。
人工智能不是銀子彈。我可能已經(jīng)讓它帶我去了一次徒勞的追逐,因?yàn)樗岣吡宋业耐掏铝?。然?有趣的是,它的進(jìn)化速度有多快。在您知道之前,每個(gè)開發(fā)人員都將被迫使用它,如果他們想跟上。模型只會改進(jìn);你可以遵循的最佳實(shí)踐越多,你的結(jié)果就越好。