简介

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

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

仓颉编程语言的特性较为丰富繁多,但却易于入门和上手,适合渐进式学习与实践。本手册的各章节内容如下:

  • 第一章:仓颉编程语言简介。
  • 第二章:介绍如何安装仓颉编译器工具链,并指导读者编译运行第一个仓颉程序。
  • 第三章:介绍仓颉编程语言的基本概念,包括变量、表达式、作用域和程序基本结构等。
  • 第四章:介绍基础数据类型,包括整数、浮点数、字符串、元组和区间等类型。
  • 第五章:介绍自定义类型,包括 enum 类型、 struct 类型、class 类型和 interface 类型,以及子类型关系、类型转换和类型别名。
  • 第六章:介绍常用的 Collection 数据类型,包括 ArrayArrayListHashSetHashMap 等。
  • 第七章:介绍错误处理,包括异常类和 try 表达式,以及 Option 类型在错误处理中的应用。
  • 第八章:介绍函数,包括函数的基本概念、函数作为一等公民的相关特性、lambda 表达式、闭包、函数调用语法糖、函数重载、操作符重载和 mut 函数等。
  • 第九章:介绍模式匹配,包括 match 表达式和六种基本模式,以及模式的 Refutability 属性。
  • 第十章:介绍泛型编程,包括泛型参数、自定义泛型类型、泛型接口、泛型函数和泛型约束等。
  • 第十一章:介绍属性,包括属性的定义和使用。
  • 第十二章:介绍扩展,包括扩展的定义、扩展的孤儿规则、扩展的访问与遮盖、扩展的导入导出。
  • 第十三章:介绍并发,包括仓颉线程的创建和执行,以及三种常用的同步机制(原子操作、互斥锁和条件变量)。
  • 第十四章:介绍元编程,包括 Tokens 相关类型、quote 表达式和仓颉宏的相关语法,并结合实例介绍仓颉宏的编译和使用方式。
  • 第十五章:介绍自动微分,包括可微类型和不可微类型,以及可微函数和微分表达式等。
  • 第十六章:介绍包管理,包括包与模块的概念,以及包的声明与导入方式等。
  • 第十七章:介绍跨语言互操作,目前只涉及仓颉与 C 语言的互操作,包括类型映射、声明与调用 C 函数、CType 类型约束、CFunc 类型函数和 inout 引用传参等特性。
  • 第十八章:介绍仓颉编译器 cjc 的使用方法及编译选项。
  • 第十九章:介绍仓颉运行时相关的环境变量。
  • 第二十章:介绍条件编译,包括如何使用内置条件和自定义条件等。
  • 第二十一章:介绍常量求值,即仓颉允许某些特定形式的表达式在编译时求值,可以提高程序运行时效率。
  • 第二十二章:介绍注解,即仓颉针对某些特殊场景给开发者提供的内置属性宏。
  • 第二十三章:介绍仓颉动态特性,包括反射和动态加载特性。
  • 第二十四章:本章为附录,介绍仓颉中的关键字、操作符和 TokenKind 类型等。