第1章 初识Julia 1
1.1 有用的资源 2
1.2 环境准备 4
1.2.1 二进制包安装 5
1.2.2 编译安装 7
1.3 交互式控制台 8
1.4 命名规则与关键字 11
1.5 先睹为快 12
1.5.1 Hello World 12
1.5.2 体型分布案例 13
1.5.3 小结 18
第2章 基础概念 19
2.1 静态与动态语言 19
2.2 内存管理 20
2.3 经典编程范式 21
第3章 数值系统 24
3.1 整型 24
3.1.1 表达方式 25
3.1.2 类型强制限定 27
3.1.3 有无符号转换 28
3.2 布尔型 29
3.3 浮点型 30
3.3.1 基本定义 31
3.3.2 零的表达 32
3.3.3 epsilon 34
3.3.4 无穷值 35
3.3.5 非数值 37
3.3.6 内置常量 37
3.4 有理数型 38
3.5 复数型 40
3.6 随机数 42
3.7 任意精度算术 43
第4章 运算符 46
4.1 算术运算符 46
4.2 位运算符 51
4.3 更新运算符 55
4.4 比较运算符 56
4.5 逻辑运算符 60
4.6 运算优先级 61
4.7 类型提升 62
第5章 控制逻辑 64
5.1 复合表达式 64
5.2 判断逻辑 65
5.3 循环逻辑 67
5.3.1 while 67
5.3.2 for 69
5.4 异常处理 73
5.4.1 异常触发 73
5.4.2 异常捕捉 74
第6章 类型系统 77
6.1 类型简介 77
6.2 抽象类型 78
6.3 元类型 80
6.4 类型操作 83
6.4.1 弱类型机制 83
6.4.2 类型断言 84
6.4.3 DataType 85
6.4.4 类型别称 86
6.4.5 继承关系 87
6.5 复合类型 88
6.5.1 基本定义 88
6.5.2 默认构造函数 90
6.5.3 成员访问及不可变性 91
6.5.4 单例复合类型 93
6.6 类型联合 94
6.7 TypeVar 96
6.8 类型参数化 97
6.8.1 参数化复合类型 97
6.8.2 参数化抽象类型 102
6.8.3 参数化元类型 105
6.8.4 参数化基本原理 106
6.8.5 参数化继承关系 108
6.8.6 协变与逆变 110
6.9 常用数集 112
6.9.1 元组 113
6.9.2 键值对 115
6.9.3 字典 117
6.9.4 集合 121
6.10 缺失值的表达 123
6.10.1 missing 123
6.10.2 nothing 125
6.10.3 可有可无的表达 125
第7章 函数 129
7.1 基本定义 129
7.1.1 常规结构 129
7.1.2 类型限定 130
7.1.3 共享传参 132
7.1.4 数集展开式调用 133
7.1.5 多返回值 134
7.2 参数传递方式 134
7.2.1 默认参数 134
7.2.2 键值参数 135
7.2.3 可变参数 137
7.3 函数对象 140
7.3.1 Function类型 140
7.3.2 函数作为参数 141
7.3.3 函数作为返回值 143
7.4 匿名函数 144
7.5 参数化方法 146
7.6 多态分发 148
7.7 复合类型构造方法 153
7.7.1 外部构造方法 153
7.7.2 内部构造方法 155
第8章 多维数组 158
8.1 创建数组 158
8.1.1 串联方式 160
8.1.2 辅助构造函数 163
8.1.3 范围表达式 164
8.1.4 推导式 168
8.2 索引访问 169
8.3 遍历迭代 176
8.4 子数组与视图 179
8.4.1 范围切片 179
8.4.2 逻辑索引 180
8.4.3 局部视图 180
8.5 稀疏数组 182
8.5.1 典型稀疏结构 183
8.5.2 结构转换 184
8.5.3 内容映射 186
8.6 矢量化计算 189
8.6.1 map函数 189
8.6.2 广播 192
8.6.3 点操作 193
8.6.4 数组运算符 196
8.7 排序 197
8.8 查找 200
8.9 missing作为元素 205
8.10 线性代数中的矩阵处理 207
8.10.1 矩阵操作 207
8.10.2 特殊矩阵 208
8.10.3 矩阵分解 211
第9章 字符串 217
9.1 字符 217
9.2 String对象 220
9.2.1 表达 220
9.2.2 索引 221
9.2.3 遍历 223
9.2.4 子串 224
9.3 变量替换 225
9.4 正则表达式 226
9.5 常用操作 229
9.5.1 连接 229
9.5.2 比较 232
9.5.3 搜索 232
9.5.4 替换 234
9.5.5 分割 235
9.6 字节数组 237
9.7 与数值的转换 239
第10章 元编程 241
10.1 Symbol类型 241
10.2 Expr类型 243
10.2.1 构造 243
10.2.2 衍生 248
10.3 宏 249
10.3.1 定义 250
10.3.2 调用 250
10.3.3 预定义宏 251
第11章 时间与日期 255
11.1 类型 255
11.2 构造 257
11.3 访问 260
11.4 解析 262
11.5 运算 265
11.5.1 早晚比较 265
11.5.2 时长计算 267
11.5.3 时间序列 269
11.5.4 周期舍入 270
11.6 属性 273
第12章 流与IO 275
12.1 标准流 275
12.2 文件操作 278
12.3 读写缓存 281
12.4 流的回溯 284
12.5 序列化 287
12.6 网络通信 290
第13章 组织结构 294
13.1 模块 294
13.1.1 基本定义 294
13.1.2 标准模块 296
13.1.3 模块路径 298
13.1.4 预编译 298
13.2 模块与脚本文件 299
13.3 变量域 300
13.3.1 全局域 302
13.3.2 局部域 302
13.3.3 let关键字 305
13.4 包 309
13.4.1 管理机制 309
13.4.2 安装移除 312
13.4.3 更新固化 317
13.4.4 小结 318
第14章 并行计算 319
14.1 基础概念 319
14.1.1 进程与线程 319
14.1.2 条件变量 320
14.2 协程调度 321
14.3 数据通道 325
14.3.1 Channel对象 325
14.3.2 通道绑定 330
14.4 远程调用与远程引用 332
14.5 共享数组 345
14.6 方法小结 348
第15章 混合编程 351
15.1 运行外部程序 351
15.2 调用C/C++ 352
15.2.1 链接库操作 352
15.2.2 函数调用 353
15.2.3 数据访问 356
15.2.4 C++接口 358
15.3 嵌入C/C++ 358
15.4 与Python互调 362
第16章 Julia编程规范 364
16.1 文档注释 364
16.2 高性能编程建议 368
16.2.1 类型 369
16.2.2 函数 373
16.2.3 数组 377
16.2.4 IO 381
16.2.5 其他 381
16.3 与其他语言的异同 382
16.3.1 与Python相比 382
16.3.2 与Matlab相比 384
16.3.3 与R相比 385
16.4 Julia代码风格 387
第17章 编程实战 389
17.1 决策树基本概念 389
17.2 决策树分类器的实现 391
17.3 随机森林算法的构建 406
附录A 内置异常类型 409
附录B 内置系统常量 411
附录C 字符串操作函数 413
附录D 常用包简介 416
后记 428