寫注釋自動出代碼?!在Cocos中試水AI編程工具Copilot,摸魚神器or失業(yè)警告?
去年的某一天,Cocos 的開發(fā)者交流群里突然爆發(fā)出一陣驚嘆,有人直呼“飯碗不保”,有人憂慮版權(quán)和保密問題,也有人給出了積極的反饋——
>>上下滑動查看更多
大家在討論的 Copilot 是 OpenAI 與 GitHub 聯(lián)合推出的一個 AI 自動編程工具,能根據(jù)上下文自動生成代碼,供編程者參考使用。Copilot 是利用網(wǎng)絡(luò)中現(xiàn)有的公開數(shù)據(jù),尤其是開源在 Github 上的代碼,然后基于機(jī)器學(xué)習(xí)算法訓(xùn)練出來的,理論上支持所有編程語言。
Copilot 究竟有多聰明?可以用?Copilot 編寫 Cocos 代碼嗎?讓 AI 去寫代碼是否靠譜?來看 Cocos 布道師熱心網(wǎng)友蔣先生、開發(fā)者 godxkey、插件 Cocos Inspector 作者 阿chuan 的使用經(jīng)驗(yàn)與感受。
熱心網(wǎng)友蔣先生的 Copilot 使用嘗試
申請與接入
Copilot 目前已集成在 VSCode 中,但還處于測試階段,若想試用需要在 Copilot 官網(wǎng)上進(jìn)行申請,一般1-2天左右即可通過申請。申請和接入 VSCode 的詳細(xì)流程可參考 godxkey 的分享:
https://forum.cocos.org/t/topic/133944
那么,Copilot 在實(shí)際開發(fā)中如何使用?阿chuan 從用 Cocos Creator + TypeScript 編寫游戲、以及用 Electron + JavaScript 編寫 Cocos 插件兩方面進(jìn)行了嘗試,結(jié)果很是驚喜:在大部分情況下,Copilot 的 AI 很清楚你要做什么,通常會給出比較滿意的建議。
以下是 阿chuan 的分享實(shí)錄:
Cocos Creator + TypeScript
函數(shù)推導(dǎo)

可以看到,Copilot 很容易從函數(shù)名和上下文中知道你想干什么并且給出建議代碼。
接下來我們讓 label 變成紅色:

變成透明:

設(shè)置文本:

添加觸摸事件偵聽:

跳轉(zhuǎn)場景:

跳轉(zhuǎn)場景并添加回調(diào),厲害的是,Copilot 自動建議額外的 Complete 回調(diào):

計算節(jié)點(diǎn)距離,這個就很有用了如果不熟悉 Cocos 相關(guān) API 的同學(xué),只要寫好函數(shù)名,Copilot 自動幫你找到合適的 API,并給出完整代碼:

自動找到合適 API 畫圓:

添加鍵盤事件:

添加 ScrollView 事件:

添加 Slide 事件:

注釋推導(dǎo)
輸入注釋://get world pos, 自動給出合適的代碼,厲害了:

而根據(jù) godxkey 的測試,中文注釋同樣可以自動生成代碼:

上下文實(shí)時建議
剛編寫一個 let ani,Copilot 就自動給出了后面的代碼:

然后繼續(xù)編寫 ani.on,又自動給出 'finished’事件代碼:

但是 Copilot 不會提供箭頭函數(shù)的建議,可能是剛使用,Copilot 還不熟悉我的編程風(fēng)格。在注釋中要求后,Copilot 給出了:

但是,把注釋中的 Finish 改成 Last Frame 之后,AI 仍然給出 finished 事件的代碼,不知道是 AI 不完善,還是使用時間太短,還需要與開發(fā)人員互相磨合與調(diào)教。
Electron + JavaScript
最后嘗試一下用 Electron + JavaScript 編寫 Cocos Inspector 插件。簡單的函數(shù)推導(dǎo)看起來也還不錯:


但奇怪的是,可能因?yàn)?阿chuan 編寫 Cocos Inspector 使用的是 JavaScript,因此在很多情況下 Copilot 并不能有效推導(dǎo),甚至 AI 對 Electron 似乎也不熟,時常無法給出合理建議。
總結(jié)
Copilot 并不完美,但是合理調(diào)教下,還是可以提供有益的幫助,就像 Copilot 官網(wǎng)所說的一樣,似乎有一個 AI 在和你結(jié)對編程(Pair Programming)。
AI?可能會分析開發(fā)者使用的框架,這會降低開發(fā)者使用框架的門檻,許多 API 不需要查看文檔,直接通過注釋或者函數(shù)名即可推導(dǎo)出來。
Copilot 目前可能對偏強(qiáng)類型語言的分析更加準(zhǔn)確,比如 TypeScript、C#?等等。
AI 編程的出現(xiàn),讓開發(fā)者似乎感覺到了危機(jī),對框架或引擎的熟悉已經(jīng)不再成為相對新手開發(fā)者的絕對優(yōu)勢,所以 阿chuan 覺得,開發(fā)者要開始多探索 AI 所不能觸及的領(lǐng)域了。
無論如何,Copilot 都是一個能幫助編程者提升效率的工具,但目前它的發(fā)展還遠(yuǎn)遠(yuǎn)未達(dá)到盡善盡美,因此勢必不能完全依賴 Copilot。除此之外,隨之可能產(chǎn)生的侵權(quán)、安全風(fēng)險等問題也需要大家持續(xù)關(guān)注。
GitHub?Copilot 官網(wǎng)
https://copilot.github.com/
點(diǎn)擊文末【閱讀原文】前往論壇專貼
https://forum.cocos.org/t/topic/133714




