北京大学助力仓颉编程语言发展
携手华为深耕国产基础软件研究
2024年6月21日,在华为开发者大会(HDC)上,华为发布了一款全新的编程语言—仓颉。仓颉编程语言是一款面向全场景智能的新一代编程语言,主打原生智能化、天生全场景、高性能、强安全。
早在2019年,由bwin必赢院长胡振江教授带领的北京大学程序语言研究室就已经与华为仓颉团队围绕仓颉语言的开发环境与工具课题展开长期合作,旨在推进中国自主研发的编程技术发展,提升国内软件开发的自主性和创新能力。
程序语言实验室教师团队
参与华为组织的仓颉培训的部分师生
其一是基于仓颉的领域特定语言的敏捷开发平台。随着泛在计算时代的到来,多领域、多硬件计算及其互操作正成为主流,而程序员的身份也越发多样化,随之兴起的技术是领域特定语言及其之间的互操作,而仓颉也有着强大的领域特定语言定义功能。而其中一大挑战是如何针对数目众多的领域特定语言定制开发环境、支持互操作,传统方法靠人工定制成本过高。而该合作计划利用双向变化技术,从宿主语言仓颉的开发环境出发,自动为领域特定语言生成开发环境,并从仓颉语义和领域特定语言语义的关系出发,自动支持多语言互操作。
其二是针对仓颉的逻辑和概率结合的程序分析框架。程序分析是语言编译器、开发环境的重要组成部分,仓颉也不例外。而传统程序分析有着误报多、不灵活、不智能的缺点。该合作拟将概率加入程序分析中,在保留传统程序分析高可靠、可解释、易表达的优点同时,将程序分析转化为贝叶斯学系统,是的其能自动综合用户反馈、测试等信息,智能、灵活、自动的调整结果,以达到高精度。
其三是针对仓颉的资源最坏时间复杂度分析。传统程序分析主要关注定性分析(如内存安全),而忽略了时间复杂度等定量分析。而近年来软件的时间消耗问题正引起人们的广泛关注,相关问题有软件性能瓶颈、由算法复杂度漏洞引起的拒绝服务攻击、侧信道信息泄漏等。为了解决这些问题,该合作将共同研发针对仓颉程序的最坏时间复杂度分析,通过符号执行、静态分析、模糊测试等技术,自动发现仓颉程序时间复杂度最高的执行路径,以识别相关问题。
目前,部分成果已有论文发表于程序语言领域国际顶级会议OOPSLA上[1,2]。未来,双方将继续基于各自优势,继续围绕仓颉编程语言、工具、生态等领域展开更深入更全面的合作,为全栈自主可控的基础软件产业链不断贡献力量。
[1]X. Zhang, G. Guo, X. He, and Z. Hu, "Bidirectional Object-Oriented Programming: Towards Programmatic and Direct Manipulation of Objects," Proceedings of the ACM on Programming Languages, vol. 7, no. OOPSLA1, pp. 230-255, 2023.
[2] Y. Zhang, Y. Shi, and X. Zhang, "Learning Abstraction Selection for Bayesian Program Analysis," Proceedings of the ACM on Programming Languages, vol. 8, no. OOPSLA1, pp. 954-982, 2024.
扩展阅读:针对仓颉语言的贝叶斯程序分析平台