GitHub Copilot和Tabnine Pro的實用差別
這兩個都是大家耳熟能詳的生成式AI Coding的助手,究竟有怎樣的差別,讓我選擇GitHub Copilot而不選擇Tabnine Pro呢?兩者在價格上其實都差不多,使用的也都是Open AI的模型。
使用的方式
兩者使用的方式都很類似,比如C#就直接打下 //生成一個跑一萬次的迴圈
這樣AI就會照提示幫忙生成一個迴圈做10000次,理論上要中文也支持,因為OpenAI的自然語言模型有支援中文(簡體繁體都有)。
那這種使用方式會有怎樣的差別呢?
產生的速度
我測試Tabnine Pro是在新的Mac Studio M2 Max的版本上測試,生成Code應該是呼叫雲端的API所以幾乎是秒產生,兩個都是一樣。
在Windows上GitHub Copilot會有延遲一點,但在Mac Studio上不會有任何延遲,至於Tabnine Pro我沒有在Windows上試過。
IDE都適用JetBrain的Rider或者Webstrom。
生成的品質
這點就差很多了,Tabnine Pro產生垃圾代碼的機率高很多,例如我用中文下:
//產生一個一加到10000的函數
Tabnine可能就給一個迴圈做10000次然後每次加1而不是加i,這種程式碼是完全不能用的,要自己手動修改1成i才是1+2+3+…..+100000。
GitHub Copilot則是可以理解的寫出這種函數,在中文的理解完全沒錯。
如果是英文下指令,正確的英文語法Tabnine Pro就沒有問題,但會看我文章的我想大家不會想要「正確的」英文下指令,因為「正確的」包含文法也要正確,單字也要正確。
如果要中文下指令AI產生幾乎完全正確那就只能用GitHub Copilot而已。
AI的局限
GitHub Copilot的局限性還是有的,比如他不能產生一些很複雜的代碼,或者有版權性質的代碼。
比如你要AI產生一個RAR解壓縮的代碼,它只有兩種狀況,一種他會開始
//產生一個RAR解壓縮的代碼
//產生一個ZIP解壓縮的代碼
//產生一個GZIP解壓縮的代碼
這類的以此類推幫你寫Comment。
另一種就是直接不回應你的要求,當沒看Commnet的指令。
GitHub Copilot好處
有很多MIT License的代碼與使用它都有訓練過,如我前陣子要在Angular加一個轉MS Excel檔案並下載的代碼。
要用到ExcelJS這個程式庫,因為ExcelJS是MIT License的,所以他就有訓練過怎樣使用這個函式庫。
要寫的時候他就直接幫我寫好「全部」的使用代碼,只有少數在Header要微調,甚至下指令要他把第一列的Header設定成固定的他也會。
這個Tabnine Pro因為我下的是中文語法,它就開始產生垃圾,然後我就刪掉它了,還好我那時候是在試用期間內。
GitHub Copilot明顯在Fine-Turning上面贏過Tabnine Pro,更不用說語言的理解能力和代碼產生的品質。
結論
我自己目前是付費使用Github Copilot預繳一年期的。我也並不是想要幫她推銷,只是純粹分享好用的東西。
但使用這個的同時,要思考一個問題:如果AI會幫你Coding,在產生程式碼之前傳送了什麼東西到OpenAI的伺服器?如果你的Code是有商業機密,那一定不能使用Copilot當助手,甚至得讓公司跟Github談是否有自己架設伺服器的方案。
我因為公司規模不大,機密的價值沒有高到幾百幾千萬,所以已使用無妨,省時間比較重要。但如果是在大企業裡面有資安考量就要考慮這點了。