倉頡程式語言
![]() | |
編程範型 | 多範式(物件導向、泛函、指令式) |
---|---|
設計者 | 華為公司 |
實作者 | 華為公司 |
作業系統 | OpenHarmony、鴻蒙 (作業系統) |
許可證 | 共享軟體 |
文件擴展名 | .cj |
網站 |
倉頡程式語言是華為自主研發的程式語言,在2024年華為開發者大會上首次公開發布開發者預覽版本。[1]其研發可以追溯到2019年,當時華為啟動了這一項目,並由南京大學計算機科學與技術系馮新宇教授擔任首席架構師。[2]語言的名稱來自於倉頡造字。[3]使用預覽版本SDK需要填寫姓名、手機號、身份證號等信息申請後並簽署保密協議。[4]
特性
[編輯]華為宣稱,倉頡程式語言具有原生智能化、天生全場景,高性能、強安全等特點。[2]從語言規範的制定到實現,以及未來的語言社區都將實現自主可控。[3]
倉頡內置了AgentDSL框架,簡化了agent協作和符號表達式。倉頡語言使用用戶模式執行緒和並發對象庫來簡化開發並提高資源利用率,在編譯器和運行時都進行了性能優化。此外,還提供了包括調試、靜態驗證、性能分析和測試的工具。[5]
生態
[編輯]倉頡程式語言的編譯器是cjc。CPM是倉頡語言內置的包管理器,命令為cjpm。CPM主要用於管理和維護倉頡項目的模塊系統,並提供統一的編譯入口。在倉頡中,包是最小的編譯單元,每個包可以包含多個源文件(.cj文件),並有自己的命名空間;模塊則是包的集合,代表一個完整的功能單元,是第三方開發者發布的最小單元。通過 cjpm init
初始化倉頡模塊或者工作空間後,項目的配置儲存在配置文件cjpm.toml中。[6]
鴻蒙生態向應用開發者提供倉頡和ArkTS等多語言混合開發能力。[3]
語法
[編輯]倉頡的Hello world程序如下:
// main.cj
main(): Int64 {
println("Hello, world!")
return 0
}
不可變變量用 let
關鍵字聲明,可變變量用 var
關鍵字聲明。變量在讀取前必須初始化。變量的類型可以根據提供的初始值自動推斷。如果初始值在變量聲明後才賦予,則必須顯式聲明類型。[7]
模式匹配
[編輯]倉頡提供 match
表達式以進行模式匹配,包含帶待匹配值的 match
表達式,和不帶待匹配值的 match
表達式。帶待匹配值的 match
會依次檢查每個 case
,確保所有可能的值都被考慮到,通常通過在最後一個 case
使用通配符模式 _
來保證窮盡性。不帶待匹配值的 match
表達式無須寫條件的括號。[8]
反響
[編輯]命名
[編輯]海南日報評論稱,華為以「倉頡」為程式語言命名,將神話元素與科技產品巧妙融合,既形象地展示了這個產品的功用,也使產品有了浪漫與典雅的氣息。[9]
參考文獻
[編輯]- ^ 倪雨晴. 21深度|鸿蒙1778天“纯血”之路. 21世紀經濟報道. 2024-06-21 [2024-06-30]. (原始內容存檔於2024-07-01) (中文(中國大陸)).
- ^ 2.0 2.1 华为发布通用编程语言“仓颉”,南京大学计算机科学与技术系冯新宇教授作为首席架构师领导研发. www.nju.edu.cn. 2024-06-21 [2024-06-30]. (原始內容存檔於2024-06-30).
- ^ 3.0 3.1 3.2 汪淼. 华为:仓颉编程语言自主可控,没有基于任何现有的编程语言演进. IT之家. 2024-06-21 [2024-06-30]. (原始內容存檔於2024-07-17).
- ^ 华为仓颉编程语言官方入门教程发布,一文看懂如何获取通用版本 SDK - IT之家. www.ithome.com. [2024-07-01]. (原始內容存檔於2024-07-01).
- ^ Табаков, Дмитро. Huawei introduced its Cangjie programming language with integration into HarmonyOS. hi-Tech.ua. 2024-06-26 [2024-06-30]. (原始內容存檔於2024-06-30) (英語).
- ^ cjpm 介绍. 華為開發者聯盟. 2024-06-21 [2024-07-01]. (原始內容存檔於2024-08-10).
- ^ 劉玥. 仓颉编程快速上手. 2024-07-01. ISBN 9787115624710.
- ^ 張磊. 仓颉语言实战(微课视频版). 清華大學出版社. 2024. ISBN 9787302616597.
- ^ 梁君窮. 名字里的中国浪漫. 海南日報. 2024-08-12: –9 [2025-02-28].