论坛首页 入门技术论坛

第一章、ruby简介

浏览 2231 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-01-03  

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

Ruby是面向对象的编程语言,她追求的是“简便快捷的面向对象编程”。Ruby是解释型语言,因此不需编译即可快捷地编程。同时Ruby具有类似Perl的强大的文本处理功能,她可并不只是个玩具,您可以用她来进行实用的编程。此外,您还可以很方便地使用C语言来扩展Ruby的功能,因此可以把她当作各种库的前端来使用。

若您曾经“想要一种简单的面向对象的语言”,或者认为“Perl的功能虽然好用,但它的语法真让人受不了”,又或者觉得“lisp系列语言的思想不错,但到处都是括号真让人讨厌,最起码算式应该按照通常的样式书写”。那么,Ruby或许能让您满意。

 

ruby作者简介:

Matz是一个专业的软件工程师,在日本有名的opensource公司netlab.JP工作,而且他在日本也是一个高姿态的opensource布道者。他参与了几个开源软件项目,包括cmail,这是一个基于emacs的邮件用户代理,完全用emacslisp编写。Ruby也是他的第一个在日本以外的国家如此出名的作品。
在1993年的时候,有一次他和同事们谈论关于脚本语言(scriptinglanguage)的事情,Matz深深的认识到了脚本语言的强大和可行性,他想也许脚本语言是他的方向。
由于Matz很早以前就对面向对象编程很感兴趣,所以他认为面向对象也会适合脚本语言编程。然后,他到网络上去找了一些相关的东西,并且发现了perl5,当时它还没有发布,并且打算支持面向对象的特点,但是Matz发现这并不是他想找的东西,所以他放弃了把perl当作一个面向对象的脚本语言。
然后Matz转向了Python。Python是一个解释型的、面向对象语言,但是Matz发现它并不能完全算作“脚本”语言。Matz认为Python是面向对象和程序化语言(proceduralprogramming)的混合产物。
Matz希望的是一种比Perl强大,比Python更面向对象的语言,所以,他打算设计一个全新的自己的语言。Matz的开发从1993年2月24日开始,同年夏天,第一个Ruby语言的HelloWorld程序成功运行,第一个alpha版本在1994年12月发布。
直到1996年都是Matz一个人在开发,从这时候开始Ruby社区也渐渐形成,尽管现在大部分的开发还是Matz自己来开发,但很多人都给了Matz有意义的帮助,包括提交bug和patch等。
Ruby这个名字意为珍贵的宝石,千万不要认为是什么缩写,比如PERL。当作者开始写ruby的时候,跟一个同事开玩笑说这个项目要以一个宝石的名字命名。那个同事就说”ruby”,就是一种美丽贵重的宝石的名字。所以作者用了这个名字,并且最后在官方发布版本中,也延续了这个名字。后来,作者发现珍珠(pearl)是六月的诞生石(birthstone,这个我不懂),ruby是七月的诞生石,所以作者相信ruby是perl之后自己语言的一个好的名字。 

 

归纳以来,Ruby有以下优点:
◆解释器
 Ruby是解释型语言,其程序无需编译即可轻松执行。
◆变量无类型
 Ruby的变量没有类型,因此不必为静态的类型匹配而烦恼。相应地,错误检查功能也变弱了。
◆不需要变量声明
 所有变量均无需声明即可立即使用。另外,从变量名即可判断出是何种变量(局部变量,全局变量,实例变量)。
◆语法简单
 语法比较简单,类似Algol系语法。
◆不需要内存管理
 具有垃圾回收(Garbage Collect,GC)功能,能自动回收不再使用的对象。
◆一切都是对象
 Ruby从一开始就被设计成纯粹的面向对象语言,因此以整数等基本数据类型为首的所有东西都是对象,它们都有发送信息的统一接口。
◆类,继承,方法
 Ruby当然具有面向对象语言的基本功能。
◆特殊方法
 可向某对象添加方法。例如,可以把GUI按钮被按下时的动作作为方法记述下来,还可以用它来进行原型库(prototypebase)的面向对象编程(有人这么干吧)。
◆用模块进行混合插入(Mixin)
 Ruby故意舍弃了多重继承,但拥有混合插入功能。使用模块来超越类的界限来共享数据和方法等。

◆迭代器
 该功能可以将循环抽象化。
◆闭包
 可以将某过程片段对象化。对象化后的该过程片段就称作闭包。
◆功能强大的字符串操作/正则表达式
 以Perl为样板创造出了功能强大的字符串操作和正则表达式检索功能。
◆拥有超长整数
 添加超长整数功能后,可以计算非常大的整数。例如计算400的阶乘也轻而易举。
◆具有错误处理功能
 错误处理功能可以使您编写代码处理出错情况。
◆可以直接访问OS
 Ruby可以使用(UNIX的)绝大部分的系统调用。单独使用Ruby也可以进行系统编程。
◆动态加载
 若OS支持的话,可以在运行时读入对象文件。

 

但Ruby也有下列缺点:
◆因为Ruby是解释型语言,所以速度较慢
◆静态检查比较少

 

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics