新書推薦:

《
读懂RWA
》
售價:HK$
86.9

《
复合型AI Agent开发:从理论到实践
》
售價:HK$
108.9

《
选择的权利(推翻罗诉韦德案 译文纪实系列)
》
售價:HK$
129.8

《
符号空间:品牌建筑空间媒介化研究
》
售價:HK$
137.5

《
宫门内外:阴云下的政变
》
售價:HK$
71.5

《
从阅读到输出:靠大量阅读年入7位数 每天15分钟读写闭环,启动人生复利增长系统
》
售價:HK$
76.8

《
世上要有天一阁
》
售價:HK$
74.8

《
精确科学的常识 天才数学家克利福德
》
售價:HK$
41.8
|
| 編輯推薦: |
1.实战讲解,讲练结合:通过实战项目案例帮助读者掌握仓颉的使用技巧,提升实践能力。 2.仓颉与华为技术生态深度结合:从基础语法到实战应用,用仓颉开启华为智能开发新时代。 3.高效编码,深度剖析:提供大量即用型优质代码,可直接参考学习。 4.把握未来,紧随技术自主潮流:探索仓颉语言在未来技术发展中的应用潜力,展现其在人工智能、万物互联等领域的前景。
|
| 內容簡介: |
随着万物互联以及智能时代的到来,软件的形态将发生巨大的变化。一方面,移动应用和移动互联网领域仍然强力驱动人机交互、设备协同、智能化、安全性等方向的创新;另一方面,人工智能也同样驱动软件朝智能化、端边云协同等方向演进。新技术、新场景下应用软件的开发对编程语言提出了新的诉求和挑战。來源:香港大書城megBookStore,http://www.megbook.com.hk 华为自研的仓颉编程语言作为一款面向全场景应用开发的现代编程语言,通过现代语言特性的集成、全方位的编译优化和运行时实现,以及开箱即用的工具链支持,为开发者打造了友好开发体验和卓越程序性能。本书主要介绍仓颉编程语言开发,内容涉及仓颉编程语言的通用编程概念、基本数据类型、类、接口、扩展、模式匹配、泛型、集合类型、异常处理、包、基础I/O操作、函数式编程、并发编程、宏编程、网络编程、CJPM包管理、自动化测试等众多话题,可谓仓颉编程语言的“百科全书”。其中,综合实战部分演示了KV数据库、雪花算法、HarmonyOS瀑布流的实现过程,可以令读者从零开始掌握仓颉编程语言。
|
| 關於作者: |
|
柳伟卫,网名waylau、老卫,资深架构师、IT技术作家、讲师,关注编程、系统架构、性能优化。多年软件研发经验及HarmonyOS实战经验,获得华为开发者联盟社区认证讲师、HarmonyOS技术达人、牛人之星、OpenHarmony开源贡献之星、HarmonyOS应用开发者高级认证。出版了《HarmonyOS应用开发从入门到精通》《Spring Boot 企业级应用开发实战》《Spring Cloud 微服务架构开发实战》《Spring 5 开发大全》《Netty原理解析与开发实战》等几十本专著。开设有《跟老卫学HarmonyOS开发》《鸿蒙系统实战短视频App 从0到1掌握HarmonyOS》《2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)》等多门课程,授课经验丰富。
|
| 目錄:
|
第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
|
| 內容試閱:
|
写作背景 在2024年6月21日华为开发者大会上,华为正式官宣了其自研仓颉编程语言。该语言历经5年研发沉淀,终于开启了开发者预览。 作为一款面向全场景应用开发的现代编程语言,仓颉编程语言通过现代语言特性的集成、全面 的编译优化和运行时实现,以及开箱即用的工具链支持,为开发者打造了友好开发体验和卓越程序性能。然而,作为一门新兴语言,仓颉在教程、书籍、课程等方面的学习资源比较少,因此出版一本全面、深入、实用的仓颉编程语言专著,对于满足市场需求、推动仓颉编程语言的发展具有重要意义。 本书的定位是一本全面介绍仓颉编程语言的专著。本书从基础知识讲起,逐步深入高级特性和 最佳实践。同时,本书还将结合具体的案例和项目,让读者能够在实际操作中掌握仓颉编程语言的编程技巧。希望本书能够带领读者入门仓颉编程语言,扫清学习障碍。 内容分布 具体来说,全书分为以下部分。 (1)入门(第1~10章):介绍仓颉编程语言的基础知识,包括开发环境、通用编程概念、基 本数据类型、类、接口、扩展、模式匹配、泛型、集合类型、异常处理、包、模块、基础I/O操作等; (2)进阶(第11~14章):介绍仓颉编程语言的函数式编程、并发编程、宏编程、网络编程等; (3)高阶(第15~16章):介绍仓颉编程语言的CJPM包管理、自动化测试等方面的内容; (4)实战(第17~19章):介绍颉编程语言的综合实战案例,包括业界主流的KV数据库、雪 花算法、HarmonyOS瀑布流。 本书所涉及的技术和相关版本 技术的版本非常重要,因为不同版本之间存在兼容性问题。本书所列出的技术在版本上相对较 新,且都经过了作者大量测试。因此,读者在自行编写代码时,可以参考本书所列版本,从而避免版本兼容性所产生的问题。建议读者将开发环境设置得与本书一致,或者不低于本书所列配置。本书详细的版本配置参考如下。 (1)DevEco Studio NEXT Developer Beta5(5.0.3.700)。 (2)Cangjie 0.53.8。 勘误和交流 本书如有勘误,会在以下网址发布: https://github.com/waylau/cangjie-programming-language-tutorial/issues。 书中如有错漏之处,敬请斧正,欢迎读者通过以下方式与笔者联系。 y 博客:https://waylau.com。 y 邮箱:waylau521@gmail.com。 y 微博:http://weibo.com/waylau521。 y 开源:https://github.com/waylau。 学习资源 本书提供的素材和源代码可从以下网址下载:https://gitee.com/waylau/ cangjie-programming-language-tutorial。 读者也可以扫描右侧二维码关注“博雅读书社”微信公众号,输入本书 77 页 的资源下载码,即可获得本书的配套学习资源。 致谢 感谢北京大学出版社的各位工作人员为本书的出版所做的努力。 感谢家人对我的理解和支持。由于撰写本书,我牺牲了很多陪伴家人的时间。 感谢关心和支持我的朋友、读者、网友。
|
|