1.仓颉简介

仓颉编程语言是一种面向全场景应用开发的通用编程语言,可以兼顾开发效率和运行性能,并提供良好的编程体验,主要具有如下特点:

  • 语法简明高效:仓颉编程语言提供了一系列简明高效的语法,旨在减少冗余书写、提升开发效率,例如插值字符串、主构造函数、Flow 表达式、matchif-letwhile-let 和重导出等语法,让开发者可以用较少编码表达相关逻辑。
  • 多范式编程:仓颉编程语言支持函数式、命令式和面向对象等多范式编程,融合了高阶函数、代数数据类型、模式匹配、泛型等函数式语言的先进特性,还有封装、接口、继承、子类型多态等支持模块化开发的面向对象语言特性,以及值类型、全局函数等简洁高效的命令式语言特性。开发者可以根据开发偏好或应用场景,选用不同的编程范式。
  • 类型安全:仓颉编程语言是静态强类型语言,通过编译时类型检查尽早识别程序错误,降低运行时风险,也便于代码维护。同时,仓颉编译器提供了强大的类型推断能力,可以减少类型标注工作,提高开发效率。
  • 内存安全:仓颉编程语言支持自动内存管理,并在运行时进行数组下标越界检查、溢出检查等,确保运行时内存安全。
  • 高效并发:仓颉编程语言提供了用户态轻量化线程(原生协程),以及简单易用的并发编程机制,保证并发场景的高效开发和运行。
  • 兼容语言生态:仓颉编程语言支持和 C 等主流编程语言的互操作,并采用便捷的声明式编程范式,可实现对其他语言库的高效复用和生态兼容。
  • 领域易扩展:仓颉编程语言提供了基于词法宏的元编程能力,支持在编译时变换代码,此外,还提供了尾随 lambda、属性、操作符重载、部分关键字可省略等特性,开发者可由此深度定制程序的语法和语义,有利于内嵌式领域专用语言(Embedded Domain Specific Languages,EDSL)的构建。
  • 助力 UI 开发:UI 开发是构建端侧应用的重要环节,基于仓颉编程语言的元编程和尾随 lambda 等特性,可以搭建声明式 UI 开发框架,提升 UI 开发效率和体验。
  • 内置库功能丰富:仓颉编程语言提供了功能丰富的内置库,涉及数据结构、常用算法、数学计算、正则匹配、系统交互、文件操作、网络通信、数据库访问、日志打印、解压缩、编解码、加解密和序列化等功能。

2.下载仓颉SDK和vscode插件

进入仓颉官网下载中心:下载中心-仓颉编程语言官网

点击**即刻下载**

选择合适的版本

解压得到Cangjie-0.53.18-windows_x64

下载底部的vscode插件

解压得到Cangjie-vscode-0.53.18

3.设置系统环境变量

安装包中,仓颉为开发者提供了三种不同格式的安装脚本,分别是 envsetup.batenvsetup.ps1envsetup.sh,可以根据使用习惯及环境配置,选择一种执行:

  • 若使用 Windows 命令提示符(CMD)环境,请执行:

    1
    path\to\cangjie\envsetup.bat
  • 若使用 PowerShell 环境,请执行:

    1
    . path\to\cangjie\envsetup.ps1
  • 若使用 MSYS shell、bash 等环境,请执行:

    1
    source path/to/cangjie/envsetup.sh

为了验证是否安装成功,请在以上命令环境中继续执行 cjc -v 命令,如果输出了仓颉编译器版本信息,表示已经成功安装了仓颉工具链。

cmd中测试:

1
cjc -v

输出

1
2
Cangjie Compiler: 0.53.18 (cjnative)
Target: x86_64-w64-mingw32

则配置成功

!!!如果不能正确识别,采用以下手动方式!!!

设置系统变量CANGJIE_HOME为安装仓颉SDK的目录(例如D:\Cangjie-0.53.18-windows_x64\cangjie)

path新添:

1
2
3
4
5
6
%CANGJIE_HOME%\runtime\lib\windows_x86_64_llvm
%CANGJIE_HOME%\lib\windows_x86_64_llvm
%CANGJIE_HOME%\bin
%CANGJIE_HOME%\tools\bin
%USERPROFILE%\.cjpm\bin
%CANGJIE_HOME%\tools\lib

3.安装vscode插件

打开第二个解压好的文件夹Cangjie-vscode-0.53.18

有一个文件:cangjie-0.53.18.vsix

打开vscode,选择从VISIX安装,选择该文件,安装仓颉插件。

安装好后,打开扩展设置,输入SDK路径到第一项

4.设置vscode里的环境

这里给出三种运行.cj文件的方法,第三种利用cjc和cjdb可以实现断点调试。

利用cjpm(推荐)

打开需要放置仓颉项目的文件夹

命令行输入命令,初始化项目

1
cjpm init

可以看到成功创建仓颉项目,以及默认的hello world代码

命令行输入

1
cjpm build

可以看到生成了可执行文件main.exe

输入

1
cjpm run

或者点击右上角运行按钮

PS:注意终端默认在你选择打开文件夹的时候的位置,需要精确到项目文件夹,否则会报错找不到cjpm.toml

效果为代码先build,之后在终端运行出结果

利用coderunner和cjc实现(次推荐)

下载coderunner插件

打开配置,找到Executor Map By File Extension进入settings.json

在开头添加一段

1
".cj": "cd $dir && cjc $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt",

默认Ctrl+Alt+N使用code runner运行

可以看到终端里成功运行,并且生成了exe文件

利用cjc和cjdb创立生成任务和运行任务(灵活性高,可调试)

.vscode下task.json`新建生成任务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"label": "仓颉:cjc.exe 生成可活动文件",
"type": "shell",
"command": "cjc",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"group": {
"kind": "build",
"isDefault": false
},
"problemMatcher": []
}

"${fileDirname}\\${fileBasenameNoExtension}.exe"指的是在文件同目录生成exe,如果想要在output里生成,可改为"${fileDirname}\\output\${fileBasenameNoExtension}.exe"

.vscode下launch.json`新建运行任务:

1
2
3
4
5
6
7
8
9
{
"name": "仓颉:cjc.exe 生成和调试可活动文件",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"request": "launch",
"type": "cangjieDebug",
"externalConsole": false,
"env": {},
"preLaunchTask": "仓颉:cjc.exe 生成可活动文件"
},

同理,如果想要在output里生成,可改为"${fileDirname}\\output\${fileBasenameNoExtension}.exe"

这里的"preLaunchTask": "仓颉:cjc.exe 生成可活动文件"保证运行时先生成exe文件。

生成可执行文件

打开文件,运行任务,选中刚刚创建的任务

可以看到成功生成

直接运行

打开文件,选中以非调试模式运行

可以看到生成并且运行

调试运行

可以看到断点成功创建并且可以实现逐步运行变量监控等等。

以上便是三种运行方式,可以按需求和喜好自行选择。