被大模型顛覆的編程,和被華為云改變的軟件開發(fā)工具鏈。
現(xiàn)代計(jì)算機(jī)和軟件產(chǎn)業(yè)的歷史不足百年,The Art of Computer Programming(中譯本《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》)幾乎是所有程序員都聽聞過的一本著作,其作者高德納(Donald Ervin Knuth)于1974年成為最年輕的圖靈獎獲得者。
如今,很少有人會把編程這件事和藝術(shù)掛鉤,大部分程序員每天面臨的都是一行行枯燥的代碼,改不完的bug,開不完的項(xiàng)目會,尤其是遺留的大項(xiàng)目,“屎山代碼”讓人動都不敢動,哪有任何藝術(shù)可言。
大模型讓軟件開發(fā)行業(yè)燃起了新的熱情,基于大型語言模型(LLM)可以實(shí)現(xiàn)自動代碼生成,只需要輸入自然語言,大模型就能理解并生成可運(yùn)行的代碼,并提供有助于理解的注釋,程序員的生產(chǎn)力有了成倍提高。
軟件開發(fā),自然也成為大模型落地應(yīng)用的潛力場景之一。近日,華為云智能開發(fā)助手CodeArts Snap開啟公測,可以幫助開發(fā)者將自然語言轉(zhuǎn)化為規(guī)范可閱讀、無開源漏洞的安全編程語言,提升開發(fā)者編程效率。
與一般的大模型開發(fā)工具不同的是,Snap智能開發(fā)助手是華為云軟件開發(fā)生產(chǎn)線CodeArts的一部分,CodeArts成型于外部封鎖的大環(huán)境之下,又迎面趕上了大模型的浪潮,CodeArts由此成為國內(nèi)唯一經(jīng)受過現(xiàn)實(shí)考驗(yàn)的自主研發(fā)的工具鏈。
有意思的是,不知是否是巧合,華為在命名軟件開發(fā)工具鏈CodeArts時(shí),就帶上了“藝術(shù)”(Art)二字,似乎隱含著另一重深意,通過一系列代碼開發(fā)工具集,讓軟件開發(fā)回歸到藝術(shù)范疇。
打個“響指”,就能完成軟件開發(fā)
早期的軟件編程,并不是無趣且乏味的。高德納就認(rèn)為,衡量一個計(jì)算機(jī)程序是否完整的標(biāo)準(zhǔn)不僅僅在于它是否能夠運(yùn)行,一個計(jì)算機(jī)程序應(yīng)該是雅致的,甚至可以說是美的。計(jì)算機(jī)程序設(shè)計(jì)應(yīng)該是一門藝術(shù),一個算法應(yīng)該像一段音樂,而一個好的程序應(yīng)該如一部文學(xué)作品一般。
程序員一直在追求代碼的實(shí)用性和藝術(shù)性,初級程序員只管寫代碼,能跑就行,變量名、方法名、類設(shè)計(jì)都不怎么考慮,而越厲害的程序員,代碼越規(guī)范、簡潔、可讀,不只是一個成品,更像是一個作品。
現(xiàn)實(shí)情況是,軟件需求遠(yuǎn)遠(yuǎn)大于供給,海量的程序員群體不得不疲于應(yīng)付,更簡潔的編程語言,更高效的開發(fā)框架,低代碼、無代碼等新技術(shù)的涌現(xiàn),都是為了滿足源源不斷的需求,只有解放程序員的繁重包袱,開發(fā)者們才能有更多時(shí)間用于創(chuàng)造。
大模型沖擊著傳統(tǒng)的軟件開發(fā)行業(yè),F(xiàn)ixie 聯(lián)合創(chuàng)始人兼 CEO、前谷歌 Chrome 移動團(tuán)隊(duì)工程總監(jiān) Matt Welsh說,“程序員這個工作或許在三五年內(nèi)不復(fù)存在,甚至編程這個學(xué)科都會被終結(jié)!
當(dāng)然,現(xiàn)階段大模型對于程序員更像是一個趁手的工具,一直以來,軟件開發(fā)行業(yè)總是希望不斷降低開發(fā)門檻,讓編程工具變得更易用,讓更多的人可以實(shí)現(xiàn)輕量級的開發(fā),來滿足日益增長的海量軟件開發(fā)需求,大模型將開發(fā)體驗(yàn)提升到了新的級別。
以華為云智能開發(fā)助手CodeArts Snap為例,其具備八大核心能力:代碼生成、研發(fā)知識問答、單元測試用例生成、代碼解釋、代碼注釋、代碼調(diào)試、代碼翻譯、代碼檢查。
· 代碼生成:根據(jù)自然語言生成完整代碼邏輯,實(shí)現(xiàn)編碼效率的大幅提升。
· 研發(fā)知識問答:對話框內(nèi)進(jìn)行任意研發(fā)相關(guān)的知識提問,提高研發(fā)問題的解決效率。
· 單元測試用例生成:自動創(chuàng)建單元測試用例,提高測試覆蓋率,確保每個功能和場景都被測試到。
· 代碼解釋:快速分析代碼并自動生成文檔,提高閱讀代碼的速度和效率。
· 代碼注釋:快速分析代碼,自動生成有意義的完整注釋,增加代碼可讀性,同一個代碼庫注釋風(fēng)格的一致性。提高研發(fā)問題的解決效率。
· 代碼調(diào)試:可根據(jù)運(yùn)行代碼報(bào)錯時(shí)提示的錯誤日志一鍵修復(fù)代碼;對代碼進(jìn)行檢視,挖掘潛在編譯問題。
· 代碼翻譯:快速分析代碼并自動完成遷移和翻譯,提高開發(fā)者工作效率。
· 代碼檢查:快速分析代碼,提供錯誤發(fā)生的詳細(xì)信息和修復(fù)建議,縮短了錯誤定位時(shí)間。
CodeArts Snap智能開發(fā)助手的能力并不是憑空而來,大多數(shù)程序員一生最多只能閱讀10萬篇技術(shù)文檔,職業(yè)生涯閱讀的代碼量最多可能也就1億行,然而,華為云研發(fā)大模型已經(jīng)學(xué)習(xí)了1300多萬篇經(jīng)典的技術(shù)文檔、760億行精選代碼,CodeArts才打造了Snap智能開發(fā)助手。
如果把軟件開發(fā)比作成一場演練,擁有八大核心功能的CodeArts Snap,能讓“普通士兵”“碼”力全開,秒變成“特種兵”,實(shí)現(xiàn)一句對話讓代碼生成、一次點(diǎn)擊即可自動注釋和生成測試用例。
CodeArts:代碼開發(fā)工具的藝術(shù)
如果說,在大模型時(shí)代下Snap智能開發(fā)助手的誕生是順勢而為,那么,華為打磨CodeArts的過程就是逆流而上。
一款軟件的開發(fā)涉及項(xiàng)目分析、確定開發(fā)、需求分析、設(shè)計(jì)、編程、軟件測試、軟件交付、驗(yàn)收、維護(hù)等多個流程,其中可能涉及數(shù)十款工具產(chǎn)品,軟件開發(fā)興起于西方世界,全球前十大軟件開發(fā)工具廠商中,有6家是美國公司,理所當(dāng)然的,全球大部分開發(fā)者和企業(yè)主流使用海外的開發(fā)工具。
對于華為有些不同,2019年之前,華為同樣根據(jù)自己的需求引入了大量開發(fā)工具,但在美國禁令之后,連基本的軟件開發(fā)工具也無法獲得持續(xù)供應(yīng),華為被迫自主研發(fā)自己的軟件開發(fā)工具鏈,而且不是單點(diǎn)的替換,是徹頭徹尾的全局升級。
誠然,CodeArts解決了華為軟件開發(fā)工具鏈有沒有的問題,與世界領(lǐng)先的產(chǎn)品還有所差距,不過已經(jīng)可以滿足大部分企業(yè)和開發(fā)者需求,某種程度上,華為可以說傾其所有打造了CodeArts。
華為有30余年研發(fā)實(shí)踐,其IPD流程和研發(fā)數(shù)字化能力都屬于業(yè)內(nèi)領(lǐng)先,以IPD產(chǎn)品研發(fā)管理流程為例,華為是IPD產(chǎn)品集成開發(fā)的先行者和實(shí)踐者,IPD將研發(fā)流程和標(biāo)準(zhǔn)規(guī)范化。同時(shí)規(guī)范需求、代碼、測試用例等研發(fā)業(yè)務(wù)對象,在作業(yè)過程中進(jìn)行關(guān)聯(lián),最終實(shí)現(xiàn)研發(fā)業(yè)務(wù)對象的雙向追溯。
IPD還構(gòu)建了成本、效率、質(zhì)量、資產(chǎn)等維度200多個黃金指標(biāo),幫助管理者掌控業(yè)務(wù)全景,幫助開發(fā)人員持續(xù)改進(jìn),這些都可以在CodeArts中找到原型。CodeArts承載了從需求、開發(fā)、測試、部署運(yùn)維等軟件開發(fā)全生命周期的各個環(huán)節(jié)的工程方法和管理理念。
經(jīng)歷過封鎖之后,CodeArts格外重視自主研發(fā),目前CodeArts工具代碼內(nèi)核自研率高達(dá)到96%,兼容國產(chǎn)化基礎(chǔ)組件,支持X86和ARM雙棧適配,避免軟件工具被“卡脖子”。
此外,CodeArts提供全方位軟件供應(yīng)鏈安全防護(hù),對開發(fā)、配置管理到發(fā)布、部署和運(yùn)行等全流程12大關(guān)鍵威脅點(diǎn)進(jìn)行全面防御,覆蓋11000個代碼安全場景,提供密碼自動下載,敏感信息外發(fā)等30+種惡意代碼檢測能力,為構(gòu)建高質(zhì)量高安全的應(yīng)用鑄就銅墻鐵壁。
目前,在華為內(nèi)部有11萬軟件工程師使用CodeArts進(jìn)行日常軟件開發(fā)。同時(shí),CodeArts也服務(wù)外部1萬多家企業(yè),325萬開發(fā)者,在33個中國軟件產(chǎn)業(yè)較發(fā)達(dá)的城市園區(qū)落地。
結(jié)合華為內(nèi)外的應(yīng)用實(shí)踐,CodeArts能提供10倍編譯構(gòu)建的加速能力,1億行代碼的項(xiàng)目,編譯時(shí)間從10個小時(shí)縮減到了1個小時(shí)。CodeArts通過全場景、大規(guī)模、7x24的測試自動化工廠,實(shí)現(xiàn)產(chǎn)品驗(yàn)收周期從21天縮短到了5天。
華為CodeArts覆蓋需求、開發(fā)、測試、部署等軟件交付全流程,堪稱軟件開發(fā)的自動化“流水線”,所包含的38款研發(fā)工具均為華為自主研發(fā),構(gòu)筑了一條企業(yè)通向自主創(chuàng)新核心競爭力的道路。
大模型時(shí)代,重估核心競爭力
所有的業(yè)務(wù)都正在或已經(jīng)被數(shù)字化重塑,新的業(yè)務(wù)形態(tài)逐漸向數(shù)字世界轉(zhuǎn)移,相對應(yīng)地,軟件不再只是輔助工具,而是核心競爭力的體現(xiàn)。在這樣的背景下,不論是對于個人還是企業(yè),軟件交付能力成為了至關(guān)重要的能力之一。
2023年5月華為西安研究所舉辦了一場別開生面的軟件大賽,開發(fā)者要在規(guī)定時(shí)間內(nèi)完成10道軟件開發(fā)題目,并且允許使用任意的生成式AI輔助答題,有的開發(fā)者采用了新的大模型工具,有些則更相信自己的代碼功力。
大賽結(jié)果一經(jīng)公布,讓不少人感到意外。盡管組委會將難度較去年提升了一倍,還加了幾道專業(yè)級的超綱題,仍然有8位使用AI工具的參賽同學(xué)拿到了滿分,而這其中有一位使用的工具,是華為自主研發(fā)的CodeArts Snap。
更有意味的對比是,2022屆冠亞軍選手在今年大賽中均未使用大模型,其中冠軍排在170名,亞軍排在450名。
軟件對于企業(yè)的重要性無需贅述,Software is eating the world(軟件正在吞噬世界)的經(jīng)典論斷言猶在耳,不只是互聯(lián)網(wǎng)企業(yè),越來越多的傳統(tǒng)企業(yè)也意識到,要想在數(shù)字世界中競爭和發(fā)展,就必須像軟件公司一樣觀察、思考和行動,所以,一套高效的軟件開發(fā)工具鏈必不可少。
軟件封鎖給華為帶來了挑戰(zhàn)、同時(shí)也帶來了機(jī)遇,成為自研CodeArts的最先受益者。例如華為某開發(fā)部門的嵌入式應(yīng)用開發(fā),客戶場景業(yè)務(wù)強(qiáng)依賴算法,非主流語言維護(hù)困難,復(fù)雜問題定位困難。
在使用了CodeArts開發(fā)工具鏈之后,聚焦6大開發(fā)場景+3大測試場景提升研發(fā)效率,常規(guī)人工耗費(fèi)3天的工作量,AI端到端協(xié)助只需2小時(shí),AI協(xié)助翻寫成常用語言可用率達(dá)90%,純?nèi)斯ざㄎ?天毫無進(jìn)展的問題,跟節(jié)目大模型引導(dǎo)分段分析,分鐘級完成定界。
再如某汽車客戶使用CodeArts構(gòu)建編譯加速能力,在嵌入式、終端OS、車載軟件等開發(fā)場景中實(shí)現(xiàn)開發(fā)效率提速10倍。
該客戶代碼量超過1億行,軟件依賴復(fù)雜,只能單機(jī)構(gòu)建,過去一次構(gòu)建出包需要5個小時(shí),采用CodeArts之后,可實(shí)現(xiàn)自動分析軟件依賴,按需分發(fā)編譯源文件,分布式、精準(zhǔn)增量編譯,一次構(gòu)建出包縮短至0.5小時(shí)。
外部環(huán)境波譎云詭,企業(yè)打鐵還需自身硬,未來的關(guān)鍵競爭力就是交付速度,只有對客戶需求響應(yīng)更迅速的應(yīng)用,才能獲得客戶滿意,華為云CodeArts不是為了替換而替換,是借勢新技術(shù)浪潮,完成國內(nèi)軟件開發(fā)工具鏈的迭代與升級。
雖然中國軟件開發(fā)工具的成熟度和性能,和全球top產(chǎn)品還有差距。但是在AI時(shí)代,大模型劃下了另一條賽道,這是全新的起跑線,中國企業(yè)未嘗不能和全球研發(fā)大模型并行,甚至有望實(shí)現(xiàn)彎道超車。