手册简介:

Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。

由 Ruby 语言本身还发展出了JRuby(Java平台)、IronRuby(.NET平台)等其他平台的 Ruby 语言替代品。

Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。

因为Perl发音与6月诞生石pearl(珍珠)相同,

因此Ruby以7月诞生石ruby(红宝石)命名。

C#的命名则是乐理中的C音符升半度而来

手册说明:

官网:http://www.ruby-lang.org/en/

API文档:http://www.ruby-lang.org/en/documentation/

下载:http://www.ruby-lang.org/en/downloads/

发展历程

Ruby明显比其他类似的编程语言(如Perl或Python)年轻,又因为Ruby是日本人发明的,所以早期的非日文资料和程序都比较贫乏,所以在网上仍然可以找到类似“Ruby的资料太少”之类的批评。约于2000年,Ruby开始进入美国,英文的资料开始发展。

Ruby归根结底源于Perl和Python两类语言,与C,C++,C#,java是不同大类。

Ruby 标识
2011年10月31日1.9.3的第一个稳定版本1.9.3p0发布。
2013年2月22日发布了Ruby 1.9.3-p392。
2013年2月24日发布了Ruby 2.0.0-p0。
2015年4月13日发布了Ruby 2.2.2。
2015年12月25日发布了Ruby 2.3.0。

语言标准

Ruby的变量有一定的规则,

以 $ 开头的一定是全局变量,
以 @ 开头的都是实例变量,
而以  @@  开头的是类变量。
常数则以大写字母开头;
这种方法,对文本编辑器的命令补全很有帮助,
如在vim下先键入$及开头字母,再敲击Ctrl+p,则可专门补全本文件以及关联文件中的全局变量,perl与php亦有此优点。

已经定义的类可以在运行时修改
Ruby是动态语言,你可以在程序中修改先前定义过的类。
 也可以在某个类的实例中定义该实例特有的方法,这叫做单例方法。

class Girldef showCup"generalmethod_showCup"end
end
loli=Girl.new
def loli.showCup"no cup for this loli instance."
end

loli.showCup#specialcupforthisloliinstance


使用Ruby可以写出简短而又功能强大的代码
下面的方法用来完成两个矩阵的乘积???Excuse Me???

def matrix_mul(matrix1,matrix2)result=[](0...matrix1.length).each{|i|temp=[](0...matrix2[0].length).each{|j|tmp=0(0...matrix1[0].length).each{|k|tmp+=matrix1[i][k]*matrix2[k][j]}temp<<tmp}result<<temp}return result
end

注:ruby标准库中已包含矩阵库 Matrix

语言特点

完全面向对象
在Ruby语言中,任何东西都是对象,包括其他语言中的基本数据类型,比如整数
变量没有类型
Ruby的变量可以保存任何类型的数据。
任何东西都有值
不管是数学或者逻辑表达式还是一个语句,都会有值。
ruby语言很优雅,可以做到不需要注释就可以读懂。吹牛>_<

Ruby优点

语法简单
普通的面向对象功能(类,方法调用等)
特殊的面向对象功能(Mixin,特殊方法等)
操作符重载(类似C++,C#)
错误处理功能
迭代器和闭包(类似JS,Swift)
垃圾回收
动态载入(取决于系统架构)
可移植性高.不仅可以运行在多数UNIX上,还可以运行在DOS,Windows,Mac,BeOS等平台上
适合于快速开发,一般开发效率是JAVA的5倍


语言理念
减少编程时候的不必要的琐碎时间,令编写程序的人高兴,是设计 Ruby 语言的 Matz 的一个首要的考虑;
其次是良好的界面设计。他强调系统设计必须注重人性化,而不是一味从机器的角度设想。

“ 人们特别是电脑工程师们,常常从机器着想。他们认为:‘这样做,机器就能运行的更快;这样做,机器运行效率更高;这样做,机器就会怎样怎样怎样。’
实际上,我们需要从人的角度考虑问题,人们怎样编写程序或者怎样使用机器上应用程序。我们是主人,他们是仆人。 ”
遵循上述的理念,Ruby 语言通常非常直观,按照编程人认为它应该的方式运行。

Ruby 是完全面向对象的:
任何一点数据都是对象,包括在其他语言中的基本类型(比如:整数,布尔逻辑值),
每个过程或函数都是方法。

下面是一个在标准输出设备上输出Hello World的简单程序,
这种程序通常作为开始学习编程语言时的第一个程序:

#!/usr/bin/env ruby
puts "Hello, world!"

语言用途

  • Ruby 是开源的,在Web 上免费提供,但需要一个许可证。
  • Ruby 是一种通用的、解释的编程语言。
  • Ruby 是一种真正的面向对象编程语言。
  • Ruby 是一种类似于 Python 和 Perl 的服务器端脚本语言。
  • Ruby 可以用来编写通用网关接口(CGI)脚本。
  • Ruby 可以被嵌入到超文本标记语言(HTML)。
  • Ruby 语法简单,这使得新的开发人员能够快速轻松地学习 Ruby。
  • Ruby 与 C++ 和 Perl 等许多编程语言有着类似的语法。
  • Ruby 可扩展性强,用 Ruby 编写的大程序易于维护。
  • Ruby 可用于开发的 Internet 和 Intranet 应用程序。
  • Ruby 可以安装在 Windows 和 POSIX 环境中。
  • Ruby 支持许多 GUI 工具,比如 Tcl/Tk、GTK 和 OpenGL。
  • Ruby 可以很容易地连接到 DB2、MySQL、Oracle 和 Sybase。
  • Ruby 有丰富的内置函数,可以直接在 Ruby 脚本中使用。

发明人

松本行弘"Matz"(Yukihiro Matsumoto)是Ruby语言的发明人,他从1993年起便开始着手Ruby的研发工作。他一直想发明一种语言,使你既能进行高效开发又能享受编程的快乐。1993年2月24日Ruby诞生了,1995年12月Matz推出了Ruby的第一个版本Ruby 0.95。不久Ruby便凭借其独特的魅力横扫日本。

Ruby 语言

Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本  行弘(まつもと  ゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。Ruby 可运行于多种平台,如 Windows、MAC OS 和 UNIX 的各种版本。

编译/执行 Ruby 程序

对于大多数编程语言,第一个入门实例便是 "Hello World!",下面的实例使用 Ruby 输出 "Hello World!":

#!/usr/bin/ruby
puts "Hello World!";

或者是在irb交互式命令行的模式下

>>puts "Hello, world!"
Hello, world!
=> nil

Ruby 简介

Ruby是一种纯粹的面向对象编程语言。它由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)创建于1993年。

您可以在 www.ruby-lang.org 的 Ruby 邮件列表上找到松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)的名字。在 Ruby 社区,松本也被称为马茨(Matz)。

Ruby 是"程序员的最佳朋友"。

Ruby 的特性与 Smalltalk、Perl 和 Python 类似。

Perl、Python 和 Smalltalk 是脚本语言。

Smalltalk 是一个真正的面向对象语言。

Ruby,与 Smalltalk 一样,是一个完美的面向对象语言。使用 Ruby 的语法比使用 Smalltalk 的语法要容易得多。

您需要的工具

为了执行本教程中讨论的实例,您需要 RAM 至少为 2GB(推荐为 4GB)的 Intel Core i3 或 i5 的计算机。您还需要以下软件:

  • Linux 或 Windows 95/98/2000/NT 或 Windows 7 以上操作系统
  • Apache 1.3.19-5或以上 Web 服务器
  • Internet Explorer 5.0 或以上的 Web 浏览器
  • Ruby 1.8.5或以上

本教程将介绍如何使用 Ruby 创建 GUI、网络和 Web 应用程序。另外还会讨论如何扩展和嵌入 Ruby 应用程序。

接下来将学习什么?

下一章将向您介绍从哪里可以获取 Ruby 及其文档。最后,它会指示您如何安装 Ruby,并配置环境为开发 Ruby 应用程序做准备。

Ruby 环境

本地环境设置

如果您想要设置 Ruby 编程语言的环境

  • Linux/Unix 上的 Ruby 安装:如果您想要在 Linux/Unix 上配置开发环境,那么请查看本章节的内容。

  • Ruby 命令行选项:本章节列出了所有的命令行选项,您可以和 Ruby 解释器一起使用这些命令行选项。

  • Ruby 环境变量:本章节列出了所有重要的环境变量列表,设置这些环境变量以便让 Ruby 解释器工作。

流行的 Ruby 编辑器

为了编写 Ruby 程序,您需要一个编辑器:

  • 如果您是在 Windows 上进行编写,那么您可以使用任何简单的文本编辑器,比如 Notepad++ 或 Edit plus。
  • VIM(Vi IMproved)是一个简单的文本编辑器,几乎在所有的 Unix 上都是可用的,现在也能在 Windows 上使用。另外,您还可以使用您喜欢的 vi 编辑器来编写 Ruby 程序。

交互式 Ruby(IRb)

交互式 Ruby(IRb)为体验提供了一个 shell。在 IRb shell 内,您可以逐行立即查看解释结果。

这个工具会随着 Ruby 的安装自动带有,所以您不需要做其他额外的事情,IRb 即可正常工作。

只需要在命令提示符中键入 irb,一个交互式 Ruby Session 将会开始,如下所示:

$irb
irb 0.6.1(99/09/16)
irb(main):001:0> def showGirlCup
irb(main):002:1> cup = "girl's cup is F"
irb(main):003:1> puts cup
irb(main):004:1> end
nil
irb(main):005:0> showGirlCup
girl's cup is F
nil
irb(main):006:0>

这里您可以先不用关心上面命令的执行内容,我们将在后续的章节中向您讲解。

接下来将学习什么?

假设现在您已经设置好 Ruby 环境,且已经做好编写第一个 Ruby 程序的准备。下一章我们将向您讲解如何编写 Ruby 程序。

附:Ruby 安装 - Unix

下面列出了在 Unix 机器上安装 Ruby 的步骤。

注意:在安装之前,请确保您有 root 权限。

  • 下载最新版的 Ruby 压缩文件。请点击这里下载。
  • 下载 Ruby 之后,解压到新创建的目录下:
  • $ tar -xvzf ruby-2.2.3.tgz
    $ cd ruby-2.2.3
    • 现在,配置并编译源代码,如下所示:
    $ ./configure
    $ make
    $ sudo make install
    • 安装后,通过在命令行中输入以下命令来确保一切工作正常:
    $ruby -v
    ruby 2.2.3……
  • 如果一切工作正常,将会输出所安装的 Ruby 解释器的版本,如上所示。如果您安装了其他版本,则会显示其他不同的版本。
  • 自动安装 Ruby

    如果您的计算机已经连接到 Internet,那么最简单安装 Ruby 的方式是使用 yum 或 apt-get。

    $  sudo yum install ruby    # CentOS, Fedora, 或 RHEL 系统或sudo apt-get install ruby-full # Debian 或 Ubuntu 系统
    

    如果你是苹果系统,可以使用 brew 命令安装:

    $ brew install ruby
  • 在命令提示符中输入以下的命令,即可在您的计算机上安装 Ruby。

Ruby 命令行选项

Ruby 一般是从命令行运行,方式如下:

$ ruby [ options ] [.] [ programfile ] [ arguments ... ]

解释器可以通过下列选项被调用,来控制解释器的环境和行为。

选项 描述
-a 与 -n 或 -p 一起使用时,可以打开自动拆分模式(auto split mode)。请查看 -n 和 -p 选项。
-c 只检查语法,不执行程序。
-C dir 在执行前改变目录(等价于 -X)。
-d 启用调试模式(等价于 -debug)。
-F pat 指定 pat 作为默认的分离模式($;)。
-e prog 指定 prog 作为程序在命令行中执行。可以指定多个 -e 选项,用来执行多个程序。
-h 显示命令行选项的一个概览。
-i [ ext] 把文件内容重写为程序输出。原始文件会被加上扩展名 ext 保存下来。如果未指定 ext,原始文件会被删除。
-I dir 添加 dir 作为加载库的目录。
-K [ kcode] 指定多字节字符集编码。e 或 E 对应 EUC(extended Unix code),s 或 S 对应 SJIS(Shift-JIS),u 或 U 对应 UTF-8,a、A、n 或 N 对应 ASCII。
-l 启用自动行尾处理。从输入行取消一个换行符,并向输出行追加一个换行符。
-n 把代码放置在一个输入循环中(就像在 while gets; ... end 中一样)。
-0[ octal] 设置默认的记录分隔符($/)为八进制。如果未指定 octal 则默认为 。
-p 把代码放置在一个输入循环中。在每次迭代后输出变量 $_ 的值。
-r lib 使用 require 来加载 lib 作为执行前的库。
-s 解读程序名称和文件名参数之间的匹配模式 -xxx 的任何参数作为开关,并定义相应的变量。
-T [level] 设置安全级别,执行不纯度测试(如果未指定 level,则默认值为 1)。
-v 显示版本,并启用冗余模式。
-w 启用冗余模式。如果未指定程序文件,则从 STDIN 读取。
-x [dir] 删除 #!ruby 行之前的文本。如果指定了 dir,则把目录改变为 dir。
-X dir 在执行前改变目录(等价于 -C)。
-y 启用解析器调试模式。
--copyright 显示版权声明。
--debug 启用调试模式(等价于 -d)。
--help 显示命令行选项的一个概览(等价于 -h)。
--version 显示版本。
--verbose 启用冗余模式(等价于 -v)。设置 $VERBOSE 为 true。
--yydebug 启用解析器调试模式(等价于 -y)。

单字符的命令行选项可以组合使用。下面两行表达了同样的意思:

$ruby -ne 'print if /Ruby/' /usr/share/bin$ruby -n -e 'print if /Ruby/' /usr/share/bin

Ruby 环境变量

Ruby 解释器使用下列环境变量来控制它的行为。ENV 对象包含了所有当前设置的环境变量列表。

变量 描述
DLN_LIBRARY_PATH 动态加载模块搜索的路径。
HOME 当没有参数传递给 Dir::chdir 时,要移动到的目录。也用于 File::expand_path 来扩展 "~"。
LOGDIR 当没有参数传递给 Dir::chdir 且未设置环境变量 HOME 时,要移动到的目录。
PATH 执行子进程的搜索路径,以及在指定 -S 选项后,Ruby 程序的搜索路径。每个路径用冒号分隔(在 DOS 和 Windows 中用分号分隔)。
RUBYLIB 库的搜索路径。每个路径用冒号分隔(在 DOS 和 Windows 中用分号分隔)。
RUBYLIB_PREFIX 用于修改 RUBYLIB 搜索路径,通过使用格式 path1;path2 或 path1path2,把库的前缀 path1 替换为 path2。
RUBYOPT 传给 Ruby 解释器的命令行选项。在 taint 模式时被忽略(其中,$SAFE 大于 0)。
RUBYPATH 指定 -S 选项后,Ruby 程序的搜索路径。优先级高于 PATH。在 taint 模式时被忽略(其中,$SAFE 大于 0)。
RUBYSHELL 指定执行命令时所使用的 shell。如果未设置该环境变量,则使用 SHELL 或 COMSPEC。

对于 Unix,使用 env 命令来查看所有环境变量的列表。

HOSTNAME=ip-72-167-112-17.ip.secureserver.net
RUBYPATH=/usr/bin
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
SSH_CLIENT=122.169.131.179 1742 22
SSH_TTY=/dev/pts/1
USER=amrood
JRE_HOME=/usr/java/jdk/jre
J2RE_HOME=/usr/java/jdk/jre
PATH=/usr/local/bin:/bin:/usr/bin:/home/guest/bin
MAIL=/var/spool/mail/guest
PWD=/home/amrood
INPUTRC=/etc/inputrc
JAVA_HOME=/usr/java/jdk
LANG=C
HOME=/root
SHLVL=2
JDK_HOME=/usr/java/jdk
LOGDIR=/usr/log/ruby
LOGNAME=amrood
SSH_CONNECTION=122.169.131.179 1742 72.167.112.17 22
LESSOPEN=|/usr/bin/lesspipe.sh %s
RUBYLIB=/usr/lib/ruby
G_BROKEN_FILENAMES=1
_=/bin/env

Ruby 中文编码

前面章节中我们已经学会了如何用 Ruby 输出 "Hello, Beyond!",英文没有问题,但是如果你输出中文字符"妳好,二次元"就有可能会碰到中文编码问题。

Ruby 文件中如果未指定编码,在执行过程会出现报错:

#!/usr/bin/ruby -wputs "妳好,二次元!";

以上程序执行输出结果为:

invalid multibyte char (US-ASCII)

以上出错信息显示了 Ruby 使用用 ASCII 编码来读源码,中文会出现乱码,

解决方法为只要在文件开头加入

# -*- coding: UTF-8 -*-(EMAC写法)

或者

#coding=utf-8 就行了。

实例

#!/usr/bin/ruby -w
# -*- coding: UTF-8 -*-
#coding=utf-8
puts "妳好,二次元!";

输出结果为:

妳好,二次元!

所以如果大家再学习过程中,源代码文件中,若包含中文编码,则需要注意两点:

  • 1. 必须在首行添加 # -*- coding: UTF-8 -*-,告诉解释器使用utf-8来解析源码。
  • 2. 必须设置编辑器保存文件的编码为utf-8。

Ruby 语法

让我们编写一个简单的 Ruby 程序。所有的 Ruby 文件扩展名都是 .rb。所以,把下面的源代码放在 ruby_01.rb 文件中。

实例

#!/usr/bin/ruby -w
puts "Hello, Beyond!";

在这里,假设您的 /usr/bin 目录下已经有可用的 Ruby 解释器。现在,尝试运行这个程序,如下所示:

$ ruby ruby_01.rb

这将会产生下面的结果:

Hello, Beyond!

您已经看到了一个简单的 Ruby 程序,下一章节将让我们看看一些 Ruby 语法相关的基本概念:

未完待续,下一章节,つづく

Ruby_01_环境安装相关推荐

  1. 2021年大数据常用语言Scala(二):Scala开发环境安装

    目录 开发环境安装 安装JDK 安装scala SDK 步骤 具体操作 安装IDEA scala插件 步骤 开发环境安装 学习如何编写scala代码之前,需要先安装scala编译器以及开发工具 sca ...

  2. linux学 java_[操作系统]Linux学习第二步(Java环境安装)

    [操作系统]Linux学习第二步(Java环境安装) 0 2017-05-19 00:02:21 jdk版本:jdk-8u131-linux-x64.rpm 注:以下操作在root用户或具有root权 ...

  3. ZooKeeper集群环境安装与配置

    原文:出自本人的Linux博客http://blog.csdn.net/unix21/ ZooKeeper版本:3.4.5 约定:3台虚拟机 前提:需要安装JDK,关于Linux环境JDK安装配置参考 ...

  4. docker 离线安装 mysql_Oracle数据库之docker 离线环境安装oracle

    本文主要向大家介绍了Oracle数据库之docker 离线环境安装oracle,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 因测试需要,需在内网的测试环境搭建一套docker ...

  5. lua菜鸟教程_Lua 环境安装

    Lua 环境安装 Linux 系统上安装 Linux & Mac上安装 Lua 安装非常简单,只需要下载源码包并在终端解压编译即可,本文使用了5.3.0版本进行安装: curl -R -O h ...

  6. android环境安装之android4.2安装(转)

    准备学习android,着手安装android时听说很麻烦,在网上看了很多android安装说明,都是android比较早的版本,我这里安装了android4.2,简单记录一下. 安装分为几步,首先申 ...

  7. DRF工程搭建、环境安装与配置

    DRF需要以下依赖: Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6) Django (1.10, 1.11, 2.0) DRF是以Django扩展应用的方式提供的,所以我们 ...

  8. MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决

    MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 一.简介 MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发.发布并支持的.有以下特点: MySQL是 ...

  9. Windows下R语言环境安装

    Windows下R语言环境安装 R官网: https://www.r-project.org/ 按照如下步骤下载windows中的安装文件R-4.1.0-win.exe 文件已经下载完成:R-4.1. ...

  10. Windows下RStudio环境安装

    Windows下RStudio环境安装 # RStudio关键词搜索: # 下载RStudio-1.4.1717.exe # # 一般情况下下载个免费的就好了: # RStudio-1.4.1717. ...

最新文章

  1. VUE的本地应用-V- html
  2. error C2057: expected constant expression (C语言中数组的大小可以在程序运行时定义吗? )
  3. asp.net常规页生命周期阶段列表和事件列表
  4. JS过滤空格,回车符。
  5. 注解方式实现aop-快速入门
  6. vue-cli@2的原理解析
  7. python tkinter库函数详解_Python使用tkinter库进行GUI编程中常用事件处理方式汇总
  8. python列表元素下标是什么_python列表中元素插入位置总结
  9. 分享一个绝佳的实战机器学习的机会,边学边比拿奖金!
  10. 对“车库咖啡的网络现状改造”的一点个人看法
  11. 萌新向Python数据分析及数据挖掘 第二章 pandas 第二节 Python Language Basics, IPython, and Jupyter Notebooks...
  12. 台积电:无法回应检调中的案件,不评论单一客户特定订单
  13. Monkey King
  14. 63.Linux/Unix 系统编程手册(下) -- 其他备选的IO模型
  15. 从教女儿下棋谈启蒙教育
  16. 基于opencv的图片文字识别实战
  17. IPv6系列-彻底弄明白有状态与无状态配置IPv6地址
  18. 多功能计算机十二生肖,十二生肖那是真人实演的危险特技,不是电脑特效!
  19. FileZilla 使用教程
  20. 跟着团子学SAP PS:WBS元素中的成本中心详解

热门文章

  1. OpenChannelSSD之六_从OpenChannelSSD到ZNS
  2. 超好用的PC端录屏软件推荐
  3. java抽象和接口的理解_Java学习笔记16---抽象类与接口的浅显理解
  4. 设置域名跳转的几种方式
  5. 借助NetFlow Analyzer的IPAM SPM插件,实现IP和交换机端口管理
  6. ROS真车篇(一)激光雷达SLAM建图+自主导航+RGB深度相机
  7. uis向3d投影全息界面的连续演化。
  8. c语言密文加密解密问题注释,c语言通过openssl aes对称加解密和base64编解码将密码存储成密文...
  9. 单片机循迹车c语言程序,基于单片机控制的简易自动循迹小车仿真与程序源码...
  10. 他一定幸福地生活在那里