ruby语言是什么东西

1、简介
    Ruby是日本的Yukihiro Matsumoto写的,简单易学的面向对象的脚本语言,像perl一样,有丰富的文字处理、系统管理等丰富 功能,但是ruby要简单,容易理解和扩充。跟python很类似,但是在国内远没有python有名。

Ruby是一种功能强大的面向对象脚本语言,可以使用它方便快捷地进行面向对象程序设计。与Perl类似,而且Ruby具有强大的文本处理功能,使文本处理变得简单。此外还可以方便地使用C语言来扩展Ruby的功能。若您曾经“想要一种简单的面向对象的语言”,或者认为“Perl的功能虽然好用,但它的语法真让人受不了”,又或者觉得“LISP系列语言的思想不错,但到处都是括号真让人讨厌,最起码算式应该按照通常的样式书写”。那么,Ruby或许能让您满意。

归纳起来,Ruby有以下优点:? 解释型执行,方便快捷Ruby是解释型语言,其程序无需编译即可执行。? 语法简单、优雅语法比较简单,类似Algol系语法。? 完全面向对象Ruby从一开始就被设计成纯粹的面向对象语言,因此所有东西都是对象,例如整数等基本数据类型。? 内置正则式引擎,适合文本处理Ruby支持功能强大的字符串操作和正则表达式检索功能,可以方便的对字符串进行处理。? 自动垃圾收集具有垃圾回收(Garbage Collect,GC)功能,能自动回收不再使用的对象。不需要用户对内存进行管理。? 跨平台和高度可移植性Ruby支持多种平台,在Windows, Unix, Linux, MacOS上都可以运行。Ruby程序的可移植性非常好,绝大多数程序可以不加修改的在各种平台上加以运行。? 有优雅、完善的异常处理机制Ruby提供了一整套异常处理机制,可以方便优雅地处理代码处理出错的情况。? 拥有很多高级特性Ruby拥有很多高级特性,例如操作符重载、Mix-ins、特殊方法等等,是用这些特性可以方便地完成各种强大的功能。

一般认为,他有如下特点:

  • 简单 
    解释型语言(インタプリタ),所以不必事先编译(コンパイル)。
    变量没有类型的区分,虽然可以省去类型错误的担忧,但也会引起编译时候检查的脆弱。
    变量不需要定义。
    简单的语法,多从Eiffel继承而来。
    不需要内存管理,系统提供GC(ガーベージコレクタ)处理机制。
  • 纯的面向对象的语言
    一切都是对象,像整数等类型从开始就被设计为对象来处理。
    class(クラス),继承,method(メソッド)等
    (特殊方法?)特異メソッド 
    module(モジュール)によるMixin 
    迭代(イテレータ)和闭包(クロージャ)。一个在闭包开始时定义的资源在闭包结束后会被释放, 适合于socket,数据库连接,文件句柄等。
  • 脚本语言
    解释执行
    很强的文字处理能力和正则表达式
    直接访问OS,用ruby编写系统程序也是可能的。
  • 其他
    支持多种长整数,内存允许,可以进行很大数的计算操作。
    具备异常处理能力,具备java的异常处理功能。
    dynamic loading(ダイナミックローディング )。可以在运行时候重定义自己, 类也可以在运行时继承/取消继承。
    线程。现在的ruby已经有线程的概念,Ruby2.0好像能支持本地线程。
    反射(Reflection)。Ruby可以看到程序的内部,比如一个模块是否含一个特定方法, 一个对象是哪个class等等。类似java。
    扩展性。C api。
    发行许可证。基于Ruby Artistic License (BSD样式的)和GPL。

2、环境安装

(1).安装1.可以从www.ruby-lang.org下载源代码进行安装。

(2).解压缩源文件,进入安装目录

#./configuremake

#make

#install

3.使用

(1). 使用irb。irb是一个交互接口,在shell里运行它,首先显示提示符,等待输入;用户输入之后,它在进行处理,把结果显示给用户。


#irb

irb(main):001:0> $str="hello world!/n"

=> "hello world!/n"

irb(main):002:0> print $str

hello world!

=> nil

irb(main):003:0>

(2).像其他语言一样,从程序文件运行


[[email protected] /root]# chmod a+x foo.rb

[[email protected] /root]# cat foo.rb

#!/usr/local/bin/ruby -w

puts "Hello, World!"

[[email protected] /root]# ruby foo.rb

Hello, World!

[[email protected] /root]# ./foo.rb

Hello,World!

[[email protected] /root]#

 

(3).Ruby使用方法 
ruby [ option ...] [ -- ] [ programfile ] [ argument ...]pre>

关于Ruby的命令行参数,可以参考相关文档。

4.简单例子

 


def sayGoodnight(name) 
       result = "Goodnight, " + name
      return result
end

# Time for bed...
puts sayGoodnight("John-Boy")
puts sayGoodnight("Mary-Ellen")

可以看到,ruby的语法还是比较简单的,首先,你不必每行都写个分号, Ruby注释以#开头,直到行尾。
    Methods定义以关键字def开始,接着是方法名和方法参数, ruby不需要用braces来界定程序主体,只需要关键字end就行了。
    这个程序也相当简单,第一行把``Goodnight, ‘‘加上参数name,并把它赋给了局部变量result,第二行把结果返回给调用者。注意我们不需要定义变量result。
    最后我们调用了2次这个方法,并把结果传给puts函数,这个函数简单的再新行上打印传给它的参数而已,最后结果像这样:

Goodnight, John-Boy
Goodnight, Mary-Ellen

 

其实 puts sayGoodnight("John-Boy")  包括了2个函数调用,一个put系统函数,一个sayGoodnight函数。但是为什么puts调用没有用括号呢?实际上,下面的调用都是等价的:

puts(sayGoodnight "John-Boy")
puts(sayGoodnight("John-Boy"))
puts sayGoodnight("John-Boy")
puts sayGoodnight "John-Boy"

但是如果都不写括号,你知道那个参数传给谁吗?所以还是建议在方法后面加上括号,方便阅读源程序。

这个方法还展示了string对象,有很多种办法可以创建string对象,但最普通的要算用string literals了:单引号或双引号包起来的一组字符。它们的区别是ruby构建这两种字符串时要做的操作。对单引号引起来的字符串来说,ruby做的工作会很少,单引号引起来得部分就是它的值。如果是双引号引起来得,则要做多一些工作了。首先,它检查是否包含反斜线,也就是转义符,然后用适当的二进制值代替,最常见的就是"/n"了,它将会被换行替换。如:

 

puts "And Goodnight,/nGrandma"

产生结果如下:

And Goodnight,
Grandma

第二件事情就是expression interpolation。#{ expression }被expression的值代替,例如,下面的方法和刚才的例子是一样的结果

def sayGoodnight(name)
    result = "Goodnight, #{name}"
    return result
end

当然我们还可以再简化这个函数。一个ruby函数返回的结果就是最后一行的值,所以这个函数也可以写成如下:

def sayGoodnight(name)
    "Goodnight, #{name}"
end

Ruby使用俗定的命名方式为变量命名,变量名的第一个字母标志了它的类型,是局部变量,还是方法参数,方法名应该以小写字母或者下划线开头,全局变量应该以$开头,实例变量以@开头, class变量以@@开头,而类名,模块名,常量应该以大写字母开头。
    一个名字可以是字母,数字,下划线的任意组合,但是有@后面不允许直接跟着一个数字。 
    总之,作为一门语言,不是一两个例子,几个文章能说清楚地,在网上流传的我爱ruby的10个原因等跟天下足球top ten类似的短文中,总会看到一个理由,就是fun with ruby。也许,更有趣的还在后面。

时间: 2024-10-13 04:59:49

ruby语言是什么东西的相关文章

ruby语言仅仅是昙花一现

Ruby语言本身存在非常久了,在国内一直没火过.非常多人仅仅是知道有这样的语言,会的人少之又少.不论什么一种语言坚持十来年的发展,变得越来越好,一定有它不平常的地方.不能任意的去比較语言本身的好与坏.可是真正能成为流行的语言是须要时机与需求的.就如ajax技术,说实在的,真是非常老的技术了,早在非常多年前就有过应用.相信非常多朋友在几年前就有过相似的开发经历.随着互联网的发展, 因为用户体验需求的不断提高,它的位置也越来越重要,才促成WEB2.0应用中它是不可缺少的技术之中的一个. 在ruby世

Ruby语言简明入门与提高

rails请参考我写的简明Ruby系列:rails简明实用入门指南 本书其他版本: github版本 简书版本 作者:chenge 联系方式: * 邮件:chenge3k at qq.com * chenge微博谈 第一章 简介 内容简介 目标读者: 初次编程者 初次学习Ruby的程序员 Ruby是适合于初学者的,即使是从未写过程序的人来学,我相信初级部分一天就能学完. 为了帮助你学习更轻松些,我尽量选择了简单的内容. 通过浏览目录,就知道我选择了一些什么内容.初级我选择了三组共四个概念,本书定

【Ruby on Rails 学习五】Ruby语言的方法

1.方法的调用 2.自定义方法 3.带默认值的自定义方法 4.带返回值的自定义方法 方法或者说是函数,实际上是包含了一段代码,去执行某一个特定的过程. def add(a=3,b=2) return a+b end irb(main):002:0> require '/Study/Ruby/intro_rails/maizi/381-4026/08function.rb' => true irb(main):003:0> add => 5 irb(main):004:0> a

【ruby项目,语言提交检查(一)】怎样高速学习ruby ?

怎样高速学习ruby ? 学习语言最快的思路. 变量,常量,变量类型,操作符. 逻辑语句如 if, else, switch, for, foreach, do while, break, 等等.要学的语言与这些命令相似的命令是什么?了解用法就可以. 之后,假设是面向对象,就要了解一下关于对象的操作了. 有没有函数库.一般语言都有的. 输出命令函数,操作数组,操作字符串.对象属性 操作文本文件 另一个就是创建对象.类,数组这种. 好了,成了会了上面的,你还没有学完此语言,但你是能够用此语言做事了

Ruby(面向对象程序设计的脚本语言)入门

Ruby是一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言. 简介 Ruby 是开源的,在Web上免费提供,但需要一个许可证. Ruby 是一种通用的.解释的编程语言. Ruby 是一种真正的面向对象编程语言. Ruby 是一种类似于 Python 和 Perl 的服务器端脚本语言. Ruby 可以用来编写通用网关接口(CGI)脚本. Ruby 可以被嵌入到超文本标记语言(HTML). Ruby 语法简单,这使得新的开发人员能够快速轻松地学习 Ruby. Ruby 与 C++ 和

【ruby项目,语言提交检查(一)】如何快速学习ruby ?

如何快速学习ruby ? 学习语言最快的思路. 变量,常量,变量类型,操作符, 逻辑语句如 if, else, switch, for, foreach, do while, break, 等等.要学的语言与这些命令相似的命令是什么?了解使用方法即可. 之后,如果是面向对象,就要了解一下关于对象的操作了. 有没有函数库,一般语言都有的.输出命令函数,操作数组,操作字符串,对象属性 操作文本文件 还有一个就是创建对象,类,数组这样的. 好了,成了会了上面的,你还没有学完此语言,但你是可以用此语言做

Ruby,一门简单又华丽的语言

一提到ruby大家就会条件反射似地想起rails,似乎ruby只有一个用途,就是rails.虽然我没写过rails,但我以为ruby语言本身的魅力远远超过rails这个第三方框架.这是一门值得细细品味的语言,与这门语言同样值得品味的还有一本叫<Metaprogramming Ruby>的书.下面是摘自此书的一段话. The Great Unified Theory “The Ruby object model is a beautiful place,”Bill notes, with a d

Streem:Ruby之父开发的新脚本语言

刚看到Ruby语言的开发者松本行弘(Matz,全名是Yukihiro Matsumoto)又启动了一门新语言的开发,名叫Streem,还处在非常原始的阶段,只有三个文件,代码在GitHub上. 看Matz自己的说明,Streem是一种基于流的并发脚本语言,类似于shell/awk/,但语法更为丰富, 用Streem可以这么写一个简单的cat程序: STDIN | STDOUT 一个简单的FIZZBUZZ程序 seq(100) | {|x| if x % 15 == 0 { "FizzBuzz&q

php、python、ruby——web脚本语言的比较

原文地址:http://klau.si/php-vs-python-vs-ruby 摘要 在过去几年里,在web应用程序编程中,脚本语言变得越来越受欢迎.本论文试图在如今三种最受欢迎的语言:PHP.Python和Ruby中找到其中的差异.优点.缺点.很明显,他们有他们自己的观点和支持,所以要陈述客观事实并满足一种科学的方法是一项困难的任务.这三种语言将在web应用程序环境进行有关历史.进化.流行程度.语法.语义.功能.安全性和性能方面做评估.最后,一个最终的结论将建议最有前途的一种语言. 1.介