AI 程式設計助手測評:GitHub Copilot vs 豆包 MarsCode

阮一峰發表於2024-07-03

一、引言

AI 怎麼用於程式設計?

目前有各種嘗試,最激進的大概是 Vercel 公司的 v0.dev

你告訴它,想要什麼網站,它就給你幾張設計圖。你選一張,它就生成寫好的網頁。

這很有未來感,想要什麼程式,機器幫你寫。但是實際上,它只能生成網頁 UI(使用者介面),無法生成互動指令碼,並且其他的 UI(比如手機 App 頁面),它都無法生成。

這反映了 AI 的侷限,至少現階段,AI 無法取代程式設計師,只能充當程式設計助手。

根據我的使用體會,作為程式設計助手,AI 的作用非常大,能夠大大節約程式設計師的時間,顯著提高程式設計效率和程式碼質量。

今天,我就來測評兩款 AI 程式設計助手,看看孰強孰弱,順便也作為一個入門教程,向還沒用過的同學,展示它們的用法。

大家看了以後,就能明白,為什麼程式設計已經離不開 AI 了,它真的能讓程式設計師如虎添翼。

二、GitHub Copilot 和豆包 MarsCode 簡介

我要測評(或者說介紹)的兩款 AI 程式設計助手,分別是 GitHub Copilot豆包 MarsCode

GitHub Copilot 是最早出現的 AI 程式設計助手,也是市場佔有率和知名度最高的一個。

它是微軟出品,底層是 OpenAI,又依託著世界最大的程式設計師社群,自然是實力非凡。

豆包 MarsCode 是基於豆包大模型打造的智慧開發工具。

它的背後是位元組跳動,本來是內部工具,據說位元組超過70%的工程師都在用,每月貢獻百萬行量級的程式碼。

6月26日,它正式在北京對外發布,外界可以免費使用,屬於新鮮出爐。

它們都來自大廠,有足夠的代表性,而且功能相近,下面就來看看,國產 AI 能否替代國外主流產品。

三、使用環境

AI 程式設計助手一般不單獨使用,而是作為 IDE(整合開發環境)的外掛,在編輯器介面提供各種 AI 功能。

我選擇的 IDE 是目前最流行的 VS Code。此外,豆包 MarsCode 還支援 Jetbrains IDE,Copilot 則支援更多。

大家在 VS Code 外掛市場搜尋 Copilot 和 MarsCode,就能找到它們。下面是安裝後的頁面。(上圖為 Copilot,下圖為豆包 MarsCode,後面都是這個順序。)

如果你沒有 VS Code,甚至也沒有其他 IDE,問題也不大。豆包 MarsCode 提供免費的雲 IDE(下圖),無需下載和安裝,直接在瀏覽器使用,並且內建數十款開發模板,還可以拉取 GitHub 倉庫,用起來很方便。

GitHub 也有云 IDE,就是它的 CodeSpace,裡面也能用 Copilot。不過,每月使用60小時之後,就要收費,這裡就不推薦了。

四、聊天功能

AI 程式設計助手的主要使用者介面,就是一個聊天視窗,使用者向它提出各種問題。

我首先問了一個問題"什麼是 CAP 定理?",測一下它們的聊天功能。

可以看到,它們的回答都是準確的、可用的,Copilot 的格式編排稍微好一點。

第二個問題"請推薦學習 JavaScript 的書籍",兩者的回答差不多。

聊天的問題不限於程式設計,什麼樣的問題都可以問,比如"2025年春節是什麼時候",它們的回答也沒問題。

不過,這個功能的日常使用場景,應該是查詢軟體文件,真的好用。

五、程式碼生成

接下來,就來測 AI 程式設計助手的最主要功能:自動程式碼生成,讓它來寫程式碼。

使用很簡單,只要有按鍵輸入,它就會自動建議後面的程式碼是什麼

你可以將其當作參考,也可以按下 Tab 鍵,接受它為正式程式碼。如果想逐個單詞確認,按下 Ctrl + 右箭頭(Mac 為 Cmd + 右箭頭)。

我讓 AI 生成一個檢驗電話號碼的函式。

上面的程式碼,除了第一行"// 驗證電話號碼"是我輸入的,後面都是 AI 生成的。

這段程式碼完全正確,並且還有兩個地方令人很滿意。(1)因為檔案的字尾名是 JS,所以它們自動生成的是 JavaScript 程式碼;(2)它們驗證的是中國的手機號碼,而我並沒有明確給出這一點,它們是自己推斷的。

有點奇怪的是,Copilot 和豆包 MarsCode 給出的程式碼是一樣的。莫非它們使用同樣的材料訓練?

我又加了一個條件,要求包括手機和座機兩種情況。它們給出的程式碼還是(基本)一樣。

這個環節,它們打平。另外,如果對給出的實現不滿意,Copilot 可以按下 Ctrl + Enter,會有多種實現供選擇(下圖)。

豆包 MarsCode 則是在程式碼建議時,有一個浮動工具欄,可以切換多種實現(下圖的箭頭)。

值得一提的是,豆包 MarsCode 還有一個特色功能"程式碼補全 Pro",不需要手動給出提示,根據現有程式碼,自動預測下一個改動點,並給出推薦程式碼。

這個功能需要自己在設定裡面開啟(下圖)。

開啟以後,它就會加強程式碼預測。首先,在期望觸發程式碼推薦的地方,按下 Ctrl + Shift + Enter 主動觸發推薦,然後你按下 Tab 採納。

這時,它會預測下一個改動點,點選 Tab 就可以跳轉到那裡。這在程式碼修改的場景中非常有用,修改了一個地方,它幫你跳到下一個(預測的)改動點,並給出推薦程式碼。普通的程式碼補全做不到這一點。

六、生成註釋,程式碼解釋

除了生成程式碼,AI 的另一個重要作用,就是生成程式設計文件,也就是程式碼的文字說明。

文件功能主要有兩種:註釋和程式碼解釋。首先,Copilot 的註釋需要自己手動生成。

豆包 MarsCode 則在程式碼上方有生成註釋的快捷按鈕。

點選後會喚起/doc命令,用起來相對方便一點。

至於程式碼解釋功能,我覺得相比之下,豆包 MarsCode 更好一些,Copilot 太冗長了,有點不易讀。

七、其他功能

(1)程式碼翻譯

它們都能夠將一種語言的程式碼,翻譯成另一種語言。

我試了 JS 程式碼翻譯成 Python,沒有任何問題。豆包 MarsCode 還會自動將翻譯後的程式碼,儲存成當前目錄下的一個單獨檔案。

(2)生成單測

單元測試寫起來很麻煩,AI 能夠自動生成,真是省事不少。

同一段程式碼,Copilot 生成了4個測試用例,豆包 MarsCode 生成了5個。

並且,豆包 MarsCode 對測試用例有文字總結(下圖),這很有用,可惜 Copilot 沒有。

我認為,在這個環節,豆包 MarsCode 做得比較好。

(3)修正錯誤

AI 還可以自動修改報錯的程式碼。如果測試用例或者自動構建沒有透過,它會解釋報錯的原因,並給出修改建議。這裡就不舉例了。

八、總結

經過上面的一系列測試,兩者的表現總體相差不大。我認為,國產 AI 程式設計助手完全可以替代 GitHub Copilot,而且在某些細節上做得更好。

GitHub Copilot 的優勢在於功能較多(比如呼叫終端命令),而且它的訓練材料可能比較多,在一些小眾語言上也許表現更好一點。

但是,它是收費的,每月10美元,而 豆包 MarsCode 是免費的,單單這一點就值得推薦後者。

目前,豆包 MarsCode 只是一個初期的版本,後面會不斷增加功能。但是,對於大多數程式設計師,現有功能已經完全夠用了。

另外,我在使用中明顯感到,豆包 MarsCode 的響應速度更快,畢竟伺服器是在國內。相比 Copilot 的境外伺服器,這也是一個優勢。

總之,豆包 MarsCode 值得大家試用,體驗一下國產 AI 的進步。如果你從來沒接觸過 AI 程式設計助手,就更不應該錯過這種提高效率的程式設計神器了。

(完)

相關文章