在2025年6月20日华为开发者大会(HDC 2025)上,华为宣布正式开启HarmonyOS 6 Developer Beta版本,在体验创新与开发效率上进一步提升。华为终端BG软件部总裁龚体发表名为“更高效的鸿蒙开发体验”演讲,并宣布仓颉编程语言将于7月30日开源。仓颉最早是在2024年6月的华为开发者大会亮相,定位是下一代编程语言。

华为自研仓颉编程语言将开源

仓颉编程语言特性

作为一门新进的编程语言,仓颉吸取了各大主流编程语言的优点,形成了自己具有特性。

  • 高效编程:面向应用开发,编程语言应该能够易学易用,降低开发者入门门槛和开发过程中的心智负担,支持各种常见的开发范式和编程模式,让开发者简洁高效地表达各种业务逻辑。仓颉是一门多范式编程语言,支持函数式、命令式和面向对象等多种范式,包括值类型、类和接口、泛型、代数数据类型、模式匹配、以及高阶函数等特性。此外,仓颉还支持类型推断,能够减轻开发者类型标注的负担;通过一系列简明高效的语法,能够减少冗余书写、提升开发效率;语言内置的各种语法糖和宏(macro)的能力,支持开发者基于仓颉快速开发领域专用语言(DSL),构建领域抽象。
  • 安全可靠:作为现代编程语言,仓颉追求编码即安全,通过静态类型系统和自动内存管理,确保程序的类型安全和null safety等内存安全;同时,仓颉还提供各种运行时检查,包括数组下标越界检查、类型转换检查、数值计算溢出检查、以及字符串编码合法性检查等,能够及时发现程序运行中的错误;此外,还通过代码扫描工具、混淆工具以及消毒器,进一步提供跨语言互操作安全和代码资产保护等支持。
  • 轻松并发:并发和异步编程能够有效提高处理器利用率,并在交互式应用中确保程序的响应速度,是应用开发中必不可少的能力。仓颉语言实现了轻量化用户态线程和并发对象库,让高效并发变得轻松。仓颉语言采用用户态线程模型,每个仓颉线程都是极其轻量级的执行实体,拥有独立的执行上下文但共享内存。对开发者来说,用户态线程的使用和传统的系统线程的使用方式保持一致,没有带来额外负担;而从运行态视角看,线程的管理由运行时完成,不依赖操作系统的线程管理,因此线程的创建、调度和销毁等操作更加高效,且资源占用比系统线程更少。为了避免数据竞争,仓颉语言提供了并发对象库,并发对象的方法是线程安全的,因此在多线程中调用这些方法和串行编程没有区别,应用逻辑的开发者无需额外关心并发管理。对于一些核心库,仓颉还提供了无锁或者细粒度锁的算法实现,能够进一步减少线程的阻塞,提升并发度。
  • 卓越性能:仓颉编译器及运行时从全栈对编译进行优化,包括编译器前端基于CHIR(Cangjie HighLevel IR)高层编译优化(比如语义感知的循环优化、语义感知的后端协同优化等),基于后端的编译优化(比如:SLP向量化、Intrinsic优化、InlineCache、过程间指针优化、Barrier优化等),基于运行时的优化(比如轻量锁、分布式标记、并发Tracing优化等),一系列的优化让仓颉充分发挥处理器能力,为应用提供卓越的性能支持。另外仓颉语言对运行时进行原生的轻量化设计,通过对运行时模块化分层设计,定义仓颉公共对象模型和运行时公共基础组件,基于公共对象模型,实现运行时的内存管理、回栈、异常处理、跨语言调用等基础能力,大幅减少多个能力间的冗余对象设计,精简运行时体积。同时通过包的按需加载技术,减少仓颉应用启动的冗余包内存开销,因此对于资源敏感设备,占用资源更少,支持更友好。

除此之外,仓颉还支持面向应用开发的一系列工具链,包括语言服务(高亮、联想)、调试(跨语言调试、线程级可视化调试)、静态检查、性能分析、包管理、文档生成、Mock工具、测试框架、覆盖率工具、Fuzz工具以及智能辅助编程工具,进一步提升软件开发体验以及效率。

《鸿蒙编程语言白皮书解读

在2025年6月20日,华为发布了《鸿蒙编程语言白皮书》V1.0 版本。白皮书核心内容如下:

鸿蒙编程语言整体框架

  • 多语言生态:鸿蒙支持 ArkTS、仓颉和 C/C++ 三种编程语言,它们相互补充,共同支撑鸿蒙应用生态构建。
    • ArkTS:动态类型编程语言,基于 TypeScript,具有易学易用、生态丰富等特征,适用于高效开发场景。
    • 仓颉:静态类型编程语言,具有高性能、强安全、跨平台等特性,适用于对性能和安全要求较高的场景。
    • C/C++:适用于高性能计算、硬件加速等特定场景,可通过跨语言互操作封装为 ArkTS 和仓颉扩展模块。
  • 语言互操作:ArkTS 与 C/C++ 通过 Node-API 实现互操作;仓颉与 C 语言实现函数互相调用及跨语言数据转换;仓颉与 ArkTS 通过互操作库实现数据转换和函数调用。

鸿蒙编程语言适用场景

  • 高效开发:ArkTS 兼容 TS 高效语法,提供丰富的基础库和并发能力,支持声明式 UI 开发,可继承 TS/JS 语言生态。
  • 高性能:ArkTS 编译运行时支持混合执行模式,优化模块加载机制,提供高效的并发编程模型;仓颉基于静态类型和静态编译优化技术,具有卓越的性能支持。
  • 安全:ArkTS 在语言层面引入类型系统等特性,并在编译工具链和运行时提供额外的安全机制;仓颉通过静态类型系统、自动内存管理等确保程序安全。
  • 跨平台:仓颉支持静态编译至不同 OS 平台的机器码,实现跨 OS 平台代码共享,支持多种操作系统平台。
  • 技术资产保护:ArkTS 提供源码混淆工具 ArkGuard;仓颉提供外形混淆、数据混淆、控制流混淆等多种混淆技术。

鸿蒙编程语言演进策略

  • ArkTS 演进策略:将进一步定义和完善语言规范,提供基于语言规范的编译器实现,引入类型信息优化运行时性能等。
  • 仓颉演进策略:将持续提升高效开发体验,提供高性能和强安全能力,在跨平台和智能化领域持续完善和探索。
  • 智能化演进策略:仓颉通过元编程能力和 DSL 能力构建 Agent DSL 能力,未来将深化与 AI 技术的融合,推动在多领域的应用。

未来一年语言演进策略

  • ArkTS:将持续保持演进迭代,进一步丰富并发编程、完善类型系统、现代化语法等新特性,提升开发效率,丰富 SDK 功能等。
  • 仓颉:将以提升开发者体验为目标,从语言特性构建、兼容现有生态、完善工具链易用性等方面持续建设语言能力,包括 API 发展、开发工具支持、资料文档完善等。

总结

ArkTS、仓颉都将作为鸿蒙的主力编程语言,它们将享受同等地位优势相补,共同支撑鸿蒙应用生态构建。ArkTS有先发优势,API库比较丰富;仓颉后发奋进,天然高性能和安全。

更多仓颉相关的内容可以参见笔者所著的《跟老卫学仓颉编程语言开发》开源免费教程及“HarmonyOS NEXT+AI大模型打造智能助手APP(仓颉版)”。

参考资料

  • 《跟老卫学AI大模型开发》开源免费教程, https://github.com/waylau/ai-large-model-tutorial/
  • 《跟老卫学仓颉编程语言开发》开源免费教程, https://github.com/waylau/cangjie-programming-language-tutorial
  • 《跟老卫学HarmonyOS开发》 开源免费教程,https://github.com/waylau/harmonyos-tutorial
  • 《鸿蒙HarmonyOS手机应用开发实战》(清华大学出版社)
  • 《鸿蒙HarmonyOS应用开发入门》(清华大学出版社)
  • “鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”(https://coding.imooc.com/class/843.html)
  • 《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》(北京大学出版社)
  • 《鸿蒙之光HarmonyOS NEXT原生应用开发入门》(清华大学出版社)
  • “HarmonyOS NEXT+AI大模型打造智能助手APP(仓颉版)”(https://coding.imooc.com/class/927.html)
  • 《鸿蒙编程语言白皮书》V1.0 版本,https://developer.huawei.com/consumer/cn/doc/guidebook/programming-language-0000002323920052