首页>参考读物>计算机科学与技术>软件与程序设计

Ruby从入门到精通
作者 : Peter Cooper
译者 : 仲田
出版日期 : 2009-02-27
ISBN : 7-111-25866-7
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 381
开本 : 16开
原书名 : Beginning Ruby: From Novice to Professional
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

作为极其流行的Ruby on Rails Web开发框架的底层引擎,Ruby已经广为人知,而它本身是一种极其强大的全能型编程语言。Ruby关注的焦点是减轻开发的负担,以及提供完全的面向对象环境。
  本书是一本彻底而全面的最新指南,适合于各类Ruby读者,不管是编程初学者、Web开发人员,还是Ruby新手。本书从解说面向对象编程背后的原理开始,只通过几章的讲解,就构造出了真正的Ruby应用程序。
  本书还讲解了Ruby关键内容(如类、对象、项目、模板和程序库)以及Ruby的其他方面(如数据库访问)。另外,本书深入介绍了Ruby on Rails。本书附录也提供了重要的参考信息,为经验丰富的程序员提供了Ruby快速入门。
  附录部分请到机工新阅读网站(www.cmpreading.com)下载。

Peter Cooper  是经验丰富的Ruby开发者和培训师,还是最流行的Ruby新闻博客“Ruby内幕”(http://www.rubyinside.com/)的编辑。在2007年以前,他主要做Ruby培训和开发,现在是Feed Digest网站(http://www.feeddigest.com/)的全职开发者和所有者。

仲田 南京某软件公司项目经理,高级程序员、系统分析员,有多年软件开发与管理经验,从事过Delphi、J2EE、Rails应用开发,应用领域主要是企业管理应用,包括财务、审计、法律、商务、办公自动化等,目前正在研究Ruby语言和Rails框架。

图书特色

图书前言

我想最大程度地减少编程的难度,因此想最大程度地减少编程的劳动。这就是我设计Ruby的主要目标。我想让自己快乐地编程。
  —松本行弘(Matz),Ruby之父
  Ruby是“最好的那类”语言,它汇集了前辈语言最好和最强大的编程特点。
  —Jim White
  Ruby让我微笑。
—Amy Hoy (slash7.com)
Ruby是一个有趣的玩具,也是一门严肃的编程语言。Ruby是逗孩子们开心的乐呵呵大叔,但它也扎扎实实地每天花12小时泡在工地上。对千百万程序员来说,Ruby已经是个好朋友,是个值得依赖的服务员,而且它揭示了编程和软件开发的一种新思路。
就像吉他一样,Ruby这门语言常常得到“简单易学但很难精通”的评价。在一定前提下,我同意这种说法。如果你还不懂任何编程语言,Ruby就会令人惊讶地简单易学。如果你已经了解某些语言,例如PHP、Perl、BASIC、C或Pascal,就会很熟悉Ruby的某些概念,但Ruby对于解决问题所持的不同视角,可能会让你一时迷惑不已。如同人们交谈所用的各种语言的区别一样,Ruby与大多数其他编程语言的区别,不仅在于句法,更在于文化、语法和惯例。事实上,Ruby更接近于小众语言(如LISP和Smalltalk),而不是为人熟知的语言(如PHP和C++)。
虽然Ruby的根源可能与其他语言不同,但它在许多行业得到了广泛的应用和重视。以这样那样的方法使用或支持Ruby的公司中,有许多公司的名字如雷贯耳,例如Sun公司、英特尔公司、微软公司、苹果公司和亚马逊网站。Web框架Ruby on Rails是一套用来开发Web应用程序的系统,它以Ruby作为基础语言,目前已是成百上千个大型网站的支柱。Ruby还作为命令行方式的通用语言使用,在这方面更像Perl。语言学家、生化学家、数据库管理员以及千百类其他专业人士和业余人士,都用Ruby简化自己的工作。Ruby是真正的国际化语言,有几乎无限的应用。
本书是为了满足编程新手和有其他语言编程经验的编程人员的需要,由于Ruby的文化与其他语言有太大的不同,因此本书大部分内容将对这两类读者都有用。如果某些大段章节对熟练的程序员来说可以直接跳过,正文中将予以注明。在任何情况下,我都建议所有程序员至少快速浏览一遍自认为明白的章节,因为Ruby有许多令人惊奇的方法,与你以前的做法截然不同。
在阅读本书时,请做好心理准备,以便面对一些非正式的、有些奇怪的示例,以及大量实用主义的做法。Ruby是一种极其实用的语言,不太注重正规形式,而更注重简化开发和有效结果。我将不时展示怎样以“错误的”方式使用Ruby(仅仅是为了示例的目的),但大多数情况下,你将看到“以Ruby方式”完成任务的代码。在我开始学习Ruby时,我主要通过例子来学习,而对于Ruby这么原创且充满惯用法的语言,这是为未来养成良好习惯的最简单方法。然而总是“有不止一种做事方法”,因此,如果你觉得本书某些代码可以用另一种方法重写,以便更适应你的思路,请你尽管尝试!
在开始阅读本书时,请做好心理准备,你将以全新的方式思考,并将由于既有趣又有益的Ruby,而产生编写代码的冲动。Ruby帮助了许多疲惫不堪的开发人员,让他们再次成为高效的程序员,因此,不管你是个编程新手还是这些疲劳者之一,都会发现Ruby既有趣又高效,这几乎是不可避免的。
最后,如果你来自现代脚本语言的阵营,例如Perl、PHP或Python,你可以在阅读第1章之前跳到附录A,它涵盖了Ruby和其他脚本语言的关键区别,或许有助于你更轻松地阅读本书的开头几章。
祝你好运,希望你享受本书的阅读之旅。我们第1章再见。

封底文字

作为极其流行的Ruby on Rails Web开发框架的底层引擎,Ruby已经广为人知,而它本身是一种极其强大的全能型编程语言。Ruby关注的焦点是减轻开发的负担,以及提供完全的面向对象环境。
  本书是一本彻底而全面的最新指南,适合于各类Ruby读者,不管是编程初学者、Web开发人员,还是Ruby新手。本书从解说面向对象编程背后的原理开始,只通过几章的讲解,就构造出了真正的Ruby应用程序。
  本书还讲解了Ruby关键内容(如类、对象、项目、模板和程序库)以及Ruby的其他方面(如数据库访问)。另外,本书深入介绍了Ruby on Rails。本书附录也提供了重要的参考信息,为经验丰富的程序员提供了Ruby快速入门。
  附录部分请到华章网站(www.hzbook.com)下载。

Peter Cooper  是经验丰富的Ruby开发者和培训师,还是最流行的Ruby新闻博客“Ruby内幕”(http://www.rubyinside.com/)的编辑。在2007年以前,他主要做Ruby培训和开发,现在是Feed Digest网站(http://www.feeddigest.com/)的全职开发者和所有者。

仲田 南京某软件公司项目经理,高级程序员、系统分析员,有多年软件开发与管理经验,从事过Delphi、J2EE、Rails应用开发,应用领域主要是企业管理应用,包括财务、审计、法律、商务、办公自动化等,目前正在研究Ruby语言和Rails框架。

作者简介

Peter Cooper:暂无简介

译者简介

仲田:暂无简介

译者序

几年前刚通过Python接触到Ruby时,我的第一感觉就是,和传统语言相比,Python已经够好了,但是Ruby比Python还好!它的语法简单易懂,灵活多变,而且实现了真正纯粹的面向对象,在Ruby中一切都是对象(例如1.upto(10)这种在传统语言中不可想像的语法)。它在程序语言设计的前人经验积累基础上,进行了大胆的组合与创新,已从量变到质变,达到了一个全新的高度。一直以来,我有一种观点:编程语言应该面向程序员,尽量为程序员提供便利,不能只为了机器编译的方便,而让程序员背上不必要的学习和使用负担。Ruby正是这样一门语言,它让我有一种感觉:我找到了!
  Ruby语言自从诞生以来,由于没有“杀手级”应用,一直默默无闻地在小范围内传播,未得到广泛注意。直到2004年末,Ruby on Rails横空出世,世人这才惊觉,在耀眼夺目的Rails背后,有如此强大的Ruby。原来Ruby可以这么用,原来Ruby可以这么强!可以说,没有强大灵活的Ruby,就没有一鸣惊人的Rails!
值得一提的是,教授语言的大师Bruce Eckel(即《Thinking in C++》、《Thinking in Java》等获奖名著的作者)和面向对象设计大师Martin Fowler(即《Patterns of Enterprise Application Architecture》、《Refactoring》、《UML Distilled》、《Planning Extreme Programming》等获奖名著的作者)都对Ruby推崇备至,自从Ruby出现后,他们也像常人一样,从Python移情别恋到Ruby。
  本书是一本覆盖全面且浅显易读的Ruby入门书籍,内容分为三篇。
  第一篇是基础篇,介绍了编程以及Ruby的基本概念,并用简单例子快速引导读者开发真正的Ruby应用程序,另外,还介绍了Ruby的安装方法和发展历史。
第二篇是核心篇,讲解了Ruby语言的核心概念和语法,包括类、对象、模块、项目与程序库、文档化、出错处理和测试、文件与数据库、应用部署、高级功能等,最后综合这些概念和语法,以机器人小程序为例进行了实战开发。
  第三篇是高级篇,深入讲解了炙手可热的Ruby on Rails开发,以及怎样用Ruby访问因特网和网络连接服务,最后还对大量非常有用的Ruby程序库和gem包进行了简要介绍。
  本书末尾包括三个附录,为有经验的开发人员提供了Ruby快速入门参考,为本书读者提供了Ruby语法参考索引,并介绍了可用于进一步学习Ruby的各种网络资源。
  本书由仲田、顾娟、吴畏和汪燕翻译。其中仲田负责翻译第6~16章和附录,顾娟负责翻译第1章和第2章、吴畏负责翻译第3章和第4章,汪燕负责翻译第5章,最后由仲田统稿。
  翻译的过程也是学习的过程,本书让我弥补了许多知识点上的不足,希望也能让你感觉耳目一新,从中受益。

  译  者
  2008年9月

图书目录

译者序
序言
前言
致谢
第一篇  基础与脚手架
第1章  让它跑起来:安装Ruby 1
1.1  安装Ruby 2
1.1.1  Windows平台 2
1.1.2  Apple Mac OS X平台 4
1.1.3  Linux平台 5
1.1.4  其他平台 7
1.2  小结 8
第2章  编程等于快乐:Ruby和面向对象
概览 9
2.1  初始步骤 9
2.1.1  irb:交互式Ruby 9
2.1.2  Ruby是计算机的通用语 10
2.1.3  为什么Ruby是如此杰出的编程语言 10
2.1.4  心灵小径 11
2.2  把思路转变成Ruby代码 13
2.2.1  Ruby怎么理解对象和类的概念 13
2.2.2  造人过程 13
2.2.3  基础变量 15
2.2.4  从人到宠物 15
2.3  一切都是对象 18
2.3.1  Kernel模块的方法 19
2.3.2  向方法传递数据 19
2.3.3  使用String类的方法 20
2.4  以非面向对象方式使用Ruby 21
2.5  小结 22
第3章  Ruby的构造元素:数据、表达式
和流程控制 24
3.1  数字与表达式 24
3.1.1  表达式基础知识 24
3.1.2  变量 24
3.1.3  比较运算符与表达式 25
3.1.4  用块和迭代子在数字中循环 27
3.1.5  浮点数 28
3.1.6  常量 29
3.2  文本与字符串 30
3.2.1  字面字符串 30
3.2.2  字符串表达式 31
3.2.3  插写 32
3.2.4  字符串方法 33
3.2.5  正则表达式与字符串操作 34
3.3  数组与列表 38
3.3.1  基本数组 38
3.3.2  字符串切分成数组 40
3.3.3  数组迭代 40
3.3.4  数组的其他方法 41
3.4  散列表 43
3.4.1  散列表的基础方法 43
3.4.2  散列表中的散列表 44
3.5  流程控制 45
3.5.1  if与unless 45
3.5.2  :,三元运算符 46
3.5.3  elsif与case 47
3.5.4  while与until 48
3.5.5  代码块 49
3.6  其他有用的构造元素 51
3.6.1  日期与时间 51
3.6.2  大数字 53
3.6.3  范围 54
3.6.4  符号 55
3.6.5  类间转换 56
3.7  小结 57
第4章  开发基础的Ruby应用程序 59
4.1  处理源代码文件 59
4.1.1  创建测试文件 59
4.1.2  测试用源代码文件 60
4.1.3  运行源代码 61
4.2  我们的目标程序:文本分析器 63
4.2.1  基本功能需求 63
4.2.2  构建程序基本框架 64
4.2.3  获取哑文本 64
4.2.4  载入文本文件并统计行数 65
4.2.5  统计字符数 66
4.2.6  统计字数 66
4.2.7  统计句子和段落数 68
4.2.8  计算平均值 69
4.2.9  到目前为止的源代码 69
4.3  增加额外功能 70
4.3.1  “有用”字词的百分比 70
4.3.2  找出“有趣的”句子进行汇总 72
4.3.3  分析text.txt之外的其他文件 73
4.4  完整的程序 74
4.5  小结 76
第5章  Ruby生态系统 77
5.1  Ruby的历史 77
5.1.1  Ruby的起源 77
5.1.2  Ruby的影响 78
5.1.3  向西方流传 78
5.2  Ruby on Rails 80
5.2.1  Rails面世的由来 80
5.2.2  Web (2.0) 是怎样赢的 81
5.3  开源文化 82
5.4  如何获得帮助 83
5.4.1  邮件列表 83
5.4.2  Usenet新闻组 83
5.4.3  因特网中继聊天工具 83
5.4.4  文档 84
5.4.5  论坛 85
5.5  加入社区 85
5.5.1  向别人提供帮助 85
5.5.2  贡献代码 86
5.5.3  网络博客 86
5.6  小结 87
第二篇  Ruby的核心
第6章  类、对象和模块 89
6.1  为什么要用面向对象 89
6.2  面向对象基础知识 92
6.2.1  局部变量、全局变量、对象变量和
类变量 92
6.2.2  类方法和对象方法 95
6.2.3  继承 97
6.2.4  覆写现有方法 99
6.2.5  对象方法的反射与发现 101
6.2.6  封装 102
6.2.7  多态 106
6.2.8  嵌套类 107
6.2.9  常量的作用域 108
6.3  模块、命名空间和掺入 109
6.3.1  命名空间 109
6.3.2  掺入 111
6.4  用对象构建“地下城”文本冒险游戏 117
6.4.1  地下城的概念 117
6.4.2  创建初始类 118
6.4.3  Structs:快捷简单的数据类 119
6.4.4  创建房间 121
6.4.5  让地下城运转起来 122
6.5  小结 125
第7章  项目与程序库 127
7.1  项目和使用其他文件的代码 127
7.1.1  基本的文件包含 127
7.1.2  从其他目录包含 129
7.1.3  有条件地包含代码 129
7.1.4  嵌套包含 130
7.2  程序库 130
7.2.1  标准程序库 131
7.2.2  RubyGems包 133
7.3  小结 139
第8章  文档编写、错误处理、调试和
测试 140
8.1  文档编写 140
8.1.1  用RDoc生成文档 140
8.1.2  RDoc技术 142
8.2  调试与出错 144
8.2.1  异常和出错处理 145
8.2.2  Catch与Throw方法 147
8.2.3  Ruby调试器 148
8.3  测试 151
8.3.1  测试驱动开发的哲学 151
8.3.2  单元测试 153
8.3.3  更多的Test::Unit断言 154
8.4  性能基准度量和优化分析 155
8.4.1  性能基准简单度量 156
8.4.2  性能优化分析 157
8.5  小结 159
第9章  文件和数据库 161
9.1  输入与输出 161
9.1.1  键盘输入 161
9.1.2  文件输入输出 162
9.2  数据库基础 173
9.2.1  文本文件数据库 174
9.2.2  对象和数据结构的存储 176
9.3  关系型数据库与SQL 179
9.3.1  关系型数据库概念 179
9.3.2  四大数据库:MySQL、PostgreSQL、Oracle和SQLite 180
9.3.3  安装SQLite 180
9.3.4  关于数据库基本操作和SQL的紧急
教程 181
9.3.5  在Ruby中使用SQLite 184
9.3.6  连接其他数据库系统 188
9.3.7  ActiveRecord简介 192
9.4  小结 192
第10章  部署Ruby应用和程序库 194
10.1  简单Ruby程序发布 194
10.1.1  shebang行 195
10.1.2  关联Windows的文件类型 196
10.1.3  “编译”Ruby程序 196
10.2  检测Ruby运行环境 197
10.2.1  用RUBY_PLATFORM作简单的
操作系统检测 198
10.2.2  环境变量 198
10.2.3  读取命令行参数 200
10.3  以gem包形式发布Ruby程序库 200
10.3.1  创建gem包 201
10.3.2  发布gem包 204
10.3.3  RubyForge网站 204
10.4  以远程服务形式部署Ruby应用 205
10.4.1  CGI脚本 205
10.4.2  常见HTTP服务器 207
10.4.3  远程方法调用 210
10.5  小结 214
第11章  Ruby高级功能 216
11.1  动态代码执行 216
11.1.1  绑定 216
11.1.2  eval的其他形式 217
11.1.3  创建attr_accessor 219
11.2  从Ruby中运行其他程序 220
11.2.1  获得其他程序的运行结果 220
11.2.2  向其他程序移交执行权 221
11.2.3  同时运行两个程序 221
11.2.4  与另一程序交互 222
11.3  安全地掌控数据和危险方法 222
11.3.1  被感染的数据和对象 223
11.3.2  安全级别 224
11.4  使用微软Windows 225
11.4.1  使用Windows API 225
11.4.2  控制Windows程序 227
11.5  线程 228
11.5.1  基础Ruby线程实战 228
11.5.2  高级线程操作 229
11.6  其他语言嵌入Ruby 230
11.6.1  为什么用C作为嵌入语言 231
11.6.2  创建基础方法或函数 231
11.6.3  性能基准度量:C和Ruby 233
11.7  对Unicode和UTF-8的支持 234
11.8  小结 236
第12章  综合演练:开发更大型的Ruby
应用 238
12.1  构建机器人小程序 238
12.1.1  什么是机器人小程序 238
12.1.2  为什么要构建机器人小程序 239
12.1.3  怎样构建 239
12.2  创建文本处理工具程序库 239
12.2.1  构建WordPlay程序库 240
12.2.2  测试该程序库 245
12.2.3  WordPlay程序库的源代码 247
12.3  构建机器人小程序的核心功能 249
12.3.1  程序的生命周期和组成部分 250
12.3.2  机器人小程序的数据 250
12.3.3  构建Bot类和数据载入器 254
12.3.4  response_to方法 255
12.3.5  试用机器人小程序 259
12.4  机器人小程序主要代码清单 262
12.4.1  bot.rb文件 263
12.4.2  basic_client.rb文件 265
12.5  扩展机器人小程序的功能 266
12.5.1  用文本文件作为会话来源 266
12.5.2  把机器人小程序连接到万维网 266
12.5.3  机器人小程序之间的会话 269
12.6  小结 270
第三篇  Ruby在线
第13章  Ruby on Rails: Ruby的杀手级
应用 271
13.1  第一步 271
13.1.1  Rails是什么,为什么要用它 271
13.1.2  安装Rails 272
13.1.3  数据库方面的考虑 273
13.2  构建Rails简单应用 273
13.2.1  创建Rails空白应用 273
13.2.2  数据库初始化 277
13.2.3  创建模型和迁移文件 279
13.2.4  搭建脚手架 282
13.2.5  控制器与视图 285
13.2.6  路由 292
13.2.7  模型间关系 293
13.2.8  会话与过滤器 295
13.3  其他功能特性 296
13.3.1  界面布局 296
13.3.2  测试 298
13.3.3  插件 299
13.4  参考资料与演示应用 300
13.4.1  参考站点和教程 300
13.4.2  Rails示例应用 300
13.5  小结 301
第14章  Ruby与因特网 302
14.1  HTTP与万维网 302
14.1.1  下载网页 302
14.1.2  生成网页和HTML 309
14.1.3  解析网页内容 313
14.2  电子邮件 317
14.2.1  用POP3协议接收邮件 317
14.2.2  用SMTP协议发送邮件 319
14.2.3  用ActionMailer发送邮件 320
14.3  用FTP协议传输文件 321
14.3.1  FTP连接与基本操作 321
14.3.2  下载文件 323
14.3.3  上传文件 324
14.4  小结 325
第15章  网络连接、套接字与后台进程 326
15.1  网络连接的概念 326
15.1.1  TCP和UDP协议 326
15.1.2  IP地址和DNS 327
15.2  网络操作基础 327
15.2.1  检查机器和服务是否可用 327
15.2.2  进行DNS查询 328
15.2.3  直接连接到TCP服务器 330
15.3  服务器和客户端 332
15.3.1  UDP客户端和服务器 332
15.3.2  构建简单的TCP服务器 333
15.3.3  多客户端TCP服务器 335
15.3.4  GServer程序库 336
15.3.5  基于GServer的聊天服务器 339
15.3.6  Web/HTTP服务器 341
15.3.7  后台进程 341
15.4  小结 343
第16章  有用的Ruby程序库和gem包 344
16.1  abbrev程序库 344
16.1.1  安装 344
16.1.2  示例 344
16.1.3  更多信息 345
16.2  base64程序库 345
16.2.1  安装 346
16.2.2  示例 346
16.2.3  更多信息 347
16.3  BlueCloth程序库 348
16.3.1  安装 348
16.3.2  示例 348
16.3.3  更多信息 349
16.4  cgi程序库 349
16.4.1  安装 350
16.4.2  示例 350
16.4.3  更多信息 353
16.5  chronic程序库 354
16.5.1  安装 354
16.5.2  示例 354
16.5.3  更多信息 355
16.6  Digest程序库 355
16.6.1  安装 355
16.6.2  示例 356
16.6.3  更多信息 357
16.7  English程序库 357
16.7.1  安装 357
16.7.2  示例 358
16.7.3  更多信息 359
16.8  ERB程序库 359
16.8.1  安装 359
16.8.2  示例 359
16.8.3  更多信息 361
16.9  FasterCSV程序库 361
16.9.1  安装 361
16.9.2  示例 362
16.9.3  更多信息 365
16.10  iconv程序库 366
16.10.1  安装 366
16.10.2  示例 366
16.10.3  更多信息 367
16.11  logger程序库 367
16.11.1  安装 367
16.11.2  示例 367
16.11.3  更多信息 369
16.12  pp程序库 369
16.12.1  安装 369
16.12.2  示例 369
16.12.3  更多信息 370
16.13  RedCloth程序库 371
16.13.1  安装 371
16.13.2  示例 371
16.13.3  更多信息 372
16.14  StringScanner程序库 372
16.14.1  安装 372
16.14.2  示例 373
16.14.3  更多信息 375
16.15  tempfile程序库 375
16.15.1  安装 375
16.15.2  示例 375
16.15.3  更多信息 377
16.16  uri程序库 377
16.16.1  安装 377
16.16.2  示例 377
16.16.3  更多信息 380
16.17  zlib程序库 380
16.17.1  安装 380
16.17.2  示例 380
16.17.3  更多信息 381
附   录
附录A  Ruby入门与回顾(开发人员
专用版)
附录B  Ruby参考速查
附录C 有用的资源

教学资源推荐
作者: 余永红
作者: (美)Martin Kalin
作者: 哈罗德·阿贝尔森(Harold Abelson)[美] 杰拉尔德•杰伊·萨斯曼(Gerald Jay Sussman) 著朱莉·萨斯曼(Julie Sussman)
作者: [印度]K.G.斯里尼瓦沙(K.G.Srinivasa) 阿尼尔·库马尔·穆帕拉(Anil Kumar Muppalla) 著
参考读物推荐
作者: [日] 小川雄太郎(Yutaro ogawa) 著
作者: David Flanagan
作者: 杨帆 郑青青 王凤筱 编著