作者 | Anirudh VK
譯者 | 徐杰承
自動編碼平臺現(xiàn)在正處于程序員新興技術(shù)的最前沿,為開發(fā)者編寫代碼片段提供了一種全新的人工智能驅(qū)動的替代方案。尤其是在微軟GitHub Copilot平臺的推動下,這一進(jìn)步目前正在慢慢改變?nèi)蜷_發(fā)人員的工作模式。
近年來許多編碼的替代方案,如無代碼和低代碼平臺,都非常適合非技術(shù)用戶。雖然此類工具在技術(shù)圈內(nèi)引起了一些“鐵桿程序員”的鄙夷和憤怒,但我們不得不承認(rèn)的是,即便是最有經(jīng)驗的編碼老手也能夠從自動編碼算法中受益,因為它將極大地減少開發(fā)人員實際需要鍵入的代碼量。
特斯拉和OpenAI的前人工智能總監(jiān)Andrej Karpathy在他的推文就曾表達(dá)了對自動編碼工具的感情:
“Copilot大大加快了我的編碼速度,在嘗試使用Copilot后,我很難想象再回到‘手動編碼’將會是怎樣的一種體驗。雖然目前我仍在學(xué)習(xí)使用它,但它已經(jīng)能夠幫助我編寫約80%的代碼,并且能夠保持約80%的準(zhǔn)確性。我想說的是,在使用Copilot進(jìn)行工作時,我甚至沒有真正的進(jìn)行編碼?!?/p>
Andrej Karpathy的言論也得到了大多數(shù)開發(fā)人員的認(rèn)可,由于自動編碼平臺能夠幫助開發(fā)者節(jié)省大量編碼時間,以至于他們能夠?qū)⒏嗟木ν度胗谔幚響?yīng)用程序的其他問題,因此自動編碼平臺也在短期內(nèi)以驚人的速度在全世界范圍內(nèi)被快速采用。以GitHub Copilot為例,在推出在一個月內(nèi),CitHub Copilot便吸引了超過40萬的付費訂閱(10美元/月、100美元/年)。然而隨著這些不斷改進(jìn)的工具開始承擔(dān)更多的編碼任務(wù),一個新的問題也出現(xiàn)在了我們面前:開發(fā)人員是否會因為依賴自動編碼工具而逐漸喪失編碼技能?
1、侵蝕編碼能力
老實說,任何使用過自動編碼類工具的人都知道它們所自動編寫的代碼并非完美。雖然建議的代碼片段的語法可能沒有任何問題,但通常此類工具的編寫方式效率低下,可能會導(dǎo)致依賴項問題。一位來自YCombinator新聞?wù)搲挠脩鬉ryamaan對使用Replit提供的自動編碼平臺“Ghostwriter”發(fā)表了如下意見:
“它的確讓我大吃一驚,就像它知道我要做什么一樣。但在有些時候,它比標(biāo)準(zhǔn)的自動完成更笨,它對已經(jīng)定義的變量沒有任何意識,也不會使用它們來完成編寫了一半的變量?!?/p>
雖然人們對于自動編碼工具的種種不滿一直存在。但從另一個角度考慮,幾乎所有的自動編碼工具都基于人工智能算法,這也意味著它們的易用性與可靠性會隨著技術(shù)的演進(jìn)和數(shù)據(jù)量的增加而持續(xù)增長。對于新一代的開發(fā)人員來說,自動編碼工具將成為他們不可或缺的工具。如今正處于學(xué)習(xí)階段的準(zhǔn)開發(fā)者將在幾年后進(jìn)入該領(lǐng)域,而在此期間,自動編碼工具將很可能會逐漸追趕上普通人類開發(fā)者的水平。而這也將導(dǎo)致下一代開發(fā)人員很有可能將會慢慢停止編碼,之后的一代甚至可能會一定程度的喪失編碼能力。
今天的開發(fā)者需要對他們所使用的語言有深入的了解,并掌握如何實際編寫問題解決方案的知識。然而未來的編碼人員只需要知道一種語言是如何工作的便足夠了,因為他們可以將這些知識與快速工程相結(jié)合,以生成代碼片段。提示工程是使用NLP技術(shù)向LLM提出正確問題的過程,從而促使算法做出最佳響應(yīng)。
與其他顛覆不同領(lǐng)域的人工智能應(yīng)用一樣,目前人們所面對的問題是需要就如何看待編程語言達(dá)成共識。下一代的開發(fā)者要么選擇學(xué)習(xí)如何通過快速工程充分利用自動編碼工具,要么堅持目前從內(nèi)到外的編程語言學(xué)習(xí)方法,只是選擇第二種方式的人可能會在未來幾年后敗給人工智能。
2、自動編碼工具的未來
近年來自動編碼工具的采用率不斷增加,這些產(chǎn)品背后的公司也在持續(xù)創(chuàng)新以添加新功能并優(yōu)化用戶體驗。雖然Github Copilot曾因收集用戶代碼并使用它來訓(xùn)練他們的算法而受到抨擊,但事實是,隨著添加到其數(shù)據(jù)庫中的每一段代碼,Github Copilot的算法都在繼續(xù)進(jìn)化。
當(dāng)然,目前也有許多公司對數(shù)據(jù)使用采取了更負(fù)責(zé)任的方法。以Tabnine為例,它只使用公開允許的數(shù)據(jù)來訓(xùn)練其算法。Tabnine的模型也可以從用戶的編碼風(fēng)格中學(xué)習(xí)。通過在用戶計算機上本地運行算法,模型可以了解相關(guān)程序員的風(fēng)格,提供更符合用戶需求的片段建議。這還可以防止所有數(shù)據(jù)發(fā)送回集中式存儲庫,從而在提供額外價值的同時保護隱私。
與目前創(chuàng)建一個可以用多種編程語言提供建議的大模型(如Codex)的方法相反,未來的自動編碼平臺可能會采用多個模型并將其插入最適合它們的語言中。Tabnine已經(jīng)在不同的編程語言中使用各種開源模型方面取得了成功。在近期的一次公開采訪中,Tabnine生態(tài)系統(tǒng)和業(yè)務(wù)發(fā)展副總裁Brandon Jung表示:
“我們正在采用其他地方最好的模型,它們是開源的,它們很棒。我們采用非常大的模型,這些模型的訓(xùn)練成本非常高,我們根據(jù)每種語言的最佳方法專門研究代碼。事實證明,其中一些模型比其他模型更適合某些特定語言?!?/p>
采用這種方法不僅可以使自動編碼平臺更加準(zhǔn)確,還可以使公司在其個人代碼存儲庫上運行和微調(diào)它們更加可行。目前,大量數(shù)據(jù)與GitHub,AWS和GCP等服務(wù)提供商隔離,但遠(yuǎn)離這些平臺可以使自動編碼工具更加適用于普遍的開發(fā)者。反過來,這將鼓勵更多的人更有效地利用自動編碼器作為工具,從而提高工具預(yù)測的準(zhǔn)確性。
以GitHub Copilot、Tabnine為例,自動編碼工具正在為未來的開發(fā)者構(gòu)建一個全新的工作環(huán)境,它為程序員帶來的好處是不可否認(rèn)的。更高級的AI工具不僅可以幫助開發(fā)者極大提高編寫代碼的效率,還可以減輕經(jīng)常過度勞累的編碼人員的壓力。對此,現(xiàn)階段的企業(yè)也必須認(rèn)識到這種趨勢,以及在開發(fā)人員使用自動編碼工具所能夠帶來的效用,并考慮為他們提供所需的面向未來的開發(fā)工具。
原文鏈接:https://analyticsindiamag.com/have-developers-forgotten-how-to-code/