-
内容大纲
随着万物互联以及智能时代的到来,软件的形态将发生巨大的变化。一方面,移动应用和移动互联网领域仍然强力驱动人机交互、设备协同、智能化、安全性等方向的创新;另一方面,人工智能也同样驱动软件朝智能化、端边云协同等方向演进。新技术、新场景下应用软件的开发对编程语言提出了新的诉求和挑战。
华为自研的仓颉编程语言作为一款面向全场景应用开发的现代编程语言,通过现代语言特性的集成、全方位的编译优化和运行时实现,以及开箱即用的工具链支持,为开发者打造了友好开发体验和卓越程序性能。本书主要介绍仓颉编程语言开发,内容涉及仓颉编程语言的通用编程概念、基本数据类型、类、接口、扩展、模式匹配、泛型、集合类型、异常处理、包、基础I/O操作、函数式编程、并发编程、宏编程、网络编程、CIPM包管理、自动化测试等众多话题,可谓仓颉编程语言的“百科全书”。其中,综合实战部分演示了KV数据库、雪花算法、HarmonyOS瀑布流的实现过程,可以令读者从零开始掌握仓颉编程语言。
本书实例丰富,将理论讲解最终落实到代码实现上。本书内容由浅入深、层层推进、结构清晰、实例丰富、通俗易懂、实用性强,适合仓颉编程语言的初学者和进阶读者作为自学教程,也可作为培训学校和各大院校的相关专业的教学参考书。 -
作者介绍
柳伟卫,网名老卫、waylau,在IT公司担任过项目经理、架构师、高级技术顾问等职位,拥有十余年开发经验,具有丰富的软件开发管理及系统架构经验。曾主导过多个省、国家级大型分布式系统的设计与研发,参与过面向全球的供应链系统服务化改造。在工作实践中,积累了大量的分布式系统、微服务架构以及性能调优经验。喜欢开源,长期活跃于各大开源社区,编著了《Netty 4.x用户指南》《Netty实战(精髓)》等30余本开源技术教程,广受网友好评,是CSDN、开源中国、阿里云开发者、华为开发者等技术社区专家。 -
目录
第1章 仓颉编程语言初体验
1.1 欢迎进入仓颉编程语言世界
1.1.1 仓颉特性
1.1.2 高效编程
1.1.3 安全可靠
1.1.4 轻松并发
1.1.5 卓越性能
1.2 安装仓颉编程语言
1.3 搭建仓颉编程语言开发环境
1.4 实战:开发第一个仓颉编程语言应用“Hello World!”
1.5 总结
1.6 习题:开发“Hello World!”应用
第2章 通用编程概念
2.1 变量与常量
2.1.1 变量
2.1.2 常量
2.2 标识符与程序结构
2.2.1 标识符
2.2.2 程序结构
2.3 函数
2.3.1 定义函数
2.3.2 函数参数
2.3.3 函数返回值
2.4 注释
2.4.1 单行注释
2.4.2 多行注释
2.5 流程控制
2.5.1 分支
2.5.2 循环
2.6 实战:猜数字游戏
2.6.1 输入数字
2.6.2 比较大小
2.6.3 循环输入
2.6.4 运行效果
2.7 结构类型
2.7.1 定义struct类型
2.7.2 创建struct实例
2.7.3 mut函数
2.8 总结
2.9 习题:统计字符串的字符数
第3章 基本数据类型
3.1 整数类型
3.1.1 整数类型字面量
3.1.2 字符字节字面量
3.1.3 整数类型支持的操作符
3.2 浮点类型
3.2.1 浮点类型字面量
3.2.2 浮点类型支持的操作符
3.3 布尔类型
3.3.1 布尔类型字面量
3.3.2 布尔类型支持的操作符
3.4 字符类型
3.4.1 字符类型字面量
3.4.2 字符类型支持的操作符
3.5 字符串类型
3.5.1 字符串字面量
3.5.2 插值字符串
3.5.3 字符串类型支持的操作
3.6 实战:操作字符串
3.6.1 构造
3.6.2 查找
3.6.3 拼接
3.6.4 替换
3.7 元组类型
3.7.1 元组类型字面量
3.7.2 元组类型的类型参数
3.8 数组类型
3.8.1 定义数组
3.8.2 访问数组
3.8.3 修改数组
3.8.4 数组的排序
3.8.5 VArray
3.9 区间类型
3.10 Unit类型
3.11 Nothing类型
3.12 总结
3.13 习题:将包含句号的句子转换为单词
第4章 类、接口及扩展
4.1 类
4.1.1 class定义
4.1.2 this类型
4.1.3 创建对象
4.1.4 class的继承
4.2 接口
4.2.1 接口定义
4.2.2 接口继承
4.2.3 接口实现
4.2.4 Any类型
4.3 属性
4.3.1 属性定义
4.3.2 属性使用
4.4 子类型关系
4.5 类型转换
4.5.1 数值类型之间的转换
4.5.2 Rune到UInt32和整数类型到Rune的转换
4.5.3 is和as操作符
4.6 直接扩展
4.6.1 扩展概述
4.6.2 直接扩展
4.6.3 接口扩展
4.7 扩展访问规则
4.7.1 扩展的修饰符
4.7.2 扩展的孤儿规则
4.7.3 扩展的访问和遮盖
4.7.4 扩展的导入和导出
4.8 总结
4.9 习题:面向对象的图形
第5章 模式匹配
5.1 模式概述
5.1.1 枚举类型
5.1.2 Option类型
5.1.3 常量模式
5.1.4 通配符模式
5.1.5 绑定模式
5.1.6 tuple模式
5.1.7 类型模式
5.1.8 enum模式
5.1.9 模式的嵌套组合
5.2 refutable模式和irrefutable模式
5.3 match
5.3.1 含匹配值的match表达式
5.3.2 没有待匹配值的match表达式
5.4 if-let
5.5 while-let
5.6 模式适用场景
5.7 实战:猜数字游戏
5.7.1 输入数字
5.7.2 比较大小
5.7.3 循环输入
5.7.4 运行效果
5.8 总结
5.9 习题:“剪刀石头布”游戏
第6章 泛型
6.1 泛型概述
6.2 实战:泛型函数
6.2.1 全局泛型函数
6.2.2 局部泛型函数
6.2.3 泛型成员函数
6.2.4 静态泛型函数
6.3 泛型接口
6.4 泛型类
6.5 实战:泛型结构体
6.6 泛型枚举
6.7 泛型类型的子类型关系
6.8 类型别名
6.9 泛型约束
6.10 总结
6.11 习题:动物发声模拟器
第7章 集合类型
7.1 集合类型概述
7.2 实战:使用ArrayList
7.2.1 ArrayList扩容原理
7.2.2 创建ArrayList
7.2.3 访问ArrayList成员
7.2.4 修改ArrayList
7.2.5 增加ArrayList的大小
7.3 实战:使用HashSet
7.3.1 创建HashSet
7.3.2 访问HashSet成员
7.3.3 修改HashSet
7.4 实战:使用HashMap
7.4.1 创建HashMap
7.4.2 访问HashMap成员
7.4.3 修改HashMap
7.5 Iterable和Collections
7.6 总结
7.7 习题:名字的“漂亮度”
第8章 异常处理
8.1 定义异常
8.1.1 异常类
8.1.2 Exception和Error的主要函数及其说明
8.2 常见运行时异常
8.3 实战:抛出和处理异常
8.3.1 抛出异常
8.3.2 普通try表达式
8.3.3 try-with-resources表达式
8.3.4 多个异常处理
8.4 使用Option
8.4.1 模式匹配
8.4.2 coalescing操作符“??”
8.4.3 问号操作符“?”
8.4.4 getOrThrow函数
8.5 总结
8.6 习题:“剪刀石头布”游戏的异常处理
第9章 包和模块
9.1 包概述
9.2 包的声明
9.3 顶层声明的可见性
9.4 包的导入
9.4.1 使用import语句导入其他包中的声明或定义
9.4.2 隐式导入core包
9.4.3 使用import as对导入的名字重命名
9.4.4 重导出一个导入的名字
9.5 程序入口
9.6 总结
9.7 习题:带传参的“名字的‘漂亮度’”
第10章 基础I/O操作
10.1 I/O流概述
10.1.1 流的抽象
10.1.2 输入流
10.1.3 输出流
10.1.4 数据流分类
10.2 I/O节点流
10.2.1 标准流
10.2.2 文件流
10.3 I/O处理流
10.3.1 缓冲流
10.3.2 字符串流
10.4 实战:读写文件
10.4.1 准备文件资源
10.4.2 读取文件
10.4.3 写入文件
10.5 总结
10.6 习题:获取文件元数据
第11章 函数式编程
11.1 定义函数
11.1.1 参数列表
11.1.2 函数返回值类型
11.1.3 函数体
11.2 调用函数
11.3 函数类型
11.3.1 函数类型的常用示例
11.3.2 函数类型的类型参数
11.3.3 函数类型作为参数类型
11.3.4 函数类型作为返回类型
11.3.5 函数类型作为变量类型
11.4 Lambda表达式
11.4.1 Lambda表达式定义
11.4.2 Lambda表达式调用
11.5 闭包
11.6 函数调用语法糖
11.6.1 尾随Lambda
11.6.2 Flow表达式
11.6.3 变长参数
11.7 函数重载
11.7.1 函数重载的类型
11.7.2 函数重载决议
11.8 const函数
11.9 实战:词频统计
11.9.1 准备文件资源
11.9.2 统计词频函数
11.9.3 输出词频函数
11.9.4 读取文件统计词频
11.10 总结
11.11 习题:删除字符串中出现次数最少的字符
第12章 并发编程
12.1 并发概述
12.1.1 线程与并发
12.1.2 并发与并行的区别
12.1.3 仓颉线程模型
12.2 创建线程
12.3 访问线程
12.3.1 使用Future12.3.2 访问线程属性
12.4 终止线程
12.5 同步机制
12.5.1 原子操作
12.5.2 可重入互斥锁
12.5.3 Monitor
12.5.4 MultiConditionMonitor
12.5.5 synchronized关键字
12.5.6 线程局部变量ThreadLocal
12.6 线程睡眠
12.7 实战:龟兔赛跑
12.7.1 应用概述
12.7.2 实现乌龟的逻辑
12.7.3 实现兔子的逻辑
12.7.4 线程执行
12.8 总结
12.9 习题:多窗口售票
第13章 宏编程
13.1 实战:宏的入门
13.1.1 初始化应用
13.1.2 定义宏
13.1.3 定义main函数
13.2 Tokens相关类型和quote表达式
13.2.1 Token类型
13.2.2 Tokens类型
13.2.3 quote表达式和插值
13.3 语法节点
13.3.1 节点的解析
13.3.2 节点的组成部分
13.3.3 使用quote插值语法节点
13.4 宏的实现
13.4.1 非属性宏
13.4.2 属性宏
13.4.3 嵌套宏
13.5 编译、报错与调试
13.5.1 宏的编译和使用
13.5.2 并行宏展开
13.5.3 diagReport报错机制
13.5.4 使用--debug-macro输出宏展开结果
13.6 宏包定义和导入
13.7 内置编译标记
13.7.1 源码位置
13.7.2 条件编译
13.7.3 @FastNative
13.8 实战:快速幂的计算
13.8.1 问题背景
13.8.2 实现宏@power
13.8.3 使用宏@power
13.9 总结
13.10 习题:多行dprint宏
第14章 网络编程
14.1 网络编程概述
14.2 Socket编程
14.2.1 了解TCP
14.2.2 了解Socket
14.2.3 了解UDP
14.2.4 TCP与UDP的区别
14.3 实战:创建TCP和UDP服务器
14.3.1 创建TCP服务器
14.3.2 创建UDP服务器
14.4 HTTP编程
14.4.1 REST的定义
14.4.2 REST设计原则
14.4.3 REST成熟度模型
14.5 实战:构建HTTP服务
14.5.1 构建Server实例
14.5.2 注册请求处理逻辑
14.5.3 启动服务器
14.5.4 运行
14.6 总结
14.7 习题:构建REST服务
第15章 CJPM包管理
15.1 CJPM基本使用方法
15.2 cjpm.toml配置文件说明
15.3 实战:CJPM入门
15.3.1 创建项目目录
15.3.2 使用CJPM初始化项目
15.3.3 使用CJPM运行项目
15.4 总结
15.5 习题:使用CJPM
第16章 自动化测试
16.1 单元测试
16.1.1 单元测试的概念
16.1.2 std.unittest包
16.1.3 实战:编写单元测试用例
16.2 Mocking测试
16.2.1 Mocking测试框架的概念
16.2.2 std.unittest.mock包
16.2.3 实战:编写Mocking测试用例
16.3 基准测试
16.4 总结
16.5 习题:累加器的性能测试
第17章 综合实战1:实现KV数据库
17.1 KV数据库概述
17.1.1 KV数据库的基本概念
17.1.2 KV数据库的特点
17.1.3 KV数据库的工作原理
17.1.4 KV数据库的应用场景
17.1.5 常见的KV数据库实现
17.2 功能开发
17.2.1 创建项目
17.2.2 定义KeyValue接口
17.2.3 实现KeyValue接口
17.3 运行效果
17.4 总结
17.5 习题:实现KV数据库
第18章 综合实战2:实现雪花算法
18.1 应用概述
18.1.1 雪花算法的整体设计
18.1.2 雪花算法的工作原理
18.1.3 雪花算法的特点
18.1.4 雪花算法的应用场景
18.1.5 雪花算法的优缺点
18.2 功能开发
18.2.1 创建项目
18.2.2 定义Snowflake类的变量
18.2.3 实现Snowflake构造函数
18.2.4 实现Snowflake生成下一个ID函数
18.3 运行效果
18.4 总结
18.5 习题:实现雪花算法
第19章 综合实战3:实现HarmonyOS瀑布流
19.1 应用概述
19.1.1 在ArkTS应用中开发仓颉模块
19.1.2 在仓颉应用中使用ArkTS模块
19.1.3 操作ArkTS数据
19.1.4 在ArkTS中操作仓颉对象
19.1.5 瀑布流概述
19.2 功能开发
19.2.1 选择创建新项目
19.2.2 选择模板
19.2.3 配置项目信息
19.2.4 自动生成工程代码
19.2.5 代码实现
19.3 运行效果
19.4 总结
19.5 习题:实现HarmonyOS瀑布流
附录 关键字
参考文献
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-

孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-

时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-

本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...
[
