6 月 22 日消息,华为昨日面向全球开发者介绍华为自研编程语言 —— 仓颉(Cangjie)。这是仓颉编程语言的首次公开亮相。
IT之家查询获悉,天津大学、北京航空航天大学深度参与了华为“仓颉”的研发。
天津大学:仓颉编程语言编译器
天津大学智能与计算学部软件工程团队携手华为仓颉团队,深度参与仓颉编程语言编译器的质量保障研究。
据介绍,仓颉编译器是与仓颉编程语言共生的基础软件。在仓颉编程语言的筹备阶段,与之相配的高质量编译器成为核心目标之一。随着仓颉编程语言的演化,仓颉编译器也在不断地升级、改进。
五年来,天津大学智能与计算学部软件工程团队陈俊洁教授、王赞教授、姜佳君研究员,以及赵英全、付瑞丰、郭以勒、郑开、樊兴宇等十余名研究生,围绕着仓颉编译器测试工作开展深入研究,提出数据驱动的仓颉编译器系统化测试框架,涵盖基于程序综合的测试程序生成技术、基于程序变异的测试预言构造技术、基于代码表示的测试过程加速技术等多项先进技术。成果在软件工程领域顶会 ICSE、ISSTA 等发表多篇学术论文,并已部署至仓颉编译器的实际测试中,显著提升仓颉编译器测试效果。
- 基于程序综合的测试程序生成技术:该项技术将程序代码拆解成细粒度代码片段,彼此之间涉及不同的语言特征,进而在语法语义约束的指导下,实现测试程序的高效合成。值得注意的是,该项技术能够以历史缺陷作为基础数据,提取与缺陷相关的代码片段,并将其融合至多样的代码上下文中,以激发其触发更多缺陷、执行更多代码分支的能力。
- 基于程序变异的测试预言构造技术:该项技术通过对仓颉编程语言语法语义进行深入分析与挖掘,设计一系列等价变异算子与不等价变异算子。前者在测试预言上提供补充,融合蜕变测试思想,提升技术揭错能力,而后者则进一步增强测试程序多样性,引入更多仓颉语言特性、底层库调用等信息,实现对仓颉编译器的更充分测试。
- 基于代码表示的测试过程加速技术:该项技术旨在提升编译器测试效率,以在更短的时间内检测到更多的编译器缺陷。该项技术将测试程序代码进行片段化,并引入代码表示学习策略将其在语言定义空间中进行表征。进而,该项技术从多样性角度进行代码片段的利用、测试程序的生成,并将测试结果作为反馈,进一步指导后续测试过程,从而提升测试整体效率。
北航:苍穹 AI 智能体编程框架
北京航空航天大学软件学院黎立老师团队深度参与基于仓颉编程语言的 AI 智能体编程框架 —— 苍穹(CangChain)开发,这是首个基于国产编程语言的 AI 智能体编程框架。
▲ 苍穹(CangChain)框架图
据介绍,苍穹诞生于仓颉社区,得到仓颉编程语言官方团队的技术支持。作为一个社区开源项目,苍穹采用模块化设计和功能,旨在为软件工程人员提供软件集成模型、安全访问私有数据并进行数据交互的可靠功能。
基于模块化的设计理念,苍穹使得开发者可根据自身特定需求,选择和组合不同的模块。在实现任务的过程中,苍穹可将任务分解成多个子任务,针对每个子任务选择构建合适的代理(Agent)允许语言模型与外部 API 交互,调用满足子任务目标实现的工具(Tool),利用任务链(Chain)串联起每个子任务,最终得到任务求解。
黎立老师团队主要参与了苍穹中 ReAct 框架和多智能体 Planner 调度的设计开发实现。
在具体应用中,团队设计并实现了一个多智能体(Multi-Agent)的系统,包含以下四个关键角色:Docwriter、CodeWriter、CodeTester 和 CodeReviewer。这些智能体在苍穹平台上紧密协作,共同完成 2048 等经典游戏的开发任务。
- Docwriter:负责编写详细的需求文档和设计规范。在游戏开发的初期,Docwriter 通过与用户以及其他智能体的交流,深入了解并记录游戏的功能需求和设计思路,为后续步骤提供详细的蓝图。
- CodeWriter:负责根据设计文档编写源代码。CodeWriter 运用先进的编程技巧和算法,将 Docwriter 提供的需求转化为具体的代码实现。苍穹框架中 ReAct 的“推理-行动”模式有效提升了 CodeWriter 的编程效率和准确性。
- CodeTester:在源代码完成初步编写后,CodeTester 会自动生成并运行一系列测试用例,确保代码功能的正确性和稳定性。CodeTester 利用定义好的各种工具构造测试用例,并执行相应的测试用例,定位并反馈代码中的潜在问题,提高代码质量。
- CodeReviewer:负责对 CodeWriter 编写的代码进行全面审查,确保代码符合最佳实践和质量标准。CodeReviewer 不仅会检查代码的功能实现,还会关注代码的可读性和可维护性,提出优化建议。
▲ 基于苍穹开发的多智能体系统应用示例
通过苍穹的模块化设计和多智能体的智能调度,这些角色智能体能够高效分工、互相协作,不断迭代优化,最终完成游戏开发任务。具体来说,任务链(Chain)机制将各个子任务有效串联,智能体间的信息交互则通过 Planner 调度实现无缝连接,提升了开发效率和代码质量。
未来,北京航空航天大学软件学院团队将计划继续拓展苍穹的应用领域,深入研究多智能体系统在其他复杂任务中的应用潜力。