零:前言
今年的ChatGPT熱潮之后,AI大模型的應(yīng)用日益廣泛,雖然AI編碼暫時不能完全替代程序員,但隨著時代的變遷和趨勢的發(fā)展,我們不必過于焦慮。我們應(yīng)該積極適應(yīng)變化,順應(yīng)趨勢,勇敢嘗試用AI來輔助編碼工作。
今天讓虛竹哥帶大家了解下Amazon?CodeWhisperer。
一、Amazon?CodeWhisperer
從官方的介紹中,可以感受到Amazon?CodeWhisperer是一款強(qiáng)大的AI編程助手,可以在你的IDE環(huán)境中即刻生成針對單行或全函數(shù)的代碼建議,提升你的編程效率。借助于CodeWhisperer,可以寫一段注釋的話,然后CodeWhisperer會直接在開發(fā)環(huán)境中推薦一個或多個最適合實(shí)現(xiàn)任務(wù)的代碼片段,你可以選擇使用當(dāng)前代碼片段或者上下選擇其他代碼片段。
我對Amazon?CodeWhisperer進(jìn)行了一次全盤體驗(yàn),感受到了以下幾個主要功能和特點(diǎn):
1、代碼生成:根據(jù)注釋和現(xiàn)有的代碼生成出來的代碼建議,適應(yīng)性很好,有些代碼非常優(yōu)質(zhì),leetcode打敗100%的JAVA用戶。
2、多語言和IDE支持:這個就很牛逼,把大部分開發(fā)全覆蓋了。
3、安全掃描:掃描代碼以檢測難以發(fā)現(xiàn)的漏洞,并給出修復(fù)建議。這個可以避免團(tuán)隊(duì)未來損失大量的金錢和精力。
下面帶大家實(shí)戰(zhàn)體驗(yàn)一波~
二、實(shí)戰(zhàn)體驗(yàn)
安裝
在IDEA上安裝Amazon CodeWhisperer的插件(虛竹哥用的是IDEA2022.1.4版本)
按照以下步驟在IDEA中安裝Amazon?Toolkit插件:
1、打開IDEA,點(diǎn)擊右上角的?"File"?菜單,然后選擇?"Settings"。
2、在設(shè)置窗口左側(cè)的菜單欄中,點(diǎn)擊?"Plugins"。
3、在?Plugins?頁面右上角,輸入?"Amazon?Toolkit",并從搜索結(jié)果中選擇相應(yīng)的插件。
4、點(diǎn)擊?"Install"?按鈕開始安裝插件。
5、安裝完成后,點(diǎn)擊?"OK"?按鈕。
注意,安裝完成后,要重啟IDEA,才會生效。點(diǎn)擊如圖的Restart IDE,等待重啟。
依次點(diǎn)擊?"View"?->?"Tool?Windows"?->?"Amazon?Toolkit"。這將打開Amazon?Toolkit視圖。
在Amazon?Toolkit視圖上,您將看到一個名為"Developer?Tools"的標(biāo)簽頁。點(diǎn)擊這個標(biāo)簽頁。
在"Developer?Tools"頁面上,您將看到一個名為"CodeWhisperer"的選項(xiàng)。點(diǎn)擊這個選項(xiàng)。
在CodeWhisperer頁面上,您將看到一個名為"Start"的按鈕。點(diǎn)擊這個按鈕
選擇“Use?a?personal?email?to?sign?up?and?sign?in?with?Amazon?Builder?ID”
然后點(diǎn)擊“connect”
在彈窗中,記得要點(diǎn)擊復(fù)制圖標(biāo),這是復(fù)制code,后面有用到。
然后選擇“Open?and?Copy?Code”
會看到一個瀏覽器頁面彈出。請將復(fù)制的code粘貼到輸入框中,并點(diǎn)擊提交按鈕。
如圖輸?你的郵箱地址,點(diǎn)擊"下一步"
在頁面上輸入您的姓名信息,并點(diǎn)擊 "Next" 按鈕,在此之后,CodeWhisperer 將會向您的郵箱發(fā)送一個驗(yàn)證碼。
請前往您的郵箱,并查找 CodeWhisperer 發(fā)送的郵件。在該郵件中,您將會看到一個包含驗(yàn)證碼的消息。請復(fù)制該驗(yàn)證碼并返回到頁面上,以便完成下一步操作。
接下來,您需要設(shè)置密碼。為了確保安全性,密碼需要符合一定的格式和強(qiáng)度要求。請按照頁面上的提示,并創(chuàng)建一個高強(qiáng)度的密碼。在設(shè)置完成后,請?jiān)俅屋斎朐撁艽a以進(jìn)行確認(rèn)。
當(dāng)看到類似下圖的界面時,就表示創(chuàng)建成功了。
實(shí)戰(zhàn)1:
CodeWhisperer提供了一項(xiàng)補(bǔ)全注釋的功能
可以根據(jù)上下文自動為代碼生成注釋,看效果還不錯。這一功能對于不喜歡編寫注釋的開發(fā)者來說是非常有用的,可以輕松地為自己的代碼添加有意義的描述,而無需費(fèi)時費(fèi)力地手動編寫注釋。
實(shí)戰(zhàn)2:
CodeWhisperer提供了一項(xiàng)自動生成代碼的功能
寫了一個注釋,想寫個冒泡排序。自動幫我生成代碼了。這個功能非常方便,特別是在你知道要實(shí)現(xiàn)什么功能但不確定具體的實(shí)現(xiàn)方式時
下面給大家演示一下:
注釋寫完之后,會自動生成代碼建議片段,可以選擇插入代碼:insert?code?
或者上下選擇其他代碼片段
選擇insert?code?
CodeWhisperer在方法體內(nèi)提供了自動換行的功能。當(dāng)你在方法體內(nèi)按下回車鍵時,CodeWhisperer會自動生成后續(xù)的代碼片段,以便你能夠更加高效地編寫代碼,這里的上下文處理得很不錯。
CodeWhisperer自動生成的代碼,不僅帶有可讀性高的注釋,而且還遵循了標(biāo)準(zhǔn)化代碼風(fēng)格,對于代碼強(qiáng)迫癥的我來說,愛了。
代碼更容易理解和維護(hù),同時也提高了代碼的可讀性和可維護(hù)性,不錯不錯。
下面是完整的代碼:
package?com.xiaoxuzhu.csdn;
public?class?TestCodeWhisperer?{
????/**
?????*?寫個冒泡排序
?????*/
????public?static?void?main(String[]?args)?{
????????int[]?arr?=?{1,?2,?3,?4,?5,?6,?7,?8,?9,?10};
????????int?temp?=?0;
????????for?(int?i?=?0;?i?<?arr.length?-?1;?i++)?{
????????????for?(int?j?=?0;?j?<?arr.length?-?1?-?i;?j++)?{
????????????????if?(arr[j]?>?arr[j?+?1])?{
????????????????????temp?=?arr[j];
????????????????????arr[j]?=?arr[j?+?1];
????????????????????arr[j?+?1]?=?temp;
????????????????}
????????????}
????????}
????????for?(int?i?=?0;?i?<?arr.length;?i++)?{
????????????System.out.println(arr[i]);
????????}
????}
}
運(yùn)行結(jié)果:
實(shí)戰(zhàn)3:
實(shí)戰(zhàn)2只是一個簡單的排序算法,要求也不高?,F(xiàn)在來升級下實(shí)驗(yàn)。輸入一段話,大致內(nèi)容要求是:需要求解每次劃動窗口的最大值。
給你一個整數(shù)數(shù)組?nums,有一個大小為?k?的滑動窗口從數(shù)組的最左側(cè)移動到數(shù)組的最右側(cè)。你只可以看到在滑動窗口內(nèi)的?k?個數(shù)字。滑動窗口每次只向右移動一位。
?要求返回?滑動窗口中的最大值?。
選擇insert?code ,在main方法里調(diào)用了一個方法,這個方法暫時不存在,IDE報(bào)紅色了。
回車,觸發(fā)CodeWhisperer提供了自動換行的功能。
選擇insert?code?
這里的上下文處理很優(yōu)秀,生成了上面需要的方法。
最后生成完整的代碼。
package?com.xiaoxuzhu.csdn;
public?class?TestCodeWhisperer2?{
????/**
?????*?給你一個整數(shù)數(shù)組?nums,有一個大小為?k?的滑動窗口從數(shù)組的最左側(cè)移動到數(shù)組的最右側(cè)。你只可以看到在滑動窗口內(nèi)的?k?個數(shù)字?;瑒哟翱诿看沃幌蛴乙苿右晃弧?/span>
?????*?<p>
?????*?返回?滑動窗口中的最大值?。
?????*/
????public?static?void?main(String[]?args)?{
????????int[]?nums?=?{1,?3,?-1,?-3,?5,?3,?6,?7};
????????int?k?=?3;
????????int[]?res?=?maxSlidingWindow(nums,?k);
????????for?(int?i?:?res)?{
????????????System.out.println(i);
????????}
????}
????public?static?int[]?maxSlidingWindow(int[]?nums,?int?k)?{
????????int[]?res?=?new?int[nums.length?-?k?+?1];
????????int?index?=?0;
????????for?(int?i?=?0;?i?<?nums.length?-?k?+?1;?i++)?{
????????????int?max?=?Integer.MIN_VALUE;
????????????for?(int?j?=?i;?j?<?i?+?k;?j++)?{
????????????????max?=?Math.max(max,?nums[j]);
????????????}
????????????res[index++]?=?max;
????????}
????????return?res;
????}
}
生成的代碼簡潔,而且執(zhí)行的結(jié)果是正確的
實(shí)驗(yàn)的過程很絲滑,而且ai的理解能力還是很強(qiáng)的,能正確地理解虛竹哥的意思并生成對應(yīng)的代碼。
實(shí)戰(zhàn)4:
求解每次劃動窗口的最大值還不夠難,再從leetcode中選一個難度級別比較高的算法題目,看ai能不能理解,并進(jìn)行正確解答。
選一個動態(tài)規(guī)劃里,困難級別的:
題目是:
給你一個只包含?'('?和?')'?的字符串,找出最長有效(格式正確且連續(xù))括號子串的長度。
開始人工智能寫代碼
按提示內(nèi)容,不斷插入代碼insert?code?
最終生成代碼:
跑一下結(jié)果,為2,是對的。
這樣就夠了嗎?不!雖然我們已經(jīng)成功生成了代碼,但是我們不能就此滿足。為了保證代碼質(zhì)量,我們可以使用LeetCode進(jìn)行測試。
復(fù)制代碼到leetcode里,然后先運(yùn)行下
過啦~
提交,我們看下提交記錄:
擊敗100%~?
此時此刻,有個BGM響起:無敵是多么,多么寂寞~
實(shí)戰(zhàn)5:
前面的四個小實(shí)戰(zhàn)只是為了試探我們Amazon?CodeWhisperer的能力,現(xiàn)在是時候挑戰(zhàn)更高難度的任務(wù)了——編寫一個猜數(shù)字的小游戲,看看是否能夠在更復(fù)雜的上下文中理解并完成它。
下面是游戲規(guī)則:
我們要編寫一個猜數(shù)字的游戲。在這個游戲中,計(jì)算機(jī)會生成一個1到188之間的隨機(jī)數(shù),并等待用戶在控制臺輸入數(shù)字進(jìn)行猜測。如果用戶猜大了,程序會提示用戶數(shù)字太大了;反之,如果用戶猜小了,程序會提示用戶數(shù)字太小了。
提示詞:隨機(jī)生成一個1~188以內(nèi)的數(shù)字
提示詞:寫個標(biāo)記,默認(rèn)false
提示詞:創(chuàng)建一個Scanner對象
提示詞:在循環(huán)中,循環(huán)條件是flag為true終止循環(huán),先提示?用戶進(jìn)行猜數(shù)字,用戶輸入數(shù)字,判斷guessNumber的值與number是否一樣,如果一樣,就設(shè)置flag為true.跳出循環(huán);?判斷guessNumber的值與number是否一樣?,如果大了提示大了,小了提示小了。
提示詞:最后生成提示:恭喜了,猜對了
生成的完整代碼,跑起來試試:
注意事項(xiàng)
Amazon CodeWhisperer的“Amazon?Toolkit”插件對idea的版本支持有限制,我從2019版本開始嘗試,有不兼容問題,后面查找了資料,是從2022.1版本及以上才支持的。
三、總結(jié)
隨著時間的推移,人工智能技術(shù)迅猛發(fā)展。智能編程助手如Amazon?CodeWhisperer大大提高了開發(fā)效率和代碼質(zhì)量。CodeWhisperer是強(qiáng)大的智能編程助手,可幫助開發(fā)者更快、更安全地構(gòu)建應(yīng)用程序。
CodeWhisperer解決了開發(fā)中的常見痛點(diǎn)。它可以快速生成準(zhǔn)確的代碼建議,節(jié)省時間。對于不熟悉的編程語言,它提供準(zhǔn)確的代碼建議,避免語法錯誤和問題。此外,CodeWhisperer幫助開發(fā)者及早發(fā)現(xiàn)和修復(fù)安全漏洞,提高軟件安全性和穩(wěn)定性。它還消除打字錯誤和典型錯誤,提高代碼準(zhǔn)確性。
CodeWhisperer具有許多優(yōu)勢。它提高了工作效率和生產(chǎn)力,可以自信地進(jìn)行編碼并提供相關(guān)開源項(xiàng)目信息。它支持多種編程語言和流行的IDE,提供高效便捷的開發(fā)體驗(yàn)。開發(fā)者可以隨時使用或關(guān)閉它,并免費(fèi)使用,降低了成本。
CodeWhisperer適用于多種場景,可以快速生成樣板代碼,幫助在不熟悉的編程語言中進(jìn)行編碼,檢測安全漏洞,消除打字和典型錯誤,并減少重復(fù)編碼的工作。它還適用于其他常規(guī)任務(wù)和使用不熟悉的API的場景。
在實(shí)際體驗(yàn)中,安裝和使用Amazon?CodeWhisperer的插件非常簡單,能夠與流行的IDE無縫集成。虛竹哥在使用IDEA安裝了Amazon?Toolkit插件,并成功使用了CodeWhisperer生成了一些代碼。實(shí)驗(yàn)的過程由簡單注釋生成到復(fù)雜的算法解答,最后實(shí)驗(yàn)寫一個小游戲,CodeWhisperer準(zhǔn)確地理解了虛竹哥的意圖并生成了相應(yīng)的代碼。
此次的體驗(yàn)很愉快,也有收獲??梢酝度腴_發(fā)生產(chǎn)中,減少開發(fā)量,讓我有更多時間投入更有價值的工作上。
大家也可以去體驗(yàn)體驗(yàn),也歡迎找虛竹哥溝通分享心得。
現(xiàn)在還有個活動,大家可以去參加:https://dev.amazoncloud.cn/experience/codewhisperer-2?sc_medium=corecontent&sc_campaign=product&sc_channel=CSDN文章來源:http://www.zghlxwxcb.cn/news/detail-712971.html
我是虛竹哥,我們明天見~文章來源地址http://www.zghlxwxcb.cn/news/detail-712971.html
到了這里,關(guān)于搭建智能橋梁,Amazon CodeWhisperer助您輕松編程的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!