ruby语言:Ruby语言FAQ

  1、Ruby是什么东东?

  Ruby是种简单面向对象编程语言十分容易上手并且功能强大她是个日本Yukihiro Matsumoto(大家都叫他Matz.)在1995年首次发布Ruby从Perl语言那里借鉴了许多东西(有人形象地说Ruby是Perl漂亮妹妹:)和Perl相似Ruby也擅长于文本处理、系统管理等任务和SmalltalkRuby是种纯粹面向对象语言任何东西都是对象下面是Ruby语言些特性:

  ◆语法简单、优雅

  ◆ 解释型执行、方便快捷

  ◆完全面向对象

  ◆内置正则式引擎适合文本处理

  ◆拥有很多高级特性(操作符重载、Mix-ins、Singleton Methods...)

  ◆有优雅、完善异常处理机制

  ◆自动垃圾收集

  ◆高度可移植性(在Windows, Unix, Linux, MacOS上都可以运行)

  2、Ruby能干什么?给我看些Ruby语言代码!

  Ruby作为种通用设计语言和其它常用编程语言可以编写大部分我们日常遇到任务而且完成得更简单优雅已经有人用她编写了Web服务器、科学计算、视频游戏软件Software和其他有趣应用更多人用她来做原形实验和处理每天遇到各种琐碎编程任务

  你想看Ruby代码?好下面就是用Ruby编写几个简单代码:

  # 1 - 打印3次“Hello, world!”

3.times do
pr "Hello, world!n"
end


  # 2 - 计算“1 + 2 + 3 + ... + 100”sum = 0
for i in 1..100
sum i
end
pr "1+2+3+...+100 = ", sum, "n"


  # 3 - 简单思路方法def hello(name)
pr "Hello, ", name, "n"
end
hello("jellen")


  # 4 - 简单Ruby类和它 Man
def initialize(name)
@name = name
end
def show_info
puts "I'm a man. My name is #{@name}."
end
end
jellen = Man.("jellen")
jellen.show_info


  3、“Ruby”这个名字从何而来?   受到了Perl影响当初Matz.也想给他发明语言起个珠宝名字所以后来他想到了“Ruby”(意思是红宝石)作为这种新语言名字在生肖石中pearl代表 6月ruby刚好是代表 7月所以他认为Ruby是个作为比Perl更新语言好名字(但愿也是真更好)

  4、我对Ruby历史感兴趣请讲点有关Ruby发展历程东西

  大约在1993年时候Ruby的父Matz.开始对脚本语言(scripting language)感兴趣在通过些分析和研究的后Matz.认识到了脚本语言是可以变得很强大和灵活于是他准备把脚本语言作为他发展方向和很多人Matz.是个面向对象编程fans所以他想研究种面向对象脚本语言然后他到网络上去搜集了些相关资料并且很快发现了Perl 5当时它还没有发布并且准备支持面向对象编程但是通过段时间了解后Matz.发现这并不是他想东西(可能是Perl语言非自然面向对象方式使他厌恶)所以他放弃了把Perl当作个面向对象脚本语言使用念头随后Matz转向了PythonPython生成是个解释型、面向对象语言但是Matz发现它并不能完全算作“面向对象”语言Matz认为Python是面向对象和过程化设计语言(Procedural Programming Language)混合产物Matz.希望找到种比Perl更强大、比Python更面向对象语言但是在那个时候他找不到合适经过番思想斗争他打算自己设计个全新编程语言Matz.开发从1993年2月24日开始在同年夏天个ruby语言"Hello, world!"成功运行随后Ruby语言个alpha版本在1994年12月发布

  在1996年以前都是Matz.个人在开发Ruby;随着Ruby社区渐渐形成很多社区成员都给了Matz.许多有意义帮助包括提交bug和patch等现在Ruby像其他开源软件Software有自己开发团队(Team)任何有能力个人或团体都可以参和Ruby进化

  5、Ruby运行效率如何?我能用Ruby编写应用吗?

  Ruby是解释型语言效率当然和传统编译型语言有差距未来计划是使Ruby运行效率和编译型语言更加相近现在已经有了目标为编写Ruby虚拟机Rite项目还有个Cardinal项目在做Parrot虚拟机Ruby前端解释型执行确实在定程度上影响了Ruby运行速度但是实际上Ruby在各种语言运行速度测试上表现相当好虽然般没有Perl那么快但是并没有慢多少

  我们当然可以用Ruby做桌面应用事实上也已经有很多人这样做了但是在开始用Ruby做应用的前你必须了解它不会像你C那样快然后生成文件体积会比原生

  6、听说Python也很不错Ruby和它相比有什么特点?我要选择哪个呢?

  Python和Ruby都声称自己是面向对象设计语言但是和Smalltalk区别你可以在Python和Ruby中编写面向过程代码Smalltalk只有对象在完全理解对象、继承和相当数量Smalltalk系统类的前你不能做任何事情通过提供对过程化编程范式支持Python和Ruby“修复”了这个使Smalltalk不能进入主流原因(毕竟过程化思想对初学者来说很好理解)但是这两种语言是通过完全区别(可以说正好相反)思路方法来实现这个目标

  Python是种混合型语言它有概念来支持过程化编程也有对象概念支持面向对象编程Python通过允许和思路方法的间用思路方法定义前显式'self'参数转化来连接这两个世界插入个对象时个参数自动变成个指向接受对象引用

  但是Ruby中面向过程编程代码其实是“假装”出来Ruby语言是纯面向对象语言它没有概念只有类思路方法个Ruby“”中思路方法默认接受者是'self'这是个隐藏参数就像C里面'this'指针个在类外面'def'思路方法声明(这在Python里面是)在Ruby里这实际上是个思路方法这个“假”会自动变成Object对象个私有成员(Object对象是Ruby继承树中根)所以如果您对面向对象编程思路方法还不熟悉您还是可以通过编写许多'def’思路方法然后直接---这样面向过程思想来完成很多有用代码

  Ruby纯面向对象特性提供了些Python缺少或者正在发展特性:个统单根继承体系、元类、接受任何东西为子类和统思路方法(绝对没有len 但是items是思路方法这种自相矛盾)同Java类似Ruby只支持单继承但是它有个非常强大Mix-in概念:个类中可以包括多个模块(Module)然后把模块中思路方法常量等变成自己东西

  而且Ruby提供了和Smalltalk中功用相同闭包(Closures)和块(Blocks)概念Ruby集合类库和迭代器是相当出色比Python提供特殊解决思路方法更加强大和优雅

  Ruby语法和设计哲学深深地受到了Perl影响和Perl我们可以把'''while'等放在个语句尾部(比如这样“pr "Yes!" a 1”);然后Ruby中很多特性都是从Perl中直接拿过来比如对正则表达式内置支持、$_变量、 Here documents概念和$、前缀是对区别类型变量修饰等

  如果你喜欢Perl那么你也会喜欢Ruby自由语句结构;如果你习惯Smalltalk和Java那么你也会喜欢RubyOO语法但是如果你喜欢Python那么你可能喜欢也可能不喜欢RubyPython和Ruby的间设计哲学相差太大了



  所以当你打算是用Python还是Ruby时候我建议你先两个都接触看看自己对哪个比较感冒然后再做决定(jellen是不习惯Python古怪缩进语法才投奔Ruby)你要注意是Ruby语法比Python复杂多了不过幸运是语法的间都是很优雅地结合在呵呵但愿你会选择Ruby并且成为个快乐Rubyiest!

  7、我想学Ruby但是不知道我系统是否支持?我需要安装什么软件Software?

  Ruby可以很好在Windows系列、各种Linux、Unix和MacOS上运行甚至在(Dos、BeOS、OS/2等不常见系统上也可以)所以你要做是到Ruby语言主页:www.ruby-lang.org去下载你使用操作系统对应Ruby安装安装上去就可以了然后建议你安装个支持Ruby语言语法显亮文本编辑器(比如Vim或者Emacs)这会使你Ruby的旅更加惬意!

  8、哪里有Ruby学习资料?

  你可以到www.ruby-doc.org去下载个“ruby-doc-bundle”你们有Ruby用户手册参考文档和被称为“Ruby语言圣经”Programming Ruby第1版电子书这些都是很有用资料可惜都是英文对英文不好朋友是个障碍不过随着Ruby流行越来越多Ruby教材资料会出版出来



Tags:  ruby教程 rubyday rubyonrails ruby语言

延伸阅读

最新评论

发表评论