Elixir 程序设计

Elixir 程序设计
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (大卫·托马斯) , ,
2016-04
版次: 1
ISBN: 9787121282645
定价: 75.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 340页
正文语种: 简体中文
56人买过
  •   《Elixir 程序设计》作者就是15 年前编写了Programming Ruby,将Ruby 带入大众视野的Dave Thomas。这一次他延续了一贯的写作风格,以一个拥有面向对象的开发经历但并未接触过函数式编程的开发者的角度切入,循序渐进地带领读者进入 Elixir 的奇妙世界。通过一步步的实验探索,引导读者逐步跳出已有的编程思维模式,以全新的函数式编程方式来思考及寻找解决实际问题的办法。然而本书并不像Programming Ruby 那样面面俱到,而是给读者讲述基本的Elixir 语法和编程思想,同时提供许多有用的资源,启发读者继续深入探索。这也是学习一门新语言的乐趣所在。  如果你对函数式编程有兴趣,或者你正在苦苦寻求一种高效的并发编程的方法,Elixir 可以作为入门之选,值得一试。   杜万,毕业于同济大学,就职于 Coding.NET,目前负责 WebIDE 项目和 CodeInsight 项目的架构和研发。从事了近10年以 Java 语言为主的软件开发工作,热衷于整合框架和开发工具,关注交互设计,喜欢写技术博客

      黄明信,毕业于岭南师范学院,就职于 Coding.NET,主要负责后台应用服务的研发。喜欢折腾机器和编程领域的各种玩意儿,专注于软件开发效率的提升和代码表达能力的优化。典型的射手座,兴趣广泛,但只为代码而活。 第1 章 接受现实 1编程时应该关注数据转换 1借助管道来组合转换 2函数是数据转换器 3安装 Elixir 3运行 Elixir 4iex—交互式 Elixir 4编译和运行 8对阅读本书的建议 9练习 9换一种方式思考 10第一部分 常规编程第2 章 模式匹配 12赋值:并非如你所料 12更复杂的匹配 13轮到你了15用_(下画线)忽略匹配值 15每次匹配变量仅绑定一次 15轮到你了17从另一个角度来看等号 17第3 章 不可变性 18你已经拥有了(一些)不可变数据 18不可变的数据才是已知的 19不可变性对性能的影响 20复制数据20垃圾回收20用不可变数据编写程序 21第4 章 Elixir 基础 22内置类型 22值类型 23整数 23浮点数 23原子 24区间 24正则表达式 24系统类型 25PID 和端口 25引用 25收集类型 26元组 26列表 27散列表 28二进制型29命名、源文件、约定、运算符和其他 30真值 30运算符 31小结 32第5 章 匿名函数 33函数和模式匹配 34轮到你了35一个函数,多个函数体 35编写更长的代码 36轮到你了37能返回函数的函数 37记住原始环境的函数 38参数化函数 39轮到你了39将函数作为参数来传递 40& 运算符 40轮到你了42函数是核心 42第6 章 模块与命名函数 43编译模块 43函数体是代码块 44轮到你了45函数调用与模式匹配 45轮到你了48哨兵子句 48哨兵子句的限制 49默认参数 50轮到你了53私有函数 53|> ——美妙的管道运算符 54模块 55模块指令57import 指令 57alias 指令 58require 指令 58模块属性 58模块名:Elixir、Erlang 和原子类型 59调用 Erlang 的库函数 60寻找函数库 60轮到你了61第7 章 列表与递归 62头部和尾部 62使用头部和尾部来处理列表 63iex 如何显示列表 64使用头部和尾部来构造列表 66创建映射函数 67在递归过程中跟踪值 68轮到你了69生成求和函数 69轮到你了70更复杂的列表模式 71列表的列表 71轮到你了74List 模块实战 75与列表友好相处 76第8 章 字典:散列表、散列字典、关键字列表、集合与结构体 77如何在散列表、散列字典和关键字列表之间做选择 77字典 78模式匹配和更新散列表 79模式匹配不能绑定键 81更新散列表 82散列表与结构体 82访问结构体的另一种方式 84嵌套字典结构 85嵌套访问器和非结构体 86动态(运行时)嵌套访问器 87集合 88能力越大,诱惑越大 89第9 章 番外篇—类型是什么 90第10 章 处理收集—Enum 与Stream 92Enum——处理收集 92关于排序的说明 95轮到你了96Stream——延迟处理的枚举类型 96流是可组合的枚举器 97无限流 99自定义流99流在实际中的应用 104Collectable 协议 104推导式 105推导式也可以处理二进制位 106作用域与推导式 107推导式的返回值 107轮到你了108感动过往的神 109第11 章 字符串与二进制型 110字符串字面量 110Heredoc 111魔术符 112“字符串”这个名称 113单引号字符串——字符编码列表 114轮到你了116二进制型 117双引号字符串是二进制型 118字符串与Elixir 库 118轮到你了124二进制型与模式匹配 124用二进制型来处理字符串 124轮到你了125熟悉却又陌生 126第12 章 控制流 127if 与 unless 127cond 128case 131抛出异常 133包含异常的设计 133四两拨千斤 134轮到你了134第13 章 组织项目 136项目:从 GitHub 获取 issue 136我们的代码将如何工作 137任务:用mix 来创建我们的新项目 137创建项目树 138转换:解析命令行 140进阶:编写一些基本的测试 142轮到你了144转换:从 GitHub 获取数据 144任务:使用外部库 145寻找库 146为项目添加库 146轮到你了148回到转换148转换:转换响应内容 151不在 hex 里的依赖项 152应用程序配置 152转换:为数据排序 153转换:取前n 条 155轮到你了156转换:格式化表格 156任务:创建命令行可执行程序 159任务:添加日志 161任务:测试代码注释 163任务:创建项目文档 167使用转换数据的方法来编写代码 169轮到你了170第14 章 运用多进程 172简单的进程 173在进程间发送消息 174处理多条消息 175递归、循环与栈 178进程开销 178轮到你了181进程何时结束 182关联两个进程 183监控进程185轮到你了186并行map——Erlang 版本的“Hello, World” 186轮到你了187斐波那契数服务器 188任务调度器 189轮到你了192代理——一个难题 192以进程的方式来思考 194第15 章 节点——分布式服务的关键 195命名节点 195轮到你了197节点、cookie 与安全 198给你的进程命名 199何时给进程命名 202轮到你了202I/O、PID 与节点 203轮到你了204节点是分布式的基础 205第16 章 OTP:服务器 206一些 OTP 的定义 206OTP 服务器 207状态和单个服务器 207我们的第一个 OTP 服务器 208轮到你了210单向调用210跟踪服务器的执行情况 212轮到你了214GenServer 回调函数 214给进程命名 216整理接口 217轮到你了218第17 章 OTP:应用程序监视器 220应用程序监视器与工作进程 220轮到你了223管理重启前后的进程状态 223应用程序监视器是可靠性的核心 229轮到你了229第18 章 OTP:应用程序 230这不是传统的应用程序 230应用程序规范文件 231将Sequence 程序转变为OTP 应用程序 231关于应用参数的更多信息 234监视是可靠性的基础 234轮到你了235热代码交换 235OTP 很大——难以置信的大 241轮到你了241第19 章 任务与代理 242任务 242任务与监视 243代理 244更大的例子 246使其分布式运行 248使用代理与任务,还是GenServer 249第三部分 更高级的Elixir第20 章 宏与代码求值 252实现if 语句 252宏注入代码 254装载次序255quote 函数 256将内部表示作为代码使用 256unquote 函数 258展开列表——unquote_splicing 259回到我们的myif 宏 260轮到你了261使用绑定来注入值 261宏是卫生的 263执行代码片段的其他方法 264宏与运算符 265深入研究 266更进一步 266轮到你了267第21 章 连接多个模块:行为与use 268行为 268定义行为268声明行为269use 与 __using__ 270放到一起——跟踪方法调用 270使用use 275轮到你了275第22 章 协议——多态函数 277定义协议 277实现协议 278可用的类型 279轮到你了280协议和结构体 280内置协议:Access 281内置协议:Enumerable 282内置协议:String.Chars 285内置协议:Inspect 286协议就是多态 288轮到你了288第23 章 更酷的玩意儿 290自定义魔术符 290获取选项292轮到你了293多应用的 umbrella 项目 294创建 umbrella 项目 295创建子项目 295LineSigil 项目 296Evaluator 项目 296连接子项目 297别急!还有更多炫酷的玩意儿! 299附录A 异常:raise 与try,catch 与throw 300附录B 类型规范与类型检查 306
  • 内容简介:
      《Elixir 程序设计》作者就是15 年前编写了Programming Ruby,将Ruby 带入大众视野的Dave Thomas。这一次他延续了一贯的写作风格,以一个拥有面向对象的开发经历但并未接触过函数式编程的开发者的角度切入,循序渐进地带领读者进入 Elixir 的奇妙世界。通过一步步的实验探索,引导读者逐步跳出已有的编程思维模式,以全新的函数式编程方式来思考及寻找解决实际问题的办法。然而本书并不像Programming Ruby 那样面面俱到,而是给读者讲述基本的Elixir 语法和编程思想,同时提供许多有用的资源,启发读者继续深入探索。这也是学习一门新语言的乐趣所在。  如果你对函数式编程有兴趣,或者你正在苦苦寻求一种高效的并发编程的方法,Elixir 可以作为入门之选,值得一试。
  • 作者简介:
      杜万,毕业于同济大学,就职于 Coding.NET,目前负责 WebIDE 项目和 CodeInsight 项目的架构和研发。从事了近10年以 Java 语言为主的软件开发工作,热衷于整合框架和开发工具,关注交互设计,喜欢写技术博客

      黄明信,毕业于岭南师范学院,就职于 Coding.NET,主要负责后台应用服务的研发。喜欢折腾机器和编程领域的各种玩意儿,专注于软件开发效率的提升和代码表达能力的优化。典型的射手座,兴趣广泛,但只为代码而活。
  • 目录:
    第1 章 接受现实 1编程时应该关注数据转换 1借助管道来组合转换 2函数是数据转换器 3安装 Elixir 3运行 Elixir 4iex—交互式 Elixir 4编译和运行 8对阅读本书的建议 9练习 9换一种方式思考 10第一部分 常规编程第2 章 模式匹配 12赋值:并非如你所料 12更复杂的匹配 13轮到你了15用_(下画线)忽略匹配值 15每次匹配变量仅绑定一次 15轮到你了17从另一个角度来看等号 17第3 章 不可变性 18你已经拥有了(一些)不可变数据 18不可变的数据才是已知的 19不可变性对性能的影响 20复制数据20垃圾回收20用不可变数据编写程序 21第4 章 Elixir 基础 22内置类型 22值类型 23整数 23浮点数 23原子 24区间 24正则表达式 24系统类型 25PID 和端口 25引用 25收集类型 26元组 26列表 27散列表 28二进制型29命名、源文件、约定、运算符和其他 30真值 30运算符 31小结 32第5 章 匿名函数 33函数和模式匹配 34轮到你了35一个函数,多个函数体 35编写更长的代码 36轮到你了37能返回函数的函数 37记住原始环境的函数 38参数化函数 39轮到你了39将函数作为参数来传递 40& 运算符 40轮到你了42函数是核心 42第6 章 模块与命名函数 43编译模块 43函数体是代码块 44轮到你了45函数调用与模式匹配 45轮到你了48哨兵子句 48哨兵子句的限制 49默认参数 50轮到你了53私有函数 53|> ——美妙的管道运算符 54模块 55模块指令57import 指令 57alias 指令 58require 指令 58模块属性 58模块名:Elixir、Erlang 和原子类型 59调用 Erlang 的库函数 60寻找函数库 60轮到你了61第7 章 列表与递归 62头部和尾部 62使用头部和尾部来处理列表 63iex 如何显示列表 64使用头部和尾部来构造列表 66创建映射函数 67在递归过程中跟踪值 68轮到你了69生成求和函数 69轮到你了70更复杂的列表模式 71列表的列表 71轮到你了74List 模块实战 75与列表友好相处 76第8 章 字典:散列表、散列字典、关键字列表、集合与结构体 77如何在散列表、散列字典和关键字列表之间做选择 77字典 78模式匹配和更新散列表 79模式匹配不能绑定键 81更新散列表 82散列表与结构体 82访问结构体的另一种方式 84嵌套字典结构 85嵌套访问器和非结构体 86动态(运行时)嵌套访问器 87集合 88能力越大,诱惑越大 89第9 章 番外篇—类型是什么 90第10 章 处理收集—Enum 与Stream 92Enum——处理收集 92关于排序的说明 95轮到你了96Stream——延迟处理的枚举类型 96流是可组合的枚举器 97无限流 99自定义流99流在实际中的应用 104Collectable 协议 104推导式 105推导式也可以处理二进制位 106作用域与推导式 107推导式的返回值 107轮到你了108感动过往的神 109第11 章 字符串与二进制型 110字符串字面量 110Heredoc 111魔术符 112“字符串”这个名称 113单引号字符串——字符编码列表 114轮到你了116二进制型 117双引号字符串是二进制型 118字符串与Elixir 库 118轮到你了124二进制型与模式匹配 124用二进制型来处理字符串 124轮到你了125熟悉却又陌生 126第12 章 控制流 127if 与 unless 127cond 128case 131抛出异常 133包含异常的设计 133四两拨千斤 134轮到你了134第13 章 组织项目 136项目:从 GitHub 获取 issue 136我们的代码将如何工作 137任务:用mix 来创建我们的新项目 137创建项目树 138转换:解析命令行 140进阶:编写一些基本的测试 142轮到你了144转换:从 GitHub 获取数据 144任务:使用外部库 145寻找库 146为项目添加库 146轮到你了148回到转换148转换:转换响应内容 151不在 hex 里的依赖项 152应用程序配置 152转换:为数据排序 153转换:取前n 条 155轮到你了156转换:格式化表格 156任务:创建命令行可执行程序 159任务:添加日志 161任务:测试代码注释 163任务:创建项目文档 167使用转换数据的方法来编写代码 169轮到你了170第14 章 运用多进程 172简单的进程 173在进程间发送消息 174处理多条消息 175递归、循环与栈 178进程开销 178轮到你了181进程何时结束 182关联两个进程 183监控进程185轮到你了186并行map——Erlang 版本的“Hello, World” 186轮到你了187斐波那契数服务器 188任务调度器 189轮到你了192代理——一个难题 192以进程的方式来思考 194第15 章 节点——分布式服务的关键 195命名节点 195轮到你了197节点、cookie 与安全 198给你的进程命名 199何时给进程命名 202轮到你了202I/O、PID 与节点 203轮到你了204节点是分布式的基础 205第16 章 OTP:服务器 206一些 OTP 的定义 206OTP 服务器 207状态和单个服务器 207我们的第一个 OTP 服务器 208轮到你了210单向调用210跟踪服务器的执行情况 212轮到你了214GenServer 回调函数 214给进程命名 216整理接口 217轮到你了218第17 章 OTP:应用程序监视器 220应用程序监视器与工作进程 220轮到你了223管理重启前后的进程状态 223应用程序监视器是可靠性的核心 229轮到你了229第18 章 OTP:应用程序 230这不是传统的应用程序 230应用程序规范文件 231将Sequence 程序转变为OTP 应用程序 231关于应用参数的更多信息 234监视是可靠性的基础 234轮到你了235热代码交换 235OTP 很大——难以置信的大 241轮到你了241第19 章 任务与代理 242任务 242任务与监视 243代理 244更大的例子 246使其分布式运行 248使用代理与任务,还是GenServer 249第三部分 更高级的Elixir第20 章 宏与代码求值 252实现if 语句 252宏注入代码 254装载次序255quote 函数 256将内部表示作为代码使用 256unquote 函数 258展开列表——unquote_splicing 259回到我们的myif 宏 260轮到你了261使用绑定来注入值 261宏是卫生的 263执行代码片段的其他方法 264宏与运算符 265深入研究 266更进一步 266轮到你了267第21 章 连接多个模块:行为与use 268行为 268定义行为268声明行为269use 与 __using__ 270放到一起——跟踪方法调用 270使用use 275轮到你了275第22 章 协议——多态函数 277定义协议 277实现协议 278可用的类型 279轮到你了280协议和结构体 280内置协议:Access 281内置协议:Enumerable 282内置协议:String.Chars 285内置协议:Inspect 286协议就是多态 288轮到你了288第23 章 更酷的玩意儿 290自定义魔术符 290获取选项292轮到你了293多应用的 umbrella 项目 294创建 umbrella 项目 295创建子项目 295LineSigil 项目 296Evaluator 项目 296连接子项目 297别急!还有更多炫酷的玩意儿! 299附录A 异常:raise 与try,catch 与throw 300附录B 类型规范与类型检查 306
查看详情
相关图书 / 更多