| 倉結 | |
|---|---|
| パラダイム | マルチパラダイム:関数型、ジェネリック、命令型、宣言型、オブジェクト指向 |
| 開発者 | ファーウェイ |
| 初登場 | 2024年6月21日 ( 2024-06-21 ) |
| 安定版リリース | 0.53.18 (ベータ版) / 2025年2月7日 (2025年2月7日) |
| タイピングの規律 | アヒル、漸進的、構造的、静的、強い、安全、主格、明白、強い、推論 |
| OS | HarmonyOS、Linux、Windows、macOS、Android、iOS |
| ライセンス | オープンソース |
| ファイル名拡張子 | .cj |
| Webサイト | |
| 影響を受けた | |
| ArkTS、TypeScript、JavaScript、Swift、C#、F#、Java、C++、Go、Python | |
倉頡(中国語:仓颉、ピンイン:cāngjié)は、Huaweiが開発した高水準、静的型付け、汎用、マルチパラダイム、コンパイル 型、命令型および宣言型のプログラミング言語である。2024年6月21日に、 HarmonyOSオペレーティングシステムのプレビュー版上でのHarmonyOS NEXTアプリ開発のための開発者ベータ募集の一環として初めてリリースされた。[ 1 ]倉頡言語またはCJとも呼ばれるが、正式名称は倉頡である。[ 2 ]
語源
蒼頡は中国の民間伝承に登場する伝説の人物で、漢字を初めて発明したとされています。[ 3 ]蒼頡入力方式も同様に彼にちなんで名付けられました。Huaweiは、麒麟(中国語:麒麟、ピンイン:qílín )にちなんで名付けられたHuawei Kirinモバイルチップセットなど、中国の神話上の生き物の名前を使用した他の製品もリリースしています。[ 4 ]
歴史
倉頡の開発は、南京大学コンピュータ科学技術学部の教授である馮馨宇氏によって2019年に開始されました。[ 5 ]彼は、最初の5年間の開発で天津大学と北京航空航天大学の支援を受け、 [ 6 ] [ 7 ] [ 8 ]最終的には、HarmonyOSの最初のリリースの開発中とR&Dラボでのインキュベーション後に、Huaweiの多くのソフトウェアプログラマーとエンジニアの協力を得ました。 [ 9 ]
2020年、ファーウェイは「倉頡言語」を商標登録しました。これは中国では「科学機器」および「ウェブサービス」の知的財産として分類されました。当時、ファーウェイが新たな独自のプログラミング言語を開発しているという噂もありました。[ 10 ]
2021年10月に開催されたHDC 2021において、HarmonyOS 3開発者プレビューが正式にリリースされました。これは、OSが宣言型プログラミングソフトウェア開発へと移行していく中での発表でした。Huaweiは当時、将来的にHarmonyOS向けに自社開発のプログラミング言語を導入すると発表しました。[ 11 ]
また、2021年から2022年の間に、このプログラミング言語は実際には2022年にリリースされる予定だったと報告されています。HarmonyOSオペレーティングシステムの開発が進行中だったため、延期されたと思われます。[ 1 ] [ 12 ] [ 13 ]
2024年5月17日、Cangjieプログラミング言語は、外部関数インターフェース(FFI)メカニズムを通じてOpenHarmonyソースコードに内部的に追加されました。[ 14 ]
2024年6月17日、HDC 2024の4日前に、ファーウェイはプログラミング言語ラボの名前をCangjieプログラミング言語に変更し、イベントで新しいプログラミング言語の開発者セッションを発表しました。[ 15 ]
Huawei HDC 2024開発者会議(登録期間は2024年6月21日から2024年10月21日まで)において、HarmonyOS NEXTのベータ版の募集が行われた。[ 16 ] Huawei Mate60 Proデバイスのみがサポートされ、2025年にはさらに多くのデバイスがサポートされる予定である。 [ 17 ]シリコンバレーに拠点を置くLeetCode、ICBC銀行、China Mobile、Kelan Softwareは、Huaweiがこの新しいプログラミング言語を使用して採用した最初の地元のアプリ開発企業の一部であった。これは、新しいHarmonyOS Nextバージョンプラットフォームの立ち上げ時に、中国市場に商用アプリをリリースすることにより、他の開発者や業界にテストと紹介を行うためであった。[ 18 ]
2024年7月5日から7日にかけて、ACM China Turing Conference 2024がHuawei Cangjieプログラミング言語フォーラムと共催され、中国の大学における新しい国産プログラミング言語の導入と学術界への統合が紹介されました。[ 19 ] [ 20 ]
2024年9月、Cangjieプログラミング言語がLeetCodeで正式にリリースされました。[ 21 ]
Cangjieは2025年7月30日にオープンソース化されました。[ 6 ] [ 8 ]
バージョン履歴
DevEco Studio IDE 経由のOpenHarmonyコア API レベル 12 SDKを搭載した HarmonyOS を搭載した Cangjie リリースのバージョン履歴。
| バージョン | 発売日 | macOS | ウィンドウズ |
|---|---|---|---|
| Cangjie 1.0 ベータ版[ 22 ] | 2024年6月21日 | はい | はい |
プラットフォーム
Cangjie がアプリ開発でサポートするプラットフォームは、HarmonyOS、Linux、Windows、macOS、Android、iOSです。
Cangjieの設計の重要な側面は、ArkTSコードの有無にかかわらずアタッチできることです。HarmonyOSを搭載したHuaweiデバイスでは、DevEco StudioテンプレートのネイティブAPI、C、C++、ArkTSコードを1つのプログラム内で並行して実行できます。[ 23 ]
特徴
ArkTSとは異なり、Cangjieは既存のプログラミング言語に基づいて進化したわけではない汎用プログラミング言語です。しかし、このプログラミング言語は、Javaなどの同カテゴリの既存言語に見られる現代的なプログラミング言語理論の概念と高度な機能を採用しています。Typescript中心のArkTS言語と組み合わせることで、多言語ハイブリッド開発環境で使用でき、相補的な利点を生み出し、効率性の向上や様々なシナリオに対応できます。[ 24 ]
Cangjie は、組み込みの AgentDSL プログラミング フレームワーク、自然言語とプログラミング言語の有機的な統合を特徴としています。
既存のArkTSで開発されたアプリケーションは、HarmonyOS NextバージョンでCangjieバージョンに再開発する必要がないと報告されています。HarmonyOSは、Cangjie言語とArkTS言語間の高性能な相互運用性をサポートしています。将来的には、開発者はCangjieプログラミング言語とArkTSのいずれかを選択して段階的に開発を進め、開発者のニーズを満たすことができます。[ 25 ] [ 17 ]
Huawei社はまた、この言語はセキュリティ機能を設計に統合しており、開発者がアプリケーションの機能に集中できるようにしながら、潜在的なセキュリティ上の脆弱性を減らすことを目指していると主張している。[16] [5] この言語は、静的型システムと自動メモリ管理を提供し、アプリケーションの安定性を高めるとともに、実行時エラー検出と言語間セキュリティ対策も提供している。 [26] Cangjieは、ハイライトと関連付け、言語間デバッグとスレッドレベルのビジュアルデバッグによるデバッグ、静的チェック、パフォーマンス分析、パッケージ管理、ドキュメント生成、モックツール、テストフレームワーク、カバレッジツール、ファズツール、インテリジェントなプログラミング支援ツールなどの言語サービスを含む、アプリ開発用のさまざまなツールチェーンもサポートしている。[ 27 ]
基本的な構文
Cangjie の「Hello, World!」プログラムは次のとおりです。
主要(){println ( "こんにちは、世界!" )}不変変数はキーワードで宣言されlet、可変変数はキーワードで宣言されますvar。値は読み込まれる前に初期化する必要があります。値は、指定された初期値の型に基づいて型を推測できます。初期値が値の宣言後に設定される場合は、型を明示的に宣言する必要があります。[ 28 ]
パターンマッチング
蒼頡におけるパターンマッチングは式によって提供されmatch、式には2つの形式があります。1つは一致する値を持つ形式、もう1つは一致しない形式です。match値を持つ式は、各値をcase順にチェックし、パターンが一致した場合に対応するコードを実行します。網羅性を保証するために、後者はワイルドカードパターンcaseを使用してすべての可能な値をカバーすることがよくあります。値を持たない式でも、caseに続く式を評価するため、条件に括弧は必要ありません。[ 1 ]_match
ラムダ式
f = { a : Int64 、b : Int64 = > a + b }とします。let print = { = > println ( "こんにちは、蒼頡" )}外部関数インターフェース
CangjieはCとPythonのFFIサポートを内蔵しています。外部関数はキーワードを使用して宣言され、キーワードを使用して呼び出されます。CangjieはCangjieの基本データ型間の自動変換をサポートしています。例えば、 型はCのポインタ型に対応し、に対応します。Pythonの場合、Cangjieはstdのffi.pythonライブラリを介して相互作用をサポートします。Pythonバージョン3.0以上が必要で、現在はLinuxでのみ動作します。[ 29 ]以下に例を示します。 foreignunsafeCPointer<T>CPointer<Int32>int32_t *
| Cコード | 倉頡コード |
|---|---|
#include <stdio.h>#include <stdlib.h>int getRandom () {int i =ランド();iを返します。} | stdからffi . c . *をインポートします。外部関数getRandom (): Int32メイン():ユニット{r =安全でないgetRandom ()とするprintln ( "乱数 $(r)" )} |
メタプログラミング
Cangjieはメタプログラミングのために明示的に設計されており[ 30 ]、主に2種類のマクロをサポートしています。
- 非属性マクロ。装飾するコードに対して単一の入力パラメータを受け取ります。
- 属性マクロは追加の属性パラメータを受け入れ、開発者がマクロに追加情報を渡すことを可能にします。
関数と比較して、Cangjieのマクロはmacroキーワードを必要とします。これはa内に記述できmacro package、@記号を使用して呼び出されます。マクロのネストは呼び出し内でサポートされていますが、マクロ定義自体はネストできません。ネストされたマクロの展開は内側から外側への順序に従い、マクロはグローバル変数を介して情報を共有できます。マクロは括弧で囲まれた呼び出しと括弧で囲まれていない呼び出しの両方に出現できます。開発者は引用符式を使用してTokenオブジェクトを作成できます。[ 29 ]
STDモジュールランタイム
STDモジュールランタイム(std.runtime)は、Cangjie標準ライブラリ(Cangjieプログラミング言語ライブラリAPI経由)のランタイムパッケージであり、プログラムの実行環境と連携します。プログラムの実行を制御、管理、監視するための関数と変数を備えています。[ 1 ]
開発ツール
コンパイラ
Ark Compilerを使用すると、 JavaScript、TypeScript、ArkTS、Cangjieなどのさまざまな動的および静的高水準プログラミング言語をサポートし、Cangjie-ArkTS相互運用性も備えています。 [ 31 ] OpenHarmonyはHarmonyOSとともに、スマートデバイス、携帯電話、PC、タブレット、テレビ、自動車、ウェアラブルなどの複数のデバイス形式で実行できるようにするコンパイルおよびランタイムベースです。ArkCompilerは、コンパイラツールチェーンとランタイムの2つの部分で構成されています。[ 32 ]
Cangjieプログラミング言語には、Windows、Linux、macOS、HarmonyOS(OpenHarmony)などの複数のプラットフォーム上での高レベルネイティブコード開発のためのCangjieランタイムを含む専用のLLVMベースのCangjieコンパイラも搭載されており、 PCプラットフォームや複雑なアプリケーションを対象としています。[ 33 ]
パッケージマネージャー
Cangjie Package Manager ( CPM ) は、 cjc ツールチェーンにインストールされる Cangjie プログラミング言語の組み込みパッケージ管理ツールです。Cangjie では、パッケージは最小のコンパイル単位で、各パッケージは複数のソースファイル (.cj ファイル) を含むことができ、独自の名前空間を持つことができます。モジュールはパッケージのコレクションであり、完全な機能単位を表し、サードパーティ開発者のリリースの最小単位として機能します。このnewコマンドは新しいモジュールを作成し、module.json ファイルと src フォルダを生成します。各モジュールのプログラムエントリポイントはルートディレクトリに配置する必要があり、最上位レベルにはプログラムエントリポイントとして最大1つの main 関数を含めることができます。[ 29 ]
IDEとエディターのサポート
CangjieはHarmonyOSネイティブ開発にDevEco Studioプラグインを使用しています。[ 34 ] [ 35 ]
参照
参考文献
- ^ a b c d e張磊 2024a .
- ^松井恵美子 (2024年6月21日). 「Huaweiプログラミング言語、HDC 2024で正式デビュー」 . Huawei Central . 2024年7月6日閲覧。
- ^張、Shudong (2005)。 「3」。中华印刷通史『中国印刷史概説』(中国語)台北:星彩文学基金会. ISBN 957-99638-3-5。
- ^ Junqiong、Liang (2024 年 8 月 12 日)。『名字里的中国浪漫』海南日報。
- ^ a b "华為播布通用编程语言"仓颉",南京大学计算机科学与技术系冯新宇教授作首席架构师领导研発行" [ファーウェイは「Cangjie」と呼ばれる汎用プログラミング言語をリリースし、南京大学CS技術学部のFeng Xinyu氏がチーフアーキテクトとして開発を主導した。] www.nju.edu.cn (中国語)。 2024 年 6 月 21 日。2024年 6 月 30 日のオリジナルからアーカイブされました。
- ^ a b「Huawei、自社開発プログラミング言語Cangjieをオープンソース化へ」 thestar . The Star (マレーシア) . 2025年7月3日. 2025年9月4日閲覧。
- ^天津大学、北航深度参与华は"仓颉"、推出首个ベース国产编程语言的AI智能体编程框架"苍穹"天津大学と北京航空航天大学がファーウェイの「蒼傑」に深く参加、国産プログラミング言語「蒼瓊」をベースとした初のAIインテリジェントエージェントプログラミングフレームワークを発表。www.ithome.com 。2024年7月6日閲覧。
- ^ a b「Cangjie (プログラミング言語)」 . TAdviser . 2024年9月5日閲覧。
- ^华為下一代编程语言"仓颉"首席架构师揭晓:南京大学冯新宇教授【ファーウェイの次世代プログラミング言語「Cangjie」のチーフアーキテクトが明らかに:南京大学の馮欣宇教授】ITHome . 2024年7月6日閲覧。
- ^ Amit (2021年9月25日). 「Huawei、来年自社開発のプログラミング言語Cangjieをリリース予定」 . HU . 2024年7月6日閲覧。
- ^ Benjie, Joshua (2022年3月17日). 「Huawei、独自のプログラミング言語登録をテスト中」 . RPRNA . 2022年3月17日時点のオリジナルよりアーカイブ。2024年7月6日閲覧。
- ^ Li, Deng (2022年6月16日). 「Huaweiのプログラミング言語は今年後半にリリース予定」 . Huawei Central . 2024年7月6日閲覧。
- ^ Walker, Elyssa (2020年2月2日). 「Huaweiは独自のプログラミング言語を開発中 - 2022年に発表予定」 . CodeBug'22 . 2024年7月6日閲覧。
- ^ Benjamin (2024年5月14日). 「Huaweiの自社開発プログラミング言語Cangjie(CJ)は、予想よりも近い今月後半にリリースされる可能性がある」 . HarmonyOSHub . 2024年7月6日閲覧。
- ^ Nick (2024年6月17日). 「Huawei、プログラミング言語ラボを『Cangjieプログラミング言語』に改名、HDC 2024でインサイトを発表」 . HarmonyOSHub . 2024年7月6日閲覧。
- ^ a b Rajesh (2024年6月6日). 「Huawei、自社開発のプログラミング言語「Cangjie」を発表」 . gizmochina . 2024年9月5日閲覧。
- ^ a b "华のため开启鸿蒙 HarmonyOS NEXT 仓颉编程语言开発行者预览版 Beta 招集 - IT之家" . www.ithome.com 。2024 年7 月 6 日に取得。
- ^ "华為仓颉编程语言首批合作企业亮相:中国工商银行、中国移動、科蓝软件等在列 - IT之家" . www.ithome.com 。2024 年7 月 6 日に取得。
- ^ "ACM 中国图灵大会 2024 は 7 月 5 日に開催され、设华は仓颉编程语言论坛 - IT之家" . www.ithome.com 。2024 年7 月 6 日に取得。
- ^ Nick (2024年7月7日). 「Cangjieプログラミング言語がACM China Turing Conferenceで発表」 . HarmonyOSHub . 2024年7月7日閲覧。
- ^编程刷题平台 LeetCode 力扣すべての項目すべてすでに支持华のために仓颉语言[プログラミング練習プラットフォームLeetCodeのすべての問題が、HuaweiのCangjie言語でサポートされるようになりました]。Sohu . 2024年12月3日閲覧。
- ^松井恵美子 (2024年6月21日). 「Huawei、Cangjieプログラミング言語ベータ版の募集を開始」 . Huawei Central . 2024年7月6日閲覧。
- ^华為仓颉编程语言首批作企业亮相:中国工商银行、中国移動、科蓝软件等在列[Huaweiのプログラミング言語Cangjie、最初のパートナー企業を発表:ICBC、China Mobile、Kingsoft Softwareなどが含まれる] ITHome . 2024年7月6日閲覧。
- ^ "华以:仓颉编程语言自主可制御,不基有的编程语言演进 - IT之家" . www.ithome.com 。2024 年7 月 6 日に取得。
- ^ 「Huaweiが独自のプログラミング言語Cangjieを発表」 ITC.ua 2024年6月21日. 2024年7月6日閲覧。
- ^ 「Huawei、ネイティブインテリジェンスと強力なセキュリティを備えた新しいプログラミング言語を発表」 2024年6月23日。 2024年7月6日閲覧。
- ^ Bates, Kryzt (2024年6月21日). 「Huawei、5年間の研究を経て次世代プログラミング言語『Cangjie』をリリース」 GAMINGDEPUTY . 2024年7月6日閲覧。
- ^劉岳 2024。sfn エラー: ターゲットがありません: CITEREFLiu_Yue2024 (ヘルプ)
- ^ a b c徐立文 2024 .
- ^ Dong、Sun、およびSchum 2024。sfn エラー: ターゲットがありません: CITEREFDong、_Sun、_and_Schumi2024 (ヘルプ)
- ^ openharmony/arkcompiler_cangjie_ark_interop、OpenHarmony、2025年12月1日、 2025年12月5日閲覧
- ^ "ArkCompiler Runtime" . OpenAtom Gitee . 2024年2月12日閲覧。
- ^ cangjie language/cangjie_compiler、滄街、2025 年 12 月 5 日、 2025 年12 月 5 日に取得
- ^ 「HarmonyOS NEXT Cangjie言語開発者プレビューベータ募集」 . Huawei Developer (HarmonyOS Developer) . Huawei . 2024年7月6日閲覧。
- ^ Adolphi, Benjamin (2025年5月20日). 「HarmonyOS NEXTのアプリセキュリティ初見」 . promon . 2025年9月12日閲覧。
さらに読む
- 劉安展(2024年6月30日). 『蒼頡プログラミング言語』(中国語).清華大学出版局. ISBN 978-7302615309。
- 徐立文(2024年6月30日).序論. 蒼頡言語による高度で実用的なプログラミング(中国語).清華大学出版局. ISBN 978-7302625889。
- Liu Yue、Zhang Rong Chao(2024年7月1日)。Cangjieプログラミングクイックスタート(中国語)。郵政電気通信出版局。ISBN 978-7115624710。
- 張磊(2024年7月1日a).蒼頡言語実践マイクロレッスン(中国語).清華大学出版局. ISBN 978-7302616597。
- 張磊(2024年7月1日b)『蒼頡言語メタプログラミング』(中国語)清華大学出版局。ISBN 978-7302637936。
- Jun Wang; Chenghao Su; Yijie Ou (2025年8月1日). 「コンパイラフィードバックを用いた低リソース言語への翻訳:Cangjieのケーススタディ」. IEEE Transactions on Software Engineering . 51 (9). IEEE : 2671– 2692. Bibcode : 2025ITSEn..51.2671W . doi : 10.1109/TSE.2025.3594908 .
- Guoliang Dong、Jun Sun、Richard Schumi (2024年1月2日). 「PTE: 公理的セマンティクスに基づくコンパイラテスト」. arXiv : 2401.01036 [ cs.SE ].
- Sam Lindley (2025年4月1日). 「エフェクトハンドラ指向プログラミング」(PDF) .エディンバラ大学.