华为又悄悄搞了个“大项目”
来源:凤凰网科技 | 作者:36氪 | 发布时间: 2024-01-10 | 652 次浏览 | 分享到:

被大模型颠覆的编程,和被华为云改变的软件开发工具链。

现代计算机和软件产业的历史不足百年,The Art of Computer Programming(中译本《计算机程序设计艺术》)几乎是所有程序员都听闻过的一本著作,其作者高德纳(Donald Ervin Knuth)于1974年成为最年轻的图灵奖获得者。

如今,很少有人会把编程这件事和艺术挂钩,大部分程序员每天面临的都是一行行枯燥的代码,改不完的bug,开不完的项目会,尤其是遗留的大项目,“屎山代码”让人动都不敢动,哪有任何艺术可言。

大模型让软件开发行业燃起了新的热情,基于大型语言模型(LLM)可以实现自动代码生成,只需要输入自然语言,大模型就能理解并生成可运行的代码,并提供有助于理解的注释,程序员的生产力有了成倍提高。

软件开发,自然也成为大模型落地应用的潜力场景之一。近日,华为云智能开发助手CodeArts Snap开启公测,可以帮助开发者将自然语言转化为规范可阅读、无开源漏洞的安全编程语言,提升开发者编程效率。

与一般的大模型开发工具不同的是,Snap智能开发助手是华为云软件开发生产线CodeArts的一部分,CodeArts成型于外部封锁的大环境之下,又迎面赶上了大模型的浪潮,CodeArts由此成为国内唯一经受过现实考验的自主研发的工具链。

有意思的是,不知是否是巧合,华为在命名软件开发工具链CodeArts时,就带上了“艺术”(Art)二字,似乎隐含着另一重深意,通过一系列代码开发工具集,让软件开发回归到艺术范畴。

打个“响指”,就能完成软件开发

早期的软件编程,并不是无趣且乏味的。高德纳就认为,衡量一个计算机程序是否完整的标准不仅仅在于它是否能够运行,一个计算机程序应该是雅致的,甚至可以说是美的。计算机程序设计应该是一门艺术,一个算法应该像一段音乐,而一个好的程序应该如一部文学作品一般。

程序员一直在追求代码的实用性和艺术性,初级程序员只管写代码,能跑就行,变量名、方法名、类设计都不怎么考虑,而越厉害的程序员,代码越规范、简洁、可读,不只是一个成品,更像是一个作品。

现实情况是,软件需求远远大于供给,海量的程序员群体不得不疲于应付,更简洁的编程语言,更高效的开发框架,低代码、无代码等新技术的涌现,都是为了满足源源不断的需求,只有解放程序员的繁重包袱,开发者们才能有更多时间用于创造。

大模型冲击着传统的软件开发行业,Fixie 联合创始人兼 CEO、前谷歌 Chrome 移动团队工程总监 Matt Welsh说,“程序员这个工作或许在三五年内不复存在,甚至编程这个学科都会被终结。”

当然,现阶段大模型对于程序员更像是一个趁手的工具,一直以来,软件开发行业总是希望不断降低开发门槛,让编程工具变得更易用,让更多的人可以实现轻量级的开发,来满足日益增长的海量软件开发需求,大模型将开发体验提升到了新的级别。

以华为云智能开发助手CodeArts Snap为例,其具备八大核心能力:代码生成、研发知识问答、单元测试用例生成、代码解释、代码注释、代码调试、代码翻译、代码检查。

· 代码生成:根据自然语言生成完整代码逻辑,实现编码效率的大幅提升。

· 研发知识问答:对话框内进行任意研发相关的知识提问,提高研发问题的解决效率。

· 单元测试用例生成:自动创建单元测试用例,提高测试覆盖率,确保每个功能和场景都被测试到。

· 代码解释:快速分析代码并自动生成文档,提高阅读代码的速度和效率。

· 代码注释:快速分析代码,自动生成有意义的完整注释,增加代码可读性,同一个代码库注释风格的一致性。提高研发问题的解决效率。

· 代码调试:可根据运行代码报错时提示的错误日志一键修复代码;对代码进行检视,挖掘潜在编译问题。

· 代码翻译:快速分析代码并自动完成迁移和翻译,提高开发者工作效率。

· 代码检查:快速分析代码,提供错误发生的详细信息和修复建议,缩短了错误定位时间。

CodeArts Snap智能开发助手的能力并不是凭空而来,大多数程序员一生最多只能阅读10万篇技术文档,职业生涯阅读的代码量最多可能也就1亿行,然而,华为云研发大模型已经学习了1300多万篇经典的技术文档、760亿行精选代码,CodeArts才打造了Snap智能开发助手。

如果把软件开发比作成一场演练,拥有八大核心功能的CodeArts Snap,能让“普通士兵”“码”力全开,秒变成“特种兵”,实现一句对话让代码生成、一次点击即可自动注释和生成测试用例。

CodeArts:代码开发工具的艺术

如果说,在大模型时代下Snap智能开发助手的诞生是顺势而为,那么,华为打磨CodeArts的过程就是逆流而上。

一款软件的开发涉及项目分析、确定开发、需求分析、设计、编程、软件测试、软件交付、验收、维护等多个流程,其中可能涉及数十款工具产品,软件开发兴起于西方世界,全球前十大软件开发工具厂商中,有6家是美国公司,理所当然的,全球大部分开发者和企业主流使用海外的开发工具。

对于华为有些不同,2019年之前,华为同样根据自己的需求引入了大量开发工具,但在美国禁令之后,连基本的软件开发工具也无法获得持续供应,华为被迫自主研发自己的软件开发工具链,而且不是单点的替换,是彻头彻尾的全局升级。

诚然,CodeArts解决了华为软件开发工具链有没有的问题,与世界领先的产品还有所差距,不过已经可以满足大部分企业和开发者需求,某种程度上,华为可以说倾其所有打造了CodeArts。

华为有30余年研发实践,其IPD流程和研发数字化能力都属于业内领先,以IPD产品研发管理流程为例,华为是IPD产品集成开发的先行者和实践者,IPD将研发流程和标准规范化。同时规范需求、代码、测试用例等研发业务对象,在作业过程中进行关联,最终实现研发业务对象的双向追溯。

IPD还构建了成本、效率、质量、资产等维度200多个黄金指标,帮助管理者掌控业务全景,帮助开发人员持续改进,这些都可以在CodeArts中找到原型。CodeArts承载了从需求、开发、测试、部署运维等软件开发全生命周期的各个环节的工程方法和管理理念。

经历过封锁之后,CodeArts格外重视自主研发,目前CodeArts工具代码内核自研率高达到96%,兼容国产化基础组件,支持X86和ARM双栈适配,避免软件工具被“卡脖子”。

此外,CodeArts提供全方位软件供应链安全防护,对开发、配置管理到发布、部署和运行等全流程12大关键威胁点进行全面防御,覆盖11000个代码安全场景,提供密码自动下载,敏感信息外发等30+种恶意代码检测能力,为构建高质量高安全的应用铸就铜墙铁壁。

目前,在华为内部有11万软件工程师使用CodeArts进行日常软件开发。同时,CodeArts也服务外部1万多家企业,325万开发者,在33个中国软件产业较发达的城市园区落地。

结合华为内外的应用实践,CodeArts能提供10倍编译构建的加速能力,1亿行代码的项目,编译时间从10个小时缩减到了1个小时。CodeArts通过全场景、大规模、7x24的测试自动化工厂,实现产品验收周期从21天缩短到了5天。

华为CodeArts覆盖需求、开发、测试、部署等软件交付全流程,堪称软件开发的自动化“流水线”,所包含的38款研发工具均为华为自主研发,构筑了一条企业通向自主创新核心竞争力的道路。

大模型时代,重估核心竞争力

所有的业务都正在或已经被数字化重塑,新的业务形态逐渐向数字世界转移,相对应地,软件不再只是辅助工具,而是核心竞争力的体现。在这样的背景下,不论是对于个人还是企业,软件交付能力成为了至关重要的能力之一。

2023年5月华为西安研究所举办了一场别开生面的软件大赛,开发者要在规定时间内完成10道软件开发题目,并且允许使用任意的生成式AI辅助答题,有的开发者采用了新的大模型工具,有些则更相信自己的代码功力。

大赛结果一经公布,让不少人感到意外。尽管组委会将难度较去年提升了一倍,还加了几道专业级的超纲题,仍然有8位使用AI工具的参赛同学拿到了满分,而这其中有一位使用的工具,是华为自主研发的CodeArts Snap。

更有意味的对比是,2022届冠亚军选手在今年大赛中均未使用大模型,其中冠军排在170名,亚军排在450名。

软件对于企业的重要性无需赘述,Software is eating the world(软件正在吞噬世界)的经典论断言犹在耳,不只是互联网企业,越来越多的传统企业也意识到,要想在数字世界中竞争和发展,就必须像软件公司一样观察、思考和行动,所以,一套高效的软件开发工具链必不可少。

软件封锁给华为带来了挑战、同时也带来了机遇,成为自研CodeArts的最先受益者。例如华为某开发部门的嵌入式应用开发,客户场景业务强依赖算法,非主流语言维护困难,复杂问题定位困难。

在使用了CodeArts开发工具链之后,聚焦6大开发场景+3大测试场景提升研发效率,常规人工耗费3天的工作量,AI端到端协助只需2小时,AI协助翻写成常用语言可用率达90%,纯人工定位2天毫无进展的问题,跟节目大模型引导分段分析,分钟级完成定界。

再如某汽车客户使用CodeArts构建编译加速能力,在嵌入式、终端OS、车载软件等开发场景中实现开发效率提速10倍。

该客户代码量超过1亿行,软件依赖复杂,只能单机构建,过去一次构建出包需要5个小时,采用CodeArts之后,可实现自动分析软件依赖,按需分发编译源文件,分布式、精准增量编译,一次构建出包缩短至0.5小时。

外部环境波谲云诡,企业打铁还需自身硬,未来的关键竞争力就是交付速度,只有对客户需求响应更迅速的应用,才能获得客户满意,华为云CodeArts不是为了替换而替换,是借势新技术浪潮,完成国内软件开发工具链的迭代与升级。

虽然中国软件开发工具的成熟度和性能,和全球top产品还有差距。但是在AI时代,大模型划下了另一条赛道,这是全新的起跑线,中国企业未尝不能和全球研发大模型并行,甚至有望实现弯道超车。


当前的位置: