华为开发者大会(HDC 2024)上,华为内部研发已久的国产自主编程语言仓颉终于正式对外官宣!

 

随着万物互联以及智能时代的到来,软件的形态将发生巨大的变化。一方面,移动应用和移动互联网领域仍然强力驱动人机交互、设备协同、智能化、安全性等方向的创新,另一方面人工智能也同样驱动软件朝智能化、端边云协同等方向演进。新技术、新场景下应用软件的开发对编程语言提出了新的诉求和挑战。

仓颉编程语言作为一款面向全场景应用开发的现代编程语言,通过现代语言特性的集成、全方位的编译优化和运行时实现,以及开箱即用的 IDE 工具链支持,致力于为开发者打造友好开发体验和卓越程序性能。

当前在鸿蒙原生应用的开发中,支持声明式 UI 和一次开发、多端部署的 ArkTS 语言已经被广泛使用。仓颉语言作为面向未来的下一代编程语言,当前已经完成设计与实现并启动了开发者预览,未来将与 ArkTS 共同发展,为鸿蒙原生应用开发者提供极致高效的开发体验。

填补国产编程语言的空白

根据公开数据显示,中国开发者使用的编程语言主要是 Java、JavaScript、Python、HTML、SQL、C++ 等。

 

而这些主流编程语言均由国外厂商及科研机构把控。全球编程语言发展水平的高地主要集中在欧洲和美国。丹麦是其中一个代表,丹麦的奥尔胡斯大学一直有研究编程语言的传统,这里涌现出了像 Dart 的作者 Lars Bak 和 C++ 的作者 Bjarne Stroustrup 等人物。其他欧洲国家也有重要贡献,比如荷兰的 Guido van Rossum 开发了 Python,瑞士的 Niklaus Wirth 发明了 Pascal 和 Modula 系列,德国的 Martin Odersky 设计了 Scala。Kotlin 起源于俄罗斯的 099 语言,研究最初是苏联的科研机密项目,Kotlin 这个名字来自圣彼得堡附近的一个岛。此外,日本有 Ruby,巴西有 Lua,而</svg> ") 0px 100% / auto 2px repeat-x transparent; max-width: 100%; overflow-wrap: break-word !important;">中国几乎一片空白。

值得注意的是,在当前复杂的国际形势下,多数主流编程语言可能存在断供风险。比如,有相当多人在使用的 Java,实际上由 Oracle 主导,编译器 OpenJDK 等由美国公司强控制,风险较高。早前,谷歌在开发 Android 时未经授权使用了 37 个来自 Java 的 API,共涉及约 11,500 行代码,自此陷入跟 Oracle 长达十年的诉讼拉锯战,直到 2021 年美国法院才改判谷歌对 Java API 的使用属于合理使用。又如,Go 语言由谷歌开源,目前核心开发团队大多仍在谷歌,也存在一定风险。而由瑞士 ISO 委员会主导的 C/C++,相对而言风险较低。

此外,纵观业界头部大型公司,在编程语言方面均有部署,比如谷歌投入人力研发的 Go、Dart 等语言,苹果开源的 Swift 语言,核心都是为了打造生态入口、构建开发者生态。

构建编程语言周期长,挑战大,当前国内尚无规模商用的自研编程语言。国产编程语言本身也非常稀缺,仅有 Go 语言爱好者发起的凹语言</svg>"); overflow-wrap: break-word !important;">、基于 Go 语言扩展而来 Go+ 语言、用中文来编写程序的易语言,以及目前比较热的 </svg> ") 0px 100% / auto 2px repeat-x transparent; max-width: 100%; overflow-wrap: break-word !important;">MoonBit</svg>"); overflow-wrap: break-word !important;">

正因为存在软件产业发展基础薄弱问题,工信部在十四五规划中将程序设计语言自主可控列为提升产业基础保障水平的一项重点工作。

基于构建开发者生态和编程语言自主可控的诉求,华为于 2019 年启动了仓颉编程语言</svg>"); overflow-wrap: break-word !important;">的开发计划,经过五年不断打磨,完善语言和生态及其基础设施的完美度,如今终于正式对外公布。

仓颉编程语言的定位和竞争力

仓颉被设计为一款面向全场景应用开发的现代编程语言,主打高效编程、安全可靠、轻松并发、卓越性能、敏捷扩展。

在设计时,仓颉团队在安全性、易用性和性能之间进行了权衡。

设计语言时我们无法同时完美满足所有要求,例如,C、Rust、C++ 这类的系统编程语言性能极佳,但开发效率没那么高。JS 这类动态脚本语言开发效率高,但性能略差。Kotlin、Java、Go、Swift 这样的语言居于前两者之间,属于重业务开发的静态类型语言。

仓颉也选择了这种居中的定位,被设计为了具备自动内存管理功能、静态类型、面向应用开发的语言。在效率上,仓颉注重“语法简洁低噪音,且能面向领域易扩展”。在性能上,仓颉注重“垂直整合、性能可伸缩、稳定可预期”。在安全上,仓颉注重“缺省模式安全、强化编译期安全约束”。

目前 Android 和 iOS 操作系统都有首选语言。我们知道 Android 是一个由谷歌主导的适用于移动设备的开源操作系统,2019 年,谷歌宣布 Kotlin 成为 Android 应用程序开发者的首选语言。

而 Swift 则是 iOS 应用程序开发的首选语言。在移动操作系统领域,苹果公司面临着来自 Android 的激烈竞争。Swift 的出现降低了 iOS 开发的门槛,使更多开发者能够更容易地加入 iOS 生态系统。对于苹果公司而言,这意味着可以获得更庞大的开发者群体,从而推动 iOS 平台的繁荣发展。

这两种语言的定位和仓颉一样,居于动态脚本语言和系统编程语言之间。所以我们大胆推测仓颉也非常适合用于鸿蒙应用开发。

  • 原生智能化:仓颉编程语言内嵌了 AgentDSL</svg>"); overflow-wrap: break-word !important;"> 的编程框架,实现了自然语言与编程语言有机融合。多 Agent 协同,简化符号表达,模式可以自由组合,支持各类智能应用开发。

  • 天生全场景:仓颉编程语言采用轻量化可缩放运行时和模块化分层设计,即使在资源受限的设备上也能流畅运行。同时,它支持全场景领域扩展,元编程和 eDSL 技术,可助力面向领域声明式开发。

  • 高性能:仓颉编程语言采用全并发 GC,应用线程运行更加流畅,响应速度更快。轻量化线程设计进一步提升了并发性能,降低了开发成本。

  • 强安全:仓颉编程语言将安全理念融入语言设计,帮助开发者专注于业务逻辑,减少安全漏洞的产生,实现“编码即安全”的愿景。

另外,仓颉编译器及运行时从全栈对编译进行优化,包括编译器前端基于 CHIR(Cangjie HighLevel IR)高层编译优化(比如语义感知的循环优化、语义感知的后端协同优化等),基于后端的编译优化(比如:SLP 向量化、Intrinsic 优化、InlineCache、过程间指针优化、Barrier 优化等),基于运行时的优化(比如轻量锁、分布式标记、并发 Tracing 优化等),一系列的优化让仓颉充分发挥处理器能力,为应用提供卓越的性能支持。

仓颉语言还对运行时进行原生的轻量化设计,通过对运行时模块化分层设计,定义仓颉公共对象模型和运行时公共基础组件,基于公共对象模型,实现运行时的内存管理、回栈、异常处理、跨语言调用等基础能力,大幅减少多个能力间的冗余对象设计,精简运行时体积。同时通过包的按需加载技术,减少仓颉应用启动的冗余包内存开销,因此对于资源敏感设备,占用资源更少,支持更友好。

在计算机语言基准测试 Benchmarks Game 上,仓颉相比业界同类语言取得了较为明显的性能优势。

 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
abcd