如果你還沒有嘗試過CoPilot、ChatGPT等工具來輔助開發(fā)工作,未來的5年,你可能會(huì)很快被行業(yè)所淘汰。這是因?yàn)槟切┥朴诶肁IGC來輔助編程的人可以以十倍于你的速度開發(fā)出相應(yīng)的代碼,而你卻沒有這項(xiàng)技能。
顛覆傳統(tǒng)初級(jí)程序員培訓(xùn)和輔導(dǎo)過程的大模型出現(xiàn),使得技術(shù)和經(jīng)驗(yàn)擁有了“平權(quán)”的機(jī)會(huì)。
試想,過去初級(jí)程序員在入職時(shí)通常是由師傅給出一個(gè)任務(wù)需求,教授大致的思路,然后在初級(jí)程序員編寫代碼的過程中進(jìn)行培訓(xùn)和糾正,根據(jù)不同的問題提供不同的解決方案,直到初級(jí)程序員掌握這些經(jīng)驗(yàn)。
然而,隨著大模型的出現(xiàn),這個(gè)過程發(fā)生了徹底的改變。大模型本身擁有廣泛的知識(shí),并且具備一些基本的推理能力。它可以通過無數(shù)次的實(shí)踐,學(xué)習(xí)公司中各種代碼和業(yè)務(wù)定義。與師傅相比,大模型所遇到的場(chǎng)景要多得多。同時(shí),根據(jù)開發(fā)者的需求和目標(biāo),它還能夠提供可能的答案。
這個(gè)過程就好像我們得到了一個(gè)無所不能的"導(dǎo)師",不僅可以立即回應(yīng)我們的需求,還可以直接為我們撰寫可能的代碼供我們參考學(xué)習(xí),使我們這些初級(jí)程序員能夠快速掌握撰寫代碼的技能。通過自己的學(xué)習(xí)和調(diào)整,我們可以提交出遠(yuǎn)遠(yuǎn)超過個(gè)人水平的代碼,供他人進(jìn)行評(píng)審。
因此,聰明如你,我們沒有理由不使用大型模型來提高我們的研發(fā)效率。
目前AIGC 自動(dòng)化編程工具林林總總,流行的工具包括ChatGPT和CoPilot,面對(duì)不同的業(yè)務(wù)場(chǎng)景中,如何選擇合適的工具來幫助自己提效呢?
優(yōu)點(diǎn)
缺點(diǎn)
場(chǎng)景
人
邏輯復(fù)雜縝密,可以完成比較復(fù)雜的開發(fā)任務(wù)
寫代碼效率低
成本高
復(fù)雜業(yè)務(wù)邏輯
核心引擎
CoPilot
整合在開發(fā)工具中,快速復(fù)用/書寫類似代碼
準(zhǔn)確率不高,生成代碼段比較短,邏輯簡單
輔助編程就,復(fù)用代碼
ChatGPT
可以編寫較復(fù)雜的業(yè)務(wù)代碼,特別是有類似案例的情況下
需要code-review,錯(cuò)誤隱藏的更深嗎,缺乏創(chuàng)造性
有類似場(chǎng)景代碼,自動(dòng)生成新場(chǎng)景代碼
不難發(fā)現(xiàn),人類最適合從事具有挑戰(zhàn)和創(chuàng)新的架構(gòu)類產(chǎn)品或者某個(gè)新業(yè)務(wù)場(chǎng)景的代碼開發(fā)。如果其中某些部分可以復(fù)用或者使用相似的算法,可以利用CoPilot快速提高工作效率。而ChatGPT則適用于自動(dòng)生成類似場(chǎng)景的代碼,稍加修改即可使用。。
回到國內(nèi),國內(nèi)軟件開發(fā)領(lǐng)域大模型也在不斷深化落地。以飛算SoFlu軟件機(jī)器人近日重磅上線FuncGPT(慧函數(shù))功能為例。作為飛算SoFlu軟件機(jī)器人的一個(gè)重要組成部分,F(xiàn)uncGPT(慧函數(shù))支持所有類型函數(shù)創(chuàng)建。通過自然語言描述JAVA函數(shù)需求,實(shí)時(shí)生成高質(zhì)量、高可讀性的Java函數(shù)代碼。生成代碼可直接復(fù)制到IDEA,或一鍵導(dǎo)入Java全自動(dòng)開發(fā)工具函數(shù)庫。同時(shí)FuncGPT(慧函數(shù))采用代碼編寫最佳實(shí)踐及大規(guī)模機(jī)器聯(lián)合訓(xùn)練的方式,致力于通過AIGF(AI-Generated Function)賦能軟件開發(fā),為中國軟件開發(fā)者提供全棧式全流程軟件開發(fā)的最佳體驗(yàn)。
具體來說,F(xiàn)uncGPT(慧函數(shù))具備以下五大能力:
● 自然語言:通過自然語言即可生成函數(shù),降低軟件開發(fā)門檻。
● 秒級(jí)函數(shù)開發(fā):全自動(dòng)秒級(jí)開發(fā)函數(shù),秒級(jí)完成,效率千倍提升。
● 一站式函數(shù)開發(fā)應(yīng)用:函數(shù)生成即可直接應(yīng)用,效率、安全有保障。
● 質(zhì)量可靠:生成的函數(shù)代碼符合業(yè)界規(guī)范、具備良好的可讀性,符合最優(yōu)解。
● 靈活生成:可以根據(jù)開發(fā)人員的具體需求生成并支持調(diào)整和修改。
FuncGPT(慧函數(shù))現(xiàn)已開放免費(fèi)使用,點(diǎn)擊鏈接可以直接解鎖SoFlu軟件機(jī)器人更多特色功能。鏈接:http://suo.im/aREPi
但我們必須承認(rèn),盡管以ChatGPT和Co-Pilot代表的AI工具可以輔助編程,但它們并非萬能的。目前,大模型生成代碼仍面臨許多挑戰(zhàn):
1、精確度的問題;
2、無法進(jìn)行代碼審查。
3、無法自動(dòng)化進(jìn)行測(cè)試;
4、無法擔(dān)責(zé)。
精度度方面,即使是像ChatGPT4這樣的大型模型也有可能出現(xiàn)錯(cuò)誤,其準(zhǔn)確率也只有90%,因此我們應(yīng)該盡量簡化代碼編寫的過程,以免產(chǎn)生完全錯(cuò)誤的代碼。當(dāng)大型模型快速生成代碼后,人類進(jìn)行的代碼審核可能無法及時(shí)進(jìn)行,因?yàn)闄C(jī)器無法確定最終實(shí)現(xiàn)業(yè)務(wù)邏輯的代碼是否正確。另一方面,如果由大型模型來進(jìn)行代碼審核,你會(huì)發(fā)現(xiàn)每次都會(huì)提出各種不同的改進(jìn)點(diǎn),但實(shí)際上這些改進(jìn)點(diǎn)都是無關(guān)緊要的,無法確定邏輯的正確性。
大型模型在自動(dòng)化測(cè)試案例和自動(dòng)化測(cè)試方面也存在瓶頸。"TestPilot"是在學(xué)術(shù)界非常活躍的一個(gè)項(xiàng)目。大家可以參考康奈爾大學(xué)的兩篇有趣的文章,《大語言模型是有限執(zhí)行測(cè)試者:探索基于LLM的通用錯(cuò)誤再現(xiàn)》和《使用大語言模型進(jìn)行自適應(yīng)測(cè)試生成》,雖然這些文章對(duì)工程化使用還有一定距離。
當(dāng)然,在自動(dòng)化編程中還存在最后也是最難的一道關(guān)卡——責(zé)任問題,就像自動(dòng)駕駛一樣。即使達(dá)到L5級(jí)別,如果出現(xiàn)問題,那么責(zé)任應(yīng)該由誰來承擔(dān)呢?舉個(gè)例子,WhaleOps在實(shí)現(xiàn)了Txt2SQL功能之后,許多用戶提出了一個(gè)問題:為什么不將SQL執(zhí)行結(jié)果直接轉(zhuǎn)化為業(yè)務(wù)部門所需的最終結(jié)果呢?這已經(jīng)不是個(gè)技術(shù)問題,而是一個(gè)哲學(xué)問題了。不論是現(xiàn)在的ChatGPT準(zhǔn)確率達(dá)到了90%,還是假設(shè)未來大模型能夠達(dá)到99.9999%的準(zhǔn)確率,你敢直接用一句話讓它自動(dòng)計(jì)算全公司的工資并自動(dòng)與銀行對(duì)接發(fā)工資嗎?如果出了問題,你覺得是誰的責(zé)任?我們永遠(yuǎn)不能指望技術(shù)可以解決所有的業(yè)務(wù)問題,大模型也不例外。
目前,我們正處于大型模型自動(dòng)編程的初級(jí)階段。然而,相信在未來的3-5年里,自動(dòng)化輔助編程將成為我們這一代開發(fā)者的標(biāo)配工具。
如果在未來幾年內(nèi),你在研發(fā)過程中仍然只會(huì)進(jìn)行CRUD操作,而不懂得如何充分利用大模型來擴(kuò)展自己的經(jīng)驗(yàn)和業(yè)務(wù)理解,那么你將很快被那些懂得大模型編程的程序員所取代。他們可以將你的經(jīng)驗(yàn)和業(yè)務(wù)理解擴(kuò)大十倍甚至百倍。不要等到35歲才發(fā)現(xiàn),你已經(jīng)成為那被淘汰的9個(gè)人中的一個(gè)。
當(dāng)然,盡管有些言之過早,但大模型在編程提效方面的趨勢(shì)是不可阻擋的。飛算SoFlu軟件機(jī)器人作為自動(dòng)化編程方面的探索者,會(huì)不斷深耕及沉淀,不斷改進(jìn)開發(fā)領(lǐng)域中人與AI之間的關(guān)系。最終,這將使程序員、人工智能和技術(shù)研發(fā)過程更有效地為業(yè)務(wù)服務(wù)。