编辑推荐
适读人群 :Ruby初学者学习参考 Ruby入门,原版重印27次!松本行弘亲自审校并作推荐序!日本Ruby协会创始人兼会长倾情力作!
内容简介
《Ruby基础教程(第4版)》特点:
Ruby入门,原版重印27次!
松本行弘亲自审校并作推荐序
日本Ruby协会创始人兼会长倾情力作
作者简介
《图灵程序设计丛书:Ruby基础教程(第4版)》为日本公认的Ruby入门教程。松本行弘亲自审校并作序推荐。《图灵程序设计丛书:Ruby基础教程(第4版)》支持Ruby2.0,也附带讲解了可运行于1.9版本的代码,事无巨细且通俗易懂地讲解了编写程序时所需要的变量、常量、方法、类、流程控制等的语法,以及主要类的使用方法和简单的应用,让没有编程经验的读者也能轻松掌握Ruby,找到属于自己的快乐编程方式,做到融会贯通并灵活运用到实际工作中。
本书适合Ruby初学者学习参考,有一定Ruby编程基础的读者若想再回顾一下Ruby的各知识点,本书也能提供不少帮助。
内页插图
精彩书评
高桥征义(Masayoshi Takahashi),日本Ruby协会创始人兼会长。日本IT书籍电子书平台达人出版会董事长。著有《Ruby基础教程》《Rails3绝技190招》等。喜欢的作家是新井素子。
后藤裕藏(Yuuzou Gotou),日本网络应用通信研究所董事。喜欢平克?弗洛伊德乐队。
松本行弘(Yukihiro Matsumoto),Ruby语言发明者,亦是亚洲首屈一指的编程语言发明者。现兼任网络应用通信研究所(NaCl)研究员、乐天技术研究所研究员、Heroku首席架构师等。昵称“Matz”。讨厌东京,喜欢温泉。
何文斯,上海交通大学电子工程系研究生毕业,现就职于某国际独立软件开发商,从事软件售后支持工作。对面向对象的程序设计,脚本语言及其在语音、图像等信号处理中的应用有着浓厚的兴趣。
目录
第1部分 Ruby初体验
第1章 Ruby初探
1.1 Ruby的运行方法
1.2 程序解说
1.3 字符串
1.4 方法的调用
1.5 puts方法
1.6 p方法
1.7 中文的输出
1.8 数值表示与计算
1.9 变量
print方法和变量
1.1 0注释
1.1 1控制语句
print方法和变量
1.1 2条件判断:if~then~end
1.1 3循环
第2章 便利的对象
2.1 数组
2.2 散列
2.3 正则表达式
模式与匹配
第3章 创建命令
3.1 命令行的输入数据
3.2 文件的读取
3.3 方法的定义
3.4 其他文件的引用
第2部分 Ruby的基础
第4章 对象、变量和常量
4.1 对象
4.2 类
4.3 变量
4.4 常量
4.5 保留字
4.6 多重赋值
第5章 条件判断
5.1 什么是条件判断
5.2 Ruby中的条件
5.3 逻辑运算符
5.4 if语句
5.5 unless语句
5.6 case语句
5.7 if修饰符与unless修饰符
5.8 总结
第6章 循环
6.1 循环的基础
6.2 循环时的注意事项
6.3 实现循环的方法
6.4 times方法
6.5 for语句
6.6 普通的for语句
6.7 while语句
6.8 until语句
6.9 each方法
6.1 0loop方法
6.1 1循环控制
6.1 2总结
第7章 方法
7.1 方法的调用
7.2 方法的分类
7.3 方法的定义
第8章 类和模块
8.1 类是什么
8.2 类的创建
8.3 扩展类
8.4 alias与undef
8.5 模块是什么
8.6 模块的使用方法
8.7 创建模块
8.8 Mix-in
8.9 面向对象程序设计
第9章 运算符
9.1 赋值运算符
9.2 逻辑运算符的应用
9.3 条件运算符
9.4 范围运算符
9.5 运算符的优先级
9.6 定义运算符
第10章 错误处理与异常
10.1 关于错误处理
10.2 异常处理
10.3 异常处理的写法
10.4 后处理
10.5 重试
10.6 rescue修饰符
10.7 异常处理语法的补充
10.8 指定需要捕捉的异常
10.9 异常类
10.1 0主动抛出异常
第11章 块
11.1 块是什么
11.2 块的使用方法
11.3 定义带块的方法
11.4 局部变量与块变量
第3部分 Ruby的类
第12章 数值类
12.1 数值类的构成
12.2 数值的字面量
12.3 算数运算
除法
12.4 Math模块
12.5 数值类型转换
12.6 位运算
12.7 随机数
12.8 计数
12.9 近似值误差
第13章 数组类
13.1 复习数组
13.2 数组的创建方法
13.3 索引的使用方法
13.4 作为集合的数组
“|”与“+”的不同点
13.5 作为列的数组
13.6 主要的数组方法
13.7 数组与迭代器
13.8 处理数组中的元素
13.9 数组的元素
13.1 0同时访问多个数组
第14章 字符串类
14.1 字符串的创建
14.2 获取字符串的长度
14.3 字符串的索引
14.4 字符串的连接
14.5 字符串的比较
字符串的大小比较
14.6 字符串的分割
14.7 换行符的使用方法
14.8 字符串的检索与置换
14.9 字符串与数组的共同方法
14.10 其他方法
14.11 日语字符编码的转换
第15章 散列类
15.1 复习散列
15.2 散列的创建
15.3 值的获取与设定
15.4 查看指定对象是否为散列的键或值
15.5 查看散列的大小
15.6 删除键值
15.7 初始化散列
处理有两个键的散列
15.8 应用示例:计算单词数量
第16章 正则表达式类
16.1 关于正则表达式
16.2 正则表达式的模式与匹配
16.3 使用quote方法的正则表达式
16.4 正则表达式的选项
16.5 捕获
16.6 使用正则表达式的方法
16.7 正则表达式的例子
第17章 IO类
17.1 输入/输出的种类
17.2 基本的输入/输出操作
17.3 文件指针
17.4 二进制模式与文本模式
17.5 缓冲
17.6 与命令进行交互
17.7 open-uri库
17.8 stringio库
第18章 File类与Dir类
18.1 File类
18.2 目录的操作
18.3 文件与目录的属性
FileTest模块
18.4 文件名的操作
18.5 与操作文件相关的库
第19章 Encoding类
19.1 Ruby的编码与字符串
19.2 脚本编码与魔法注释
19.3 Encoding类
Encoding类的方法
19.4 正则表达式与编码
19.5 IO类与编码
第20章 Time类与Date类
20.1 Time类与Date类
20.2 时间的获取
20.3 时间的计算
20.4 时间的格式
20.5 本地时间
20.6 从字符串中获取时间
20.7 日期的获取
20.8 日期的运算
20.9 日期的格式
20.1 0从字符串中获取日期
第21章 Proc类
21.1 Proc类是什么
21.2 Proc的特征
21.3 Proc类的实例方法
第4部分动手制作工具
第22章 文本处理
22.1 准备文本
22.2 扩展simple_grep.rb:显示次数
计算匹配行
22.3 扩展simple_grep.rb:显示匹配的部分
第23章 检索邮政编码
23.1 获取邮政编码
23.2 检索邮政编码
23.3 sqlite3库
23.4 插入数据
23.5 检索数据
23.6 总结
附录
附录A Ruby运行环境的构建
A.1 Ruby的安装
A.2 在Windows下安装
A.3 在MacOSX下安装
通过MacPorts安装
A.4 在Unix下安装
附录B Ruby参考集
B.1 RubyGems
gem命令
B.2 Ruby参考手册
B.3 命令行选项
B.4 预定义变量、常量
B.5 错误信息
后记
谢辞
前言/序言
乐在其中的编程语言
与计算机程序“交流”的方式有两种。第一种方式是使用程序,另外一种是编写程序。然而,编写程序的人相对要少,大部分人都是使用程序而已。这个有点接近“读文章的人”与“写文章的人”的比例。读小说、散文、纪实文学等的人很多,但写小说、纪实文学的人数量上就远比读者少。
这里说的“文章”不仅仅是指商业出版物,还包括个人网站。有很多人几乎每天都更新博客,有的是与身边的人分享有趣的事情,有的是提供某些有用的信息。虽然可能只是一些微不足道的信息,但还是会有读者乐于阅读,这类读者就是“用户”,因此博客也可以说是一种“供读者阅读的文章”。
大家基于各种目的创建了这类网站,其中不少人是因为很享受自己编写内容的过程。以个人网站为例,单纯追求创作乐趣的人可能会更多。编程不也是如此吗?也就是说,并不仅仅是为了某种目的而编程,而是因为编程时乐在其中。编程的乐趣并非单指程序内容,使用的编程语言不同,所获得的乐趣也不一样。像这样,让编程本身变得有趣的编程语言真的存在吗?
——存在。Ruby就是其中一种。
Ruby是一种旨在使大家编程时能乐在其中的编程语言。完全面向对象,有丰富的类库,直观、人性化的语法等都是Ruby的特征,但这些并不是Ruby的目的,只是快乐编程的手段。在程序世界里,有着种类繁多的语言。这些语言诞生的缘由多种多样,有的是为了编写运行速度快的程序,有的是为了可以在短时间内编写程序,有的是为了让程序只需编写一次就可以在任何环境中运行,有的是为了使小孩也能进行简单编程,等等。但是,似乎并没有哪个语言积极地宣称其目的是为了快乐编程。这可能是由于各个语言的设计者,并没有认真考虑过让任何人都可以编程。
当然,使大家编程时乐在其中的语言,肯定是一种简单易掌握的语言,复杂的语言不可能让人体会到快乐。同时,这门语言又必须是一个功能强大的语言,若非如此,实际编写程序时会非常费劲。毋庸置言,Ruby就是这样一种简单易掌握,并且功能强大的编程语言。
为了让零编程经验的读者轻松掌握Ruby,本书会巨细无遗地介绍Ruby。从编写程序时所需要的变量、常量、方法、类、流程控制等的语法说明,到主要类的使用方法和简单的应用,都会尽量用通俗易懂的方式来说明。对于从未接触过计算机的读者来说,也许这有点难,但是那些稍微懂点HTML的读者很容易就能做到融会贯通。另外,对于那些并非初学者的读者来说,若想再回顾一下Ruby的各知识点,本书也能提供不少帮助。
希望各位读者能通过本书,熟练掌握Ruby,找到属于自己的快乐而有趣的编程方式,并灵活运用到实际中,笔者将不胜荣幸。
欢迎来到Ruby的世界!
高桥征义|后藤裕藏
探索现代 Web 开发的基石:一门关于高效、优雅编程的入门指南 在这个快速发展的数字时代,掌握一门强大的编程语言是开启无限可能性的钥匙。而 Ruby,作为一门以开发者为中心、强调简洁与快乐的脚本语言,早已成为现代 Web 开发领域不可或缺的基石。它不仅仅是一门语言,更是一种编程哲学,一种拥抱创造力、鼓励优雅解决问题的方式。 本书并非一本枯燥的技术手册,而是一次引人入胜的探索之旅,旨在带领初学者踏入 Ruby 的奇妙世界。我们将从最基础的概念出发,循序渐进地构建你的编程思维,让你在实践中感受 Ruby 的魅力。无论你是否有过编程经验,本书都将为你提供一个清晰、易懂的学习路径,让你能够自信地编写出高效、可维护的代码。 第一部分:初识 Ruby,点燃编程火花 我们将从安装 Ruby 环境开始,让你迅速拥有自己的编程工作区。接着,我们将深入了解 Ruby 最基本的数据类型,比如数字(整数、浮点数)、字符串、布尔值等。你将学会如何声明变量,如何进行基本的算术运算,以及如何使用字符串进行文本处理。 你还会接触到 Ruby 的控制流语句,这是编写任何程序的核心。我们将详细讲解 `if`、`else`、`elsif` 条件语句,让你能够根据不同的情况做出决策。循环语句,如 `while`、`until`、`for` 以及 Ruby 独具特色的 `each` 方法,将帮助你有效地处理重复性的任务,极大地提高你的编程效率。 第二部分:构建模块化代码,掌握对象导向的精髓 Ruby 是一门纯粹的面向对象语言,这意味着我们将花大量时间来理解对象、类和继承的概念。你将学会如何定义自己的类,创建对象,并为对象赋予属性(实例变量)和行为(实例方法)。我们将通过生动的例子,让你深刻理解“万物皆对象”的哲学,以及如何利用面向对象的设计来构建更灵活、更易于扩展的程序。 我们将深入探讨方法的定义与调用,包括参数传递、返回值以及作用域。你还将学习到 Ruby 中强大的模块(Modules)和混合(Mixins)机制,这是实现代码重用和组织结构的重要手段。通过模块,你可以将相关的行为封装起来,并在不同的类中灵活地应用,避免代码的重复编写。 第三部分:数据结构与集合,高效管理信息 在编程过程中,处理和组织数据是必不可少的环节。本书将为你详细介绍 Ruby 中最常用的数据结构,包括数组(Arrays)和哈希(Hashes)。你将学会如何创建、访问、修改和遍历数组,以及如何使用哈希来存储键值对。 我们将深入探讨 Ruby 提供的丰富多样的集合操作方法。从基本的增删改查,到更高级的排序、过滤、映射和归约操作,你将掌握如何用 Ruby 的强大功能来高效地处理数据集合,让你的代码更简洁、更富有表现力。 第四部分:块(Blocks)、迭代器(Iterators)与 Lambda 表达式,释放 Ruby 的强大 Ruby 的块(Blocks)、迭代器(Iterators)和 Lambda 表达式是其最具特色和强大之处。我们将深入剖析这些概念,让你理解它们如何与方法结合,实现高度灵活的代码。你将学会如何创建和使用迭代器来处理集合,以及如何定义自己的块来传递代码给方法。 Lambda 表达式,作为一种匿名的函数对象,将为你提供更高级的编程抽象能力。你将学习如何使用 Lambda 来编写简洁、灵活的代码,并在需要时将其作为参数传递,实现更强大的功能。 第五部分:错误处理与调试,成为代码的守护者 编写出没有 bug 的代码几乎是不可能的。本书将教你如何有效地处理程序运行时可能出现的错误。你将学习 `begin`、`rescue`、`ensure` 等异常处理机制,让你能够优雅地应对各种异常情况,保证程序的稳定运行。 同时,我们将介绍一些常用的调试技巧和工具,帮助你快速定位和修复代码中的错误。掌握这些技能,你将能够更自信地面对复杂的编程挑战。 第六部分:文件操作与输入输出,与外部世界互动 程序往往需要与外部文件进行交互,读取数据或写入结果。本书将为你讲解 Ruby 中进行文件操作的基本方法。你将学会如何打开、读取、写入和关闭文件,以及如何处理不同类型的文件内容。 第七部分:单元测试,构建可靠的代码基石 编写可测试的代码是衡量一个优秀程序员的标准之一。我们将介绍单元测试的概念,并使用 Ruby 社区广泛使用的测试框架(例如 RSpec 或 MiniTest)来编写单元测试。通过编写测试,你能够验证代码的正确性,并在代码重构或修改时提供保障,确保程序的健壮性。 第八部分:面向对象设计的进阶,打造可维护的系统 在掌握了 Ruby 的基本面向对象特性后,我们将进一步探讨更高级的对象导向设计原则。你将学习如何利用封装、继承和多态来构建更易于理解、更易于扩展和维护的代码。我们将介绍一些常见的面向对象设计模式,并讨论如何在 Ruby 中应用它们,帮助你写出更高质量的代码。 第九部分:Ruby 的生态系统,连接更广阔的世界 Ruby 并非孤立存在的语言,它拥有一个庞大而活跃的生态系统。本书将为你介绍 RubyGems,这是 Ruby 的包管理器,让你能够方便地安装和使用成千上万的第三方库。你还将初步了解 Rails 框架,这是 Ruby 最著名的 Web 开发框架之一,它极大地简化了 Web 应用程序的开发流程。 第十部分:迈向 Web 开发的下一步 在本书的学习过程中,你已经积累了扎实的 Ruby 编程基础。我们将为你提供一些关于如何进一步学习 Web 开发的建议。你将了解 Web 的基本工作原理,以及如何利用 Ruby 和 Rails 来构建动态的 Web 应用程序。 本书的特色: 强调实践: 本书并非空洞的理论讲解,而是通过大量的代码示例和练习,让你在动手实践中学习。 清晰易懂: 我们力求用最简洁、最直观的语言来解释复杂的概念,即使是编程新手也能轻松理解。 循序渐进: 学习路径设计合理,从基础到进阶,步步为营,让你逐步建立信心。 鼓励探索: 本书不仅教授“如何做”,更鼓励你思考“为什么”,培养你的独立解决问题的能力。 面向未来: 本书的内容紧跟 Ruby 的发展趋势,为你未来的编程学习打下坚实基础。 掌握 Ruby 是一种能力,更是一种享受。它能让你用更少的代码完成更多的事情,让你在编程过程中感受到创造的乐趣。这本书将是你踏上 Ruby 之旅的理想起点,助你成为一名更出色的开发者,用代码创造更美好的数字世界。让我们一起,在 Ruby 的世界里,释放你的创造力!
我一直对程序设计有着浓厚的兴趣,但苦于没有一个好的入门渠道。各种语言的宣传铺天盖地,但真正能够让我这种完全的零基础小白,也能轻松理解并上手实践的书籍却寥寥无几。很多教程上来就是一大堆概念,看得我云里雾里,还没开始写代码就想放弃了。这次偶然间翻到了《Ruby基础教程 第4版》,我抱着试试看的心态,却被这本书的风格深深吸引。 这本书的编排逻辑非常清晰,从最基本也是最核心的“Hello, World!”开始,逐步引导读者了解Ruby语言的语法规则,比如变量的声明和赋值、基本的数据类型(字符串、数字、布尔值等)的使用,以及如何进行简单的算术和逻辑运算。最让我印象深刻的是,作者并没有直接丢给我一堆代码,而是先用通俗易懂的语言解释了每一个概念背后的原理,然后再配上简洁明了的代码示例。这些示例不仅仅是简单的展示,很多时候还附带了作者的思考过程,让我知道为什么这么写,以及这样写的好处。 在学习到控制流程的章节时,我尤其感到受益匪浅。条件语句(if/else)和循环语句(while/for)在编程中扮演着至关重要的角色,而这本书用非常贴切的比喻和生动的例子,将这些抽象的概念具体化。例如,作者用“天气预报”来解释if语句的逻辑,用“排队买票”来类比循环的执行过程。这样的讲解方式,让我在理解这些基础但关键的语法时,感到轻松自在,甚至有些乐趣。 书中对于方法的介绍也相当到位。我之前对“函数”或“方法”的概念总是有种莫名的畏惧感,觉得是高级程序员才掌握的技巧。但《Ruby基础教程 第4版》将方法的定义、调用、参数传递等概念,通过循序渐进的方式呈现出来,让我逐渐克服了心理障碍。并且,作者还强调了如何编写清晰、可复用的方法,这对于我将来养成良好的编程习惯至关重要。 总的来说,这本书给我带来了前所未有的学习体验。它不是那种堆砌大量术语的理论书籍,也不是那种只讲皮毛的速成教程,而是一本真正能够帮助初学者建立起对Ruby语言整体认知,并培养起编程思维的优秀教材。我推荐给所有想要入门Ruby,但又不知道从何下手的读者。