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