当前位置: 首页 > news >正文

仓颉语言语法特点、使用范围、编译及环境搭建:从零开始第一个cangjie程序

仓颉编程语言是华为自主研发的一种面向全场景应用开发的现代编程语言。它的设计目标是提供高效、安全、易于维护的编程体验,支持多种开发场景,包括移动应用、桌面应用、物联网设备等。仓颉语言旨在通过其独特的语法和特性,帮助开发者更高效地构建复杂的系统应用。

官网地址:https://developer.huawei.com/consumer/cn/cangjie/

在这里插入图片描述

仓颉语法特点

仓颉语言在TypeScript的基础上进行了扩展,并引入了一些新的特性,使其更适合HarmonyOS的开发需求。以下是仓颉语言的一些主要语法特点:

  1. 静态类型检查
    仓颉语言支持强类型系统,要求在声明变量时指定类型。这有助于在编译阶段发现类型错误,提高代码的健壮性。
var count1: Int8 = 6             // 声明count1为Int8类型
var count2: Float64 = 3.14       // 声明count2为Float64类型
  1. 插值字符串
    仓颉支持使用 ${} 语法在字符串中嵌入表达式,这使得字符串操作更加简洁和直观。
let fruit = "apples"
let count = 10
let s = "There are ${count * count} ${fruit}"
  1. 元组和数组
    仓颉提供了元组和数组的声明方式,元组用于表示已知数量和类型的元素集合,数组用于表示相同类型的有序集合。
var tuple1: (Bool, Float64, String) = (false, 3.14, "cj") // 定义元组tuple1并制定类型
var array1: Array<String> = ["1", "2", "3"]                // 声明一个String数组
  1. 面向对象编程
    仓颉支持面向对象编程,包括类的定义、继承、方法重写等特性。类使用 class 关键字定义,继承使用 <: 符号,方法重写使用 override 关键字。
class Person {var name: Stringvar age: Intinit(name: String, age: Int) {this.name = namethis.age = age}func info(): String {return "name: ${this.name}, age: ${this.age}"}
}class Zhangsan <: Person {init(name: String, age: Int) {super(name, age)}override func info(): String { // 重写父类方法return "Hello, " + super.info() // 调用父类方法}
}
  1. 接口
    仓颉支持接口定义和实现,接口定义抽象方法和属性,类通过 <: 关键字实现接口。
interface IPlay {func play(): Unit
}interface IRun {func run(): Unit
}class Teacher <: IPlay & IRun {public func play(): Unit {println("play")}public func run(): Unit {println("run")}
}
  1. 直接扩展和接口扩展
    仓颉支持对类进行直接扩展和接口扩展,可以为现有类添加新方法或属性。
extend TeacherA {func updateInfo(name: String, age: Int): Unit {this.name = namethis.age = age}
}interface IInfo {func info(): Unitmut prop address: Stringprop email: String
}extend TeacherA <: IInfo {public mut prop address: String {get() {"Beijing"}set(value) {address = value}}public prop email: String {get() {"arkui.club@cj.com"}}public func info(): Unit {println("teacher info, name = ${this.name}, age = ${this.age}, address = ${address}")}
}
仓颉语言的使用范围

仓颉语言主要用于全场景应用开发,包括但不限于以下领域:

  • 移动应用:开发适用于手机、平板等移动设备的应用。
  • 桌面应用:开发适用于计算机桌面环境的应用。
  • 物联网设备:开发适用于各种物联网设备的应用。
  • 系统应用:开发操作系统级别的应用,利用HarmonyOS的分布式能力等系统特性。
仓颉语言如何编译

仓颉语言需要通过编译器将其编译为JavaScript代码,然后在支持JavaScript的环境中运行。以下是仓颉编译的基本步骤:

  1. 安装编译器
    首先,你需要安装仓颉编译器。编译器通常可以通过华为提供的安装包或包管理工具进行安装。

  2. 编写代码
    使用仓颉语法编写你的代码。确保代码符合仓颉的语法规则。

  3. 编译代码
    使用编译器将仓颉代码编译为JavaScript代码。编译命令通常类似于以下形式:

cjc yourfile.cj

这将生成一个JavaScript文件,可以在支持JavaScript的环境中执行。

环境搭建

仓颉工具链概述

在开发仓颉程序时,必用的工具之一是仓颉编译器,它可以将仓颉源代码编译为可运行的二进制文件,但现代编程语言的配套工具并不止于此,实际上,仓颉为开发者提供了编译器、调试器、包管理器、静态检查工具、格式化工具和覆盖率统计工具等一整套仓颉开发工具链,同时提供了友好的安装和使用方式,基本能做到“开箱即用”。

目前仓颉工具链已适配部分版本的 Linux 和 Windows 平台,但是仅针对部分 Linux 发行版做了完整功能测试,详情可参阅附录Linux 版本工具链的支持与安装章节,在暂未进行过完整功能测试的平台上,仓颉工具链的功能完整性不受到保证。此外,当前 Windows 平台上的仓颉编译器基于 MinGW 实现,相较于 Linux 版本的仓颉编译器,功能会有部分欠缺。

下载安装包

仓颉编程语言提供三个版本通道(LTS、Beta 和 Dev),每个通道均提供可以在Linux、Windows以及Mac上安装使用的软件包与帮助开发者在VScode平台上搭建开发环境的插件。下载地址为下载中心-仓颉编程语言官网

下载地址:https://cangjie-lang.cn/download
以Windows环境为例,下载完成之后,会得到一个Cangjie-x.y.z-windows_x64.zip安装包。

安装

选择 zip 格式的安装包,请将它解压到适当目录,在安装包中,仓颉为开发者提供了三种不同格式的安装脚本,分别是 envsetup.bat,envsetup.ps1 和 ,可以根据使用习惯及环境配置,选择一种执行:

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

path\to\cangjie\envsetup.bat

若使用 PowerShell 环境,请执行:

. path\to\cangjie\envsetup.ps1

若使用 MSYS shell、bash 等环境,请执行:

source path/to/cangjie/

注意:基于 zip 安装包和执行脚本的安装方式,类似于 Linux 平台,即 envsetup 脚本所配置的环境变量,只在当前命令行环境中有效,如果打开新的命令行窗口,需要重新执行 envsetup 脚本配置环境。

envsetup.bat内容如下:

@REM Copyright Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.
@REM This script needs to be placed in the root directory of installation of Cangjie compiler and libraries.@echo off
REM Set CANGJIE_HOME to the path of this batch script.
set "CANGJIE_HOME=%~dp0"REM Windows searches for both binaries and libs in %Path%
set "PATH=%CANGJIE_HOME%runtime\lib\windows_x86_64_llvm;%CANGJIE_HOME%bin;%CANGJIE_HOME%tools\bin;%CANGJIE_HOME%tools\lib;%PATH%;%USERPROFILE%\.cjpm\bin"

验证

仓颉SDK目录下,会有一个仓颉编译器,执行“cjc -v”来验证安装是否完成:

>cjc -vCangjie Compiler: 0.53.13 (cjnative)
Target: x86_64-w64-mingw32

Cangjie插件方式使用仓颉

为了开始使用仓颉语言进行HarmonyOS应用开发,你需要搭建相应的开发环境。以下是环境搭建的基本步骤:

  1. 安装Node.js
    仓颉编译器依赖于Node.js环境。你可以从Node.js官网下载并安装Node.js。

  2. 安装DevEco Studio
    DevEco Studio是华为提供的集成开发环境(IDE),支持多种编程语言,包括仓颉。你可以从DevEco Studio官网下载并安装DevEco Studio。

  3. 下载Cangjie插件
    从华为开发者网站下载Cangjie for DevEco Studio插件。你可以访问华为开发者官网下载插件,选择 DevEco Studio NEXT Developer Beta2-Cangjie Plugin(5.0.3.500)

  4. 安装插件
    在DevEco Studio中从本地磁盘安装插件。步骤如下:

    • 打开DevEco Studio。
    • 进入 File -> Settings -> Plugins
    • 点击 Install Plugin from Disk
    • 选择下载好的 devecostudio-cangjie-plugin-windows-5.0.3.500.zip 文件。
    • 点击 Install 并重启DevEco Studio。
  5. 手动安装Cangjie SDK(可选):
    如果你更喜欢手动安装SDK,可以从上述网站下载插件后,解压其中的 harmonyos-cangjie-sdk-windows.zip,得到以下目录结构(部分文件和层级省略):

cangjie
├── build
│   ├── linux_ohos_aarch64_llvm
│   └── x86_64-w64-mingw32
├── compiler
│   ├── bin
│   ├── lib
│   ├── modules
│   ├── runtime
│   ├── third_party
│   └── tools
└── jslibs-loader└── lib
└── musl└── usr

将解压出来的目录(包括 cangjie)移动到一个专门的位置,比如 C:\Users\yang\.cangjie-sdk\5.0\ 下。这个方式和使用插件安装没有区别。

  1. 添加环境变量
    手动安装后,需要添加以下环境变量:

    • CANGJIE_HOME: 指向 cangjie 编译器的目录,例如 C:\Users\yang\.cangjie-sdk\5.0\cangjie\compiler
    • PATH: 增加以下路径:
      • C:\Users\yang\.cangjie-sdk\5.0\cangjie\compiler\runtime\lib\windows_x86_64_llvm
      • C:\Users\yang\.cangjie-sdk\5.0\cangjie\compiler\lib\windows_x86_64_llvm
      • C:\Users\yang\.cangjie-sdk\5.0\cangjie\compiler\bin
      • C:\Users\yang\.cangjie-sdk\5.0\cangjie\compiler\tools\bin
      • C:\Users\yang\.cangjie-sdk\5.0\cangjie\compiler\tools\lib
      • C:\Users\yang\.cjpm\bin

    添加环境变量的步骤如下:

    • 右键点击 此电脑计算机,选择 属性
    • 点击 高级系统设置
    • 点击 环境变量
    • 系统变量 部分找到 Path,点击 编辑,然后点击 新建 添加上述路径。
    • 新建一个系统变量 CANGJIE_HOME,并设置其值为 C:\Users\yang\.cangjie-sdk\5.0\cangjie\compiler
  2. 运行第一个Cangjie应用程序
    在工作目录中创建一个 server.cj 文件,内容如下:

import net.http.*func start_server(): Unit {let server = ServerBuilder().addr("0.0.0.0").port(8080).build()server.distributor.register("/hello", { http_context =>http_context.responseBuilder.body("Hello Cangjie!")})server.serve()
}main(): Unit {let fut: Future<Unit> = spawn {start_server()}fut.get()
}

这段代码就是启动一个新线程,创建HTTP服务器,监听8080端口上来自所有网络的请求,然后对于URL Path为 /hello 的请求,响应一个字符串 "Hello Cangjie!"

  1. 执行构建命令
    在同目录下执行构建命令:
cjc --output server.exe server.cj

此时目录中会出现三个文件:

  • default.bchir2: 编译产物中的二进制文件,具体作用暂时不详
  • default.cjo: 编译的目标文件
  • server.exe: 编译产生的可执行程序
  1. 运行应用程序
    运行 server.exe,然后在浏览器访问 http://127.0.0.1:8080/hello,可以看到如下的内容:
Hello Cangjie!

通过以上步骤,你就可以搭建好仓颉语言的开发环境,并开始编写和调试HarmonyOS应用。希望本文能帮助你快速上手仓颉语言,开发出优秀的HarmonyOS应用。更多详细信息,请参考仓颉官方文档。

相关文章:

  • 北京市建设委员会和城乡建设网站百度网盘app官网
  • 上海建设交通党建网站厦门人才网招聘官网
  • 百度seo如何做seo第三方点击软件
  • 网站建设哪个便宜百度搜索推广方案
  • 张家港建设局网站网络seo推广
  • 网站做三层结构前端seo是什么意思
  • 变电站自动化系统有哪些设备?
  • 如何通过FEMFAT许可证进行数据分析和处理
  • lz4库使用
  • 洛谷P1092 [NOIP 2004 提高组] 虫食算
  • 29.设计模式的选择与应用
  • windows 上 build 时,微软给出的 vcpkg 工具,如何使用
  • 关于数据编码、进制、位运算的详细讲解(从属GESP三级)
  • C#调用MATLAB函数
  • [Linux] Linux用户和组管理
  • 用福昕阅读器打开pdf文件,整个程序窗口自动缩小的问题
  • Python邮件自动化完全指南:从基础到高级应用
  • 如何通过nvm切换本地node环境详情教程(已装过node.js更改成nvm)
  • 【Game】Powerful——Pet Skin(13)
  • gitlab-ce安装
  • RISC-V三级流水线项目:总体概述和取指模块
  • 基于版本控制+WORM的OSS数据保护:防勒索攻击与法规遵从实践
  • 软件工程:从理论到实践,构建可靠软件的艺术与科学
  • iwebsec靶场-文件上传漏洞
  • JDK 1.8 Stream API:集合流处理深度解析
  • SQL关键字三分钟入门:UPDATE —— 修改数据