Ruby 语言简介
在动手装环境之前,我们先认识一下 Ruby 到底是什么、为什么值得学、能用它做什么。理解了背景,学习的时候会更有的放矢。
Ruby 是什么?
Ruby 是一门高级、动态、解释型的面向对象脚本语言,由日本工程师松本行弘(Yukihiro Matsumoto,网名 Matz)于 1993 年开始设计、1995 年公开发布。Matz 想要一门"比 Perl 更强大、比 Python 更面向对象"的语言,于是吸收了 Smalltalk 的纯对象模型、Perl 的文本处理能力、Lisp 的优雅表达,做成了 Ruby。
诞生故事:为程序员的幸福而设计
Matz 在 1993 年的对话里说过:"我想要一门让程序员写得开心的语言。"当时 Perl 擅长写脚本但面向对象能力弱,Python 简洁但还不成熟,Lisp 优雅但工业生态匮乏。Matz 想把三者的优点合在一起:
- 从 Smalltalk 借来"一切皆对象"和消息传递的纯粹模型;
- 从 Perl 借来强大的正则、文本处理和许多特殊变量;
- 从 Lisp 借来块(Block)和高阶函数式的表达力;
- 从 Eiffel / Ada 借来严谨的命名约定与可读性追求。
结果就是 Ruby——一门读起来像自然语言、写起来像散文的语言。Matz 后来把这种追求总结为一句话:"语言是设计师品味的体现"。
Rails:让 Ruby 火遍全球
Ruby 在西方世界被忽视多年,直到 2004 年丹麦程序员 David Heinemeier Hansson(DHH)在 37signals 公司构建 Basecamp 时,把其中的 Web 框架剥离出来开源,命名为 Ruby on Rails。DHH 用 Rails 在 15 分钟演示出一个博客系统的视频震惊了整个 Web 开发圈。
Rails 倡导三个核心原则:
- 约定优于配置(Convention over Configuration):表叫 posts 就映射到 Post 类,不用写一行 XML 配置。
- 不要重复自己(DRY, Don't Repeat Yourself):消除样板,Ruby 的元编程能力让它成为可能。
- 快乐编程(Programmer Happiness):API 设计围绕人的阅读体验,而不是机器。
GitHub、Shopify、Airbnb、Twitch、Stripe、Kickstarter、Cookpad、Hulu——这些公司早期(很多至今)都把核心业务跑在 Ruby/Rails 上。
Ruby 的核心特点
- 一切皆对象:没有原始类型,数字
5、nil、true都是对象,都能调用方法。 - 动态类型:变量没有类型,值才有类型。同一变量可先后存字符串、数字。
- 方法调用可省略括号:
puts "hi"和puts("hi")完全等价,这是它读起来像英文的关键。 - 块(Block):Ruby 最有特色的特性,任何方法都可以接收一段匿名代码作为参数。
- 纯面向对象:连类本身也是对象(Class 类的实例),支持元编程。
- 垃圾回收:不用手动管理内存。
- 丰富的 DSL 能力:RSpec、Rake、Sinatra、Rails 路由都靠它写出像配置/英文的代码。
- 多范式:面向对象为主,但函数式、过程式都能写。
第一个 Ruby 程序
说了这么多,先看一眼代码。Ruby 的"Hello World"长这样:
# Ruby 的 Hello World 比绝大多数语言都短
puts "Hello, World!"
# 输出: Hello, World!对比 Java 的 public static void main,Ruby 这一行简直优雅得不像是程序。这种极简和可读是 Ruby 的标志。
一切皆对象长什么样
提前感受一下 Ruby 区别于很多语言的核心特点:
# 在 Ruby 里,5 是一个对象,有自己的方法
puts 5.class # Integer
puts 5.to_s # "5"
puts 3.times.to_a # [0, 1, 2]
# 字符串当然也是对象
"hello".upcase # "HELLO"
"hello".reverse # "olleh"
"hello".length # 5
# 甚至 nil / true / false 都是对象
puts nil.class # NilClass
puts true.class # TrueClass看 5.class 返回 Integer——数字本身就是对象,可以直接调方法。这种一致性让 Ruby 学起来很顺:只要会一个对象的写法,几乎就全会了。
Ruby 都用在哪?
- Web 后端:Ruby on Rails、Sinatra、Hanami——这是 Ruby 最大的就业市场。
- DevOps / 系统脚本:Chef、Vagrant、Homebrew 最初都是 Ruby 写的,Mac 用户每天都在跑 Ruby。
- 静态站点生成:Jekyll(GitHub Pages 默认引擎)。
- API 与微服务:Rails 提供 API-only 模式,Grape 专门做 API。
- DSL 与工具:Fastlane(移动端发布自动化)、Cocoapods(iOS 依赖管理)、Capistrano(部署)。
Ruby vs 其他语言
- vs Python:两者都是动态脚本语言,Python 强在数据科学/AI,Ruby 强在 Web 后端和 DSL。Ruby 的语法更"人性化",Python 更"标准化"。
- vs PHP:Ruby 是纯面向对象的,PHP 5 之后才补上面向对象。Ruby 性能略强,代码风格更优雅,但 PHP 主机更便宜、生态更深。
- vs JavaScript:Ruby 主要在服务端,JS 全栈。Ruby 的语法和设计哲学影响了很多语言(包括 Elixir、Crystal)。
- vs Java:Ruby 动态类型、解释执行、代码量少得多;Java 静态类型、编译执行、性能更强、企业生态更厚。
该不该学 Ruby?
如果你的方向是Web 后端、创业项目快速上线、DevOps 自动化,Ruby 几乎是必修课。哪怕你最终不用它工作,体验一次 Ruby 的设计哲学,你对"什么是好语法"的理解也会完全不同——这份"快乐编程"的理念影响了 Swift、Elixir、Crystal 等新一代语言。
← 返回 Ruby 教程目录
下一篇 Ruby 环境安装 →