本發(fā)明涉及數(shù)據(jù)處理,具體涉及一種基于生成式ai的編程輔助方法、計(jì)算機(jī)設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、生成式ai是指能夠自動(dòng)生成文本、代碼或其他類型內(nèi)容的人工智能技術(shù),通?;谏疃葘W(xué)習(xí)模型,如gpt(生成型預(yù)訓(xùn)練轉(zhuǎn)換器)系列。生成式ai在編程輔助方面的應(yīng)用主要體現(xiàn)在如下幾個(gè)方面:1、生成式ai可以根據(jù)自然語(yǔ)言描述生成程序代碼;2、在編寫(xiě)程序代碼時(shí),生成式ai可以實(shí)時(shí)預(yù)測(cè)和補(bǔ)全代碼片段;3、生成式ai可以幫助識(shí)別程序代碼中的錯(cuò)誤,并提出修復(fù)建議;4、生成式ai可以建議或自動(dòng)執(zhí)行代碼重構(gòu),以改善代碼的可讀性、維護(hù)性和性能。ai模型通過(guò)大量的代碼數(shù)據(jù)進(jìn)行訓(xùn)練,學(xué)習(xí)不同編程語(yǔ)言的語(yǔ)法和常見(jiàn)的編程模式,從而實(shí)現(xiàn)ai輔助編程。
2、傳統(tǒng)方法中,在ai基于用戶需求信息進(jìn)行關(guān)鍵詞檢索并生成程序代碼的過(guò)程中,尤其是在特定的編程項(xiàng)目中,如自動(dòng)化控制程序的開(kāi)發(fā),在編程燒錄硬件設(shè)備時(shí),單片機(jī)通常的rom即支持程序緩存的預(yù)留較小,生成式燒錄控制程序代碼會(huì)因?yàn)橛脩襞渲眯枨髼l件的提供不充足等原因,通常具備較高的冗余性,導(dǎo)致極大程度地占據(jù)程序內(nèi)存,例如代碼中存在無(wú)效的通信協(xié)議或者內(nèi)部循環(huán)等,致使多模塊功能聯(lián)合后,代碼運(yùn)行時(shí)間復(fù)雜度較高。
技術(shù)實(shí)現(xiàn)思路
1、為了解決生成式ai輸出的程序代碼冗余度高的技術(shù)問(wèn)題,本發(fā)明的目的在于提供一種基于生成式ai的編程輔助方法、計(jì)算機(jī)設(shè)備及存儲(chǔ)介質(zhì),所采用的技術(shù)方案具體如下:
2、一種基于生成式ai的編程輔助方法,所述方法包括:
3、根據(jù)編程需求信息,通過(guò)生成式ai模型得到預(yù)生成代碼;
4、分析所述預(yù)生成代碼中的每個(gè)代碼模塊中涉及的硬件,得到每個(gè)所述代碼模塊的屬性優(yōu)先級(jí);
5、分析每個(gè)所述代碼模塊中的程序代碼的復(fù)雜情況,得到每個(gè)所述代碼模塊的程序復(fù)雜優(yōu)先級(jí);
6、分析每個(gè)所述代碼模塊的時(shí)間敏感情況,得到每個(gè)所述代碼模塊的時(shí)間優(yōu)先級(jí);
7、根據(jù)所述屬性優(yōu)先級(jí)、所述程序復(fù)雜優(yōu)先級(jí)和所述時(shí)間優(yōu)先級(jí),確定每個(gè)所述代碼模塊的指令優(yōu)先級(jí);
8、根據(jù)每個(gè)所述代碼模塊的所述指令優(yōu)先級(jí),對(duì)所述預(yù)生成代碼中每個(gè)所述代碼模塊中的程序代碼進(jìn)行優(yōu)化,得到最終的目標(biāo)程序代碼。
9、在其中一個(gè)實(shí)施例中,所述分析所述預(yù)生成代碼中的每個(gè)代碼模塊中涉及的硬件,得到每個(gè)所述代碼模塊的屬性優(yōu)先級(jí),包括:
10、提取所述預(yù)生成代碼中的每個(gè)代碼模塊中的硬件相關(guān)關(guān)鍵詞;
11、確定每個(gè)所述代碼模塊中的所述硬件相關(guān)關(guān)鍵詞的屬性類別;
12、分別針對(duì)每個(gè)所述代碼模塊,根據(jù)所述代碼模塊中每種屬性類別下的硬件相關(guān)關(guān)鍵詞出現(xiàn)的次數(shù),確定所述代碼模塊的屬性優(yōu)先級(jí)。
13、在其中一個(gè)實(shí)施例中,所述屬性類別包括核心硬件和外圍設(shè)備;所述分別針對(duì)每個(gè)所述代碼模塊,根據(jù)所述代碼模塊中每種屬性類別下的硬件相關(guān)關(guān)鍵詞出現(xiàn)的次數(shù),確定所述代碼模塊的屬性優(yōu)先級(jí),包括:
14、分別針對(duì)每個(gè)所述代碼模塊,對(duì)所述代碼模塊中每種屬性類別下的硬件相關(guān)關(guān)鍵詞出現(xiàn)的次數(shù)進(jìn)行加權(quán)求和,得到所述代碼模塊的屬性優(yōu)先級(jí);
15、其中,在加權(quán)求和中使用的第一權(quán)重大于第二權(quán)重;所述第一權(quán)重,是屬性類別為核心硬件的硬件相關(guān)關(guān)鍵詞出現(xiàn)的次數(shù)對(duì)應(yīng)的權(quán)重;所述第二權(quán)重,是屬性類別為外圍設(shè)備的硬件相關(guān)關(guān)鍵詞出現(xiàn)的次數(shù)對(duì)應(yīng)的權(quán)重。
16、在其中一個(gè)實(shí)施例中,所述分析每個(gè)所述代碼模塊中的程序代碼的復(fù)雜情況,得到每個(gè)所述代碼模塊的程序復(fù)雜優(yōu)先級(jí),包括:
17、解析每個(gè)所述代碼模塊中的程序代碼的循環(huán)嵌套層級(jí)數(shù);
18、解析每個(gè)所述代碼模塊中的各個(gè)函數(shù)的調(diào)用深度和調(diào)用次數(shù);
19、分別針對(duì)每個(gè)所述代碼模塊,根據(jù)所述代碼模塊的所述循環(huán)嵌套層級(jí)數(shù)和所述代碼模塊中各個(gè)函數(shù)的所述調(diào)用深度和所述調(diào)用次數(shù),確定所述代碼模塊的程序復(fù)雜優(yōu)先級(jí)。
20、在其中一個(gè)實(shí)施例中,所述分析每個(gè)所述代碼模塊的時(shí)間敏感情況,得到每個(gè)所述代碼模塊的時(shí)間優(yōu)先級(jí),包括:
21、根據(jù)所述編程需求信息確定中斷響應(yīng)時(shí)間和任務(wù)調(diào)度順序;
22、根據(jù)所述任務(wù)調(diào)度順序確定每個(gè)所述代碼模塊的順序值;
23、根據(jù)所述中斷響應(yīng)時(shí)間和每個(gè)所述代碼模塊的所述順序值,確定每個(gè)所述代碼模塊的時(shí)間優(yōu)先級(jí)。
24、在其中一個(gè)實(shí)施例中,所述根據(jù)每個(gè)所述代碼模塊的所述指令優(yōu)先級(jí),對(duì)所述預(yù)生成代碼中每個(gè)所述代碼模塊中的程序代碼進(jìn)行優(yōu)化,得到最終的目標(biāo)程序代碼,包括:
25、根據(jù)每個(gè)所述代碼模塊的所述指令優(yōu)先級(jí),為每個(gè)所述代碼模塊進(jìn)行內(nèi)存分配,得到每個(gè)所述代碼模塊的內(nèi)存分配量;
26、根據(jù)每個(gè)所述代碼模塊的所述指令優(yōu)先級(jí),對(duì)每個(gè)所述代碼模塊中的程序代碼進(jìn)行去冗余優(yōu)化,得到去冗余的程序代碼;
27、根據(jù)每個(gè)所述代碼模塊的所述內(nèi)存分配量和對(duì)應(yīng)的去冗余的程序代碼,得到最終的目標(biāo)程序代碼。
28、在其中一個(gè)實(shí)施例中,所述根據(jù)每個(gè)所述代碼模塊的所述指令優(yōu)先級(jí),為每個(gè)所述代碼模塊進(jìn)行內(nèi)存分配,得到每個(gè)所述代碼模塊的內(nèi)存分配量,包括:
29、根據(jù)每個(gè)所述代碼模塊的所述指令優(yōu)先級(jí),確定每個(gè)所述代碼模塊的分配比例;
30、根據(jù)總可用內(nèi)存量和每個(gè)所述代碼模塊的所述分配比例,確定每個(gè)所述代碼模塊的內(nèi)存分配量。
31、在其中一個(gè)實(shí)施例中,所述根據(jù)每個(gè)所述代碼模塊的所述指令優(yōu)先級(jí),對(duì)每個(gè)所述代碼模塊中的程序代碼進(jìn)行去冗余優(yōu)化,得到去冗余的程序代碼,包括:
32、根據(jù)每個(gè)所述代碼模塊的所述指令優(yōu)先級(jí),確定每個(gè)所述代碼模塊所屬的優(yōu)先級(jí)區(qū)間;
33、針對(duì)屬于第一優(yōu)先級(jí)區(qū)間的代碼模塊中的程序代碼進(jìn)行冗余代碼簡(jiǎn)化、循環(huán)嵌套優(yōu)化、多余函數(shù)刪除和邏輯壓縮處理;
34、針對(duì)屬于第二優(yōu)先級(jí)區(qū)間的代碼模塊中的程序代碼進(jìn)行邏輯重構(gòu)、以及非必要信息和無(wú)效代碼刪除處理;
35、針對(duì)屬于第三優(yōu)先級(jí)區(qū)間的代碼模塊中的程序代碼進(jìn)行冗余指令減少處理;
36、其中,所述第二優(yōu)先級(jí)區(qū)間對(duì)應(yīng)的指令優(yōu)先級(jí)小于所述第三優(yōu)先級(jí)區(qū)間對(duì)應(yīng)的指令優(yōu)先級(jí)、且大于所述第一優(yōu)先級(jí)區(qū)間對(duì)應(yīng)的指令優(yōu)先級(jí)。
37、一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器存儲(chǔ)有計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)以下步驟:
38、根據(jù)編程需求信息,通過(guò)生成式ai模型得到預(yù)生成代碼;
39、分析所述預(yù)生成代碼中的每個(gè)代碼模塊中涉及的硬件,得到每個(gè)所述代碼模塊的屬性優(yōu)先級(jí);
40、分析每個(gè)所述代碼模塊中的程序代碼的復(fù)雜情況,得到每個(gè)所述代碼模塊的程序復(fù)雜優(yōu)先級(jí);
41、分析每個(gè)所述代碼模塊的時(shí)間敏感情況,得到每個(gè)所述代碼模塊的時(shí)間優(yōu)先級(jí);
42、根據(jù)所述屬性優(yōu)先級(jí)、所述程序復(fù)雜優(yōu)先級(jí)和所述時(shí)間優(yōu)先級(jí),確定每個(gè)所述代碼模塊的指令優(yōu)先級(jí);
43、根據(jù)每個(gè)所述代碼模塊的所述指令優(yōu)先級(jí),對(duì)所述預(yù)生成代碼中每個(gè)所述代碼模塊中的程序代碼進(jìn)行優(yōu)化,得到最終的目標(biāo)程序代碼。
44、一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)以下步驟:
45、根據(jù)編程需求信息,通過(guò)生成式ai模型得到預(yù)生成代碼;
46、分析所述預(yù)生成代碼中的每個(gè)代碼模塊中涉及的硬件,得到每個(gè)所述代碼模塊的屬性優(yōu)先級(jí);
47、分析每個(gè)所述代碼模塊中的程序代碼的復(fù)雜情況,得到每個(gè)所述代碼模塊的程序復(fù)雜優(yōu)先級(jí);
48、分析每個(gè)所述代碼模塊的時(shí)間敏感情況,得到每個(gè)所述代碼模塊的時(shí)間優(yōu)先級(jí);
49、根據(jù)所述屬性優(yōu)先級(jí)、所述程序復(fù)雜優(yōu)先級(jí)和所述時(shí)間優(yōu)先級(jí),確定每個(gè)所述代碼模塊的指令優(yōu)先級(jí);
50、根據(jù)每個(gè)所述代碼模塊的所述指令優(yōu)先級(jí),對(duì)所述預(yù)生成代碼中每個(gè)所述代碼模塊中的程序代碼進(jìn)行優(yōu)化,得到最終的目標(biāo)程序代碼。
51、本發(fā)明具有如下有益效果:
52、根據(jù)編程需求信息,通過(guò)生成式ai模型得到預(yù)生成代碼,然后分析預(yù)生成代碼中的每個(gè)代碼模塊中涉及的硬件,得到每個(gè)代碼模塊的屬性優(yōu)先級(jí),分析每個(gè)代碼模塊中的程序代碼的復(fù)雜情況,得到每個(gè)代碼模塊的程序復(fù)雜優(yōu)先級(jí),分析每個(gè)代碼模塊的時(shí)間敏感情況,得到每個(gè)代碼模塊的時(shí)間優(yōu)先級(jí),再根據(jù)屬性優(yōu)先級(jí)、程序復(fù)雜優(yōu)先級(jí)和時(shí)間優(yōu)先級(jí),確定每個(gè)代碼模塊的指令優(yōu)先級(jí),最后根據(jù)每個(gè)代碼模塊的指令優(yōu)先級(jí),對(duì)預(yù)生成代碼中每個(gè)代碼模塊中的程序代碼進(jìn)行優(yōu)化,得到最終的目標(biāo)程序代碼,能夠降低生成式ai輔助編程得到的程序代碼的冗余度,降低內(nèi)存占用,提高代碼運(yùn)行效率。