
本网站不提供下载链接,喜欢看书的朋友请关注公众号:【lennylee的碎碎念】(lennyleede),首页回复:授人以渔,自动获取搜索资源的方法。
内容简介:
作为一款面向全场景应用开发的现代编程语言,仓颉编程语言通过现代语言特性的集成、全面的编译优化和运行时实现,以及开箱即用的工具链支持,为开发者打造了友好开发体验和卓越程序性能。然而,作为一门新兴语言,仓颉在教程、书籍、课程等方面的学习资源比较少,因此出版一本全面、深入、实用的仓颉编程语言专著,对于满足市场需求、推动仓颉编程语言的发展具有重要意义。
本书的定位是一本全面介绍仓颉编程语言的专著。本书从基础知识讲起,逐步深入高级特性和最佳实践。同时,本书还将结合具体的案例和项目,让读者能够在实际操作中掌握仓颉编程语言的编程技巧。希望本书能够带领读者入门仓颉编程语言,扫清学习障碍。
具体来说,全书分为以下部分。
(1)入门(第1~10章):介绍仓颉编程语言的基础知识,包括开发环境、通用编程概念、基本数据类型、类、接口、扩展、模式匹配、泛型、集合类型、异常处理、包、模块、基础I/O操作等;
(2)进阶(第11~14章):介绍仓颉编程语言的函数式编程、并发编程、宏编程、网络编程等;
(3)高阶(第15~16章):介绍仓颉编程语言的CJPM包管理、自动化测试等方面的内容;
(4)实战(第17~19章):介绍颉编程语言的综合实战案例,包括业界主流的KV数据库、雪花算法、HarmonyOS瀑布流。
作者简介:
第1章 仓颉编程语言初体验
1.1 欢迎进入仓颉编程语言世界 2
1.1.1 仓颉特性 2
1.1.2 高效编程 3
1.1.3 安全可靠 4
1.1.4 轻松并发 4
1.1.5 卓越性能 4
1.2 安装仓颉编程语言 5
1.3 搭建仓颉编程语言开发环境 10
1.4 实战:开发第一个仓颉编程语言应用“Hello World!” 11
1.5 总结 13
1.6 习题:开发“Hello World!”应用 13
第2章 通用编程概念
2.1 变量与常量 15
2.1.1 变量 15
2.1.2 常量 17
2.2 标识符与程序结构 18
2.2.1 标识符 18
2.2.2 程序结构 19
2.3 函数 20
2.3.1 定义函数 21
2.3.2 函数参数 21
2.3.3 函数返回值 23
2.4 注释 24
2.4.1 单行注释 24
2.4.2 多行注释 25
2.5 流程控制 25
2.5.1 分支 25
2.5.2 循环 27
2.6 实战:猜数字游戏 29
2.6.1 输入数字 29
2.6.2 比较大小 30
2.6.3 循环输入 31
2.6.4 运行效果 31
2.7 结构类型 32
2.7.1 定义struct类型 32
2.7.2 创建struct实例 37
2.7.3 mut函数 39
2.8 总结 39
2.9 习题:统计字符串的字符数 40
第3章 基本数据类型
3.1 整数类型 42
3.1.1 整数类型字面量 42
3.1.2 字符字节字面量 43
3.1.3 整数类型支持的操作符 43
3.2 浮点类型 44
3.2.1 浮点类型字面量 44
3.2.2 浮点类型支持的操作符 45
3.3 布尔类型 45
3.3.1 布尔类型字面量 45
3.3.2 布尔类型支持的操作符 46
3.4 字符类型 46
3.4.1 字符类型字面量 46
3.4.2 字符类型支持的操作符 47
3.5 字符串类型 47
3.5.1 字符串字面量 47
3.5.2 插值字符串 48
3.5.3 字符串类型支持的操作 49
3.6 实战:操作字符串 49
3.6.1 构造 50
3.6.2 查找 50
3.6.3 拼接 51
3.6.4 替换 52
3.7 元组类型 52
3.7.1 元组类型字面量 52
3.7.2 元组类型的类型参数 53
3.8 数组类型 53
3.8.1 定义数组 54
3.8.2 访问数组 54
3.8.3 修改数组 55
3.8.4 数组的排序 56
3.8.5 VArray 57
3.9 区间类型 58
3.10 Unit类型 59
3.11 Nothing类型 59
3.12 总结 60
3.13 习题:将包含句号的句子转换为单词 60
第4章 类、接口及扩展
4.1 类 63
4.1.1 class定义 63
4.1.2 this类型 69
4.1.3 创建对象 70
4.1.4 class的继承 71
4.2 接口 76
4.2.1 接口定义 77
4.2.2 接口继承 82
4.2.3 接口实现 84
4.2.4 Any类型 86
4.3 属性 86
4.3.1 属性定义 87
4.3.2 属性使用 91
4.4 子类型关系 93
4.5 类型转换 96
4.5.1 数值类型之间的转换 97
4.5.2 Rune到UInt32和整数类型到Rune的转换 97
4.5.3 is和as操作符 98
4.6 直接扩展 100
4.6.1 扩展概述 100
4.6.2 直接扩展 100
4.6.3 接口扩展 102
4.7 扩展访问规则 105
4.7.1 扩展的修饰符 105
4.7.2 扩展的孤儿规则 106
4.7.3 扩展的访问和遮盖 106
4.7.4 扩展的导入和导出 109
4.8 总结 111
4.9 习题:面向对象的图形 111
第5章 模式匹配
5.1 模式概述 114
5.1.1 枚举类型 114
5.1.2 Option类型 116
5.1.3 常量模式 117
5.1.4 通配符模式 118
5.1.5 绑定模式 118
5.1.6 tuple模式 119
5.1.7 类型模式 120
5.1.8 enum模式 120
5.1.9 模式的嵌套组合 121
5.2 refutable模式和irrefutable模式 122
5.3 match 124
5.3.1 含匹配值的match表达式 124
5.3.2 没有待匹配值的match表达式 125
5.4 if-let 125
5.5 while-let 126
5.6 模式适用场景 127
5.7 实战:猜数字游戏 129
5.7.1 输入数字 129
5.7.2 比较大小 130
5.7.3 循环输入 130
5.7.4 运行效果 131
5.8 总结 132
5.9 习题:“剪刀石头布”游戏 132
第6章 泛型
6.1 泛型概述 134
6.2 实战:泛型函数 134
6.2.1 全局泛型函数 135
6.2.2 局部泛型函数 136
6.2.3 泛型成员函数 136
6.2.4 静态泛型函数 138
6.3 泛型接口 138
6.4 泛型类 139
6.5 实战:泛型结构体 139
6.6 泛型枚举 140
6.7 泛型类型的子类型关系 141
6.8 类型别名 141
6.9 泛型约束 142
6.10 总结 145
6.11 习题:动物发声模拟器 145
第7章 集合类型
7.1 集合类型概述 147
7.2 实战:使用ArrayList 147
7.2.1 ArrayList扩容原理 147
7.2.2 创建ArrayList 148
7.2.3 访问ArrayList成员 148
7.2.4 修改ArrayList 149
7.2.5 增加ArrayList的大小 151
7.3 实战:使用HashSet 152
7.3.1 创建HashSet 152
7.3.2 访问HashSet成员 152
7.3.3 修改HashSet 153
7.4 实战:使用HashMap 154
7.4.1 创建HashMap 154
7.4.2 访问HashMap成员 155
7.4.3 修改HashMap 156
7.5 Iterable和Collections 158
7.6 总结 159
7.7 习题:名字的“漂亮度” 159
第8章 异常处理
8.1 定义异常 161
8.1.1 异常类 161
8.1.2 Exception和Error的主要函数及其说明 162
8.2 常见运行时异常 162
8.3 实战:抛出和处理异常 163
8.3.1 抛出异常 163
8.3.2 普通try表达式 163
8.3.3 try-with-resources表达式 164
8.3.4 多个异常处理 165
8.4 使用Option 166
8.4.1 模式匹配 167
8.4.2 coalescing操作符“??” 167
8.4.3 问号操作符“?” 168
8.4.4 getOrThrow函数 169
8.5 总结 169
8.6 习题:“剪刀石头布”游戏的异常处理 169
第9章 包和模块
9.1 包概述 172
9.2 包的声明 172
9.3 顶层声明的可见性 174
9.4 包的导入 175
9.4.1 使用import语句导入其他包中的声明或定义 175
9.4.2 隐式导入core包 178
9.4.3 使用import as对导入的名字重命名 178
9.4.4 重导出一个导入的名字 180
9.5 程序入口 181
9.6 总结 182
9.7 习题:带传参的“名字的‘漂亮度’” 182
第10章 基础I/O操作
10.1 I/O流概述 184
10.1.1 流的抽象 184
10.1.2 输入流 184
10.1.3 输出流 185
10.1.4 数据流分类 186
10.2 I/O节点流 186
10.2.1 标准流 186
10.2.2 文件流 187
10.3 I/O处理流 189
10.3.1 缓冲流 190
10.3.2 字符串流 191
10.4 实战:读写文件 193
10.4.1 准备文件资源 193
10.4.2 读取文件 193
10.4.3 写入文件 194
10.5 总结 195
10.6 习题:获取文件元数据 195
第11章 函数式编程
11.1 定义函数 197
11.1.1 参数列表 197
11.1.2 函数返回值类型 198
11.1.3 函数体 199
11.2 调用函数 200
11.3 函数类型 202
11.3.1 函数类型的常用示例 203
11.3.2 函数类型的类型参数 203
11.3.3 函数类型作为参数类型 204
11.3.4 函数类型作为返回类型 204
11.3.5 函数类型作为变量类型 204
11.4 Lambda表达式 205
11.4.1 Lambda表达式定义 205
11.4.2 Lambda表达式调用 207
11.5 闭包 207
11.6 函数调用语法糖 211
11.6.1 尾随Lambda 211
11.6.2 Flow表达式 212
11.6.3 变长参数 213
11.7 函数重载 215
11.7.1 函数重载的类型 215
11.7.2 函数重载决议 218
11.8 const函数 219
11.9 实战:词频统计 221
11.9.1 准备文件资源 221
11.9.2 统计词频函数 221
11.9.3 输出词频函数 222
11.9.4 读取文件统计词频 223
11.10 总结 224
11.11 习题:删除字符串中出现次数最少的字符 224
第12章 并发编程
12.1 并发概述 226
12.1.1 线程与并发 226
12.1.2 并发与并行的区别 227
12.1.3 仓颉线程模型 227
12.2 创建线程 228
12.3 访问线程 229
12.3.1 使用Future 229
12.3.2 访问线程属性 231
12.4 终止线程 232
12.5 同步机制 233
12.5.1 原子操作 233
12.5.2 可重入互斥锁 236
12.5.3 Monitor 238
12.5.4 MultiConditionMonitor 241
12.5.5 synchronized关键字 244
12.5.6 线程局部变量ThreadLocal 246
12.6 线程睡眠 247
12.7 实战:龟兔赛跑 248
12.7.1 应用概述 248
12.7.2 实现乌龟的逻辑 249
12.7.3 实现兔子的逻辑 249
12.7.4 线程执行 250
12.8 总结 252
12.9 习题:多窗口售票 252
第13章 宏编程
13.1 实战:宏的入门 255
13.1.1 初始化应用 255
13.1.2 定义宏 255
13.1.3 定义main函数 256
13.2 Tokens相关类型和quote表达式 257
13.2.1 Token类型 257
13.2.2 Tokens类型 261
13.2.3 quote表达式和插值 262
13.3 语法节点 263
13.3.1 节点的解析 264
13.3.2 节点的组成部分 265
13.3.3 使用quote插值语法节点 267
13.4 宏的实现 269
13.4.1 非属性宏 269
13.4.2 属性宏 271
13.4.3 嵌套宏 273
13.5 编译、报错与调试 278
13.5.1 宏的编译和使用 279
13.5.2 并行宏展开 280
13.5.3 diagReport报错机制 281
13.5.4 使用–debug-macro输出宏展开结果 282
13.6 宏包定义和导入 285
13.7 内置编译标记 285
13.7.1 源码位置 285
13.7.2 条件编译 286
13.7.3 @FastNative 286
13.8 实战:快速幂的计算 286
13.8.1 问题背景 287
13.8.2 实现宏@power 288
13.8.3 使用宏@power 289
13.9 总结 290
13.10 习题:多行dprint宏 290
第14章 网络编程
14.1 网络编程概述 292
14.2 Socket编程 292
14.2.1 了解TCP 293
14.2.2 了解Socket 293
14.2.3 了解UDP 294
14.2.4 TCP与UDP的区别 295
14.3 实战:创建TCP和UDP服务器 295
14.3.1 创建TCP服务器 295
14.3.2 创建UDP服务器 296
14.4 HTTP编程 298
14.4.1 REST的定义 298
14.4.2 REST设计原则 299
14.4.3 REST成熟度模型 300
14.5 实战:构建HTTP服务 306
14.5.1 构建Server实例 306
14.5.2 注册请求处理逻辑 306
14.5.3 启动服务器 307
14.5.4 运行 307
14.6 总结 308
14.7 习题:构建REST服务 308
第15章 CJPM包管理
15.1 CJPM基本使用方法 311
15.2 cjpm.toml配置文件说明 312
15.3 实战:CJPM入门 313
15.3.1 创建项目目录 314
15.3.2 使用CJPM初始化项目 314
15.3.3 使用CJPM运行项目 315
15.4 总结 315
15.5 习题:使用CJPM 315
第16章 自动化测试
16.1 单元测试 317
16.1.1 单元测试的概念 317
16.1.2 std.unittest包 317
16.1.3 实战:编写单元测试用例 318
16.2 Mocking测试 320
16.2.1 Mocking测试框架的概念 320
16.2.2 std.unittest.mock包 320
16.2.3 实战:编写Mocking测试用例 321
16.3 基准测试 324
16.4 总结 324
16.5 习题:累加器的性能测试 324
第17章 综合实战1:实现KV数据库
17.1 KV数据库概述 327
17.1.1 KV数据库的基本概念 327
17.1.2 KV数据库的特点 327
17.1.3 KV数据库的工作原理 327
17.1.4 KV数据库的应用场景 328
17.1.5 常见的KV数据库实现 328
17.2 功能开发 330
17.2.1 创建项目 330
17.2.2 定义KeyValue接口 330
17.2.3 实现KeyValue接口 331
17.3 运行效果 332
17.4 总结 333
17.5 习题:实现KV数据库 333
第18章 综合实战2:实现雪花算法
18.1 应用概述 335
18.1.1 雪花算法的整体设计 335
18.1.2 雪花算法的工作原理 335
18.1.3 雪花算法的特点 336
18.1.4 雪花算法的应用场景 336
18.1.5 雪花算法的优缺点 336
18.2 功能开发 337
18.2.1 创建项目 337
18.2.2 定义Snowflake类的变量 337
18.2.3 实现Snowflake构造函数 339
18.2.4 实现Snowflake生成下一个ID函数 339
18.3 运行效果 341
18.4 总结 343
18.5 习题:实现雪花算法 343
第19章 综合实战3:实现HarmonyOS瀑布流
19.1 应用概述 345
19.1.1 在ArkTS应用中开发仓颉模块 345
19.1.2 在仓颉应用中使用ArkTS模块 347
19.1.3 操作ArkTS数据 347
19.1.4 在ArkTS中操作仓颉对象 348
19.1.5 瀑布流概述 348
19.2 功能开发 349
19.2.1 选择创建新项目 349
19.2.2 选择模板 350
19.2.3 配置项目信息 351
19.2.4 自动生成工程代码 351
19.2.5 代码实现 352
19.3 运行效果 362
19.4 总结 364
19.5 习题:实现HarmonyOS瀑布流 364
附录 关键字 365
参考文献 366
· · · · · · (收起)
原文摘录: