我是一名曾经的程序员,很想学习Ruby,有没有朋友帮我。
1、Ruby 是面向对象语言。
这意味着什么呢?的确,关于“什么是 OOP”,每十位程序员当中恐怕就有十二种看法。这个问题我留待您自己判断。而就特征而言,Ruby 提供了机制,将数据和方法封装到对象里,实现了一个类到另一个类的继承机制,还提供对象多态机制。与某些语言(C++、Perl 5 等等)不同的是,Ruby 从一开始的时候就是以面向对象为目标来设计的。
2、Ruby 是“纯正”的 OOP 语言。
我说重复了么?我可不这么认为。说“纯正”,这就意味着,所有的一切——包括字符串或整型之类的基本数据类型——都是以对象的形态来表达的。在 Ruby 中用不着 Java 里面提供的那种 wrapper class(包裹类)(译注:wrapper class 用来将基本类型包装成对象类型)。而且,甚至连常量都被当作对象来对待,因此方法可以由——比如数字常量——来唤起。
3、Ruby性能特点之Ruby 是动态语言。
对于只熟悉诸如 C++、Java 等静态语言的人而言,这就是个新概念。所谓动态意味着,可以在运行期动态地追加或者重新定义方法和变量。这种动态机制免除了对 C 语言中条件编译(#ifdef)这类功能的需要,并且使构建复杂的 reflection(内省机制)API 成为可能。复杂的 reflection 机制又进而使得程序可以变得更为“自知(self-aware)”——从而为如下诸多功能开启了方便之门:运行期类型信息、丢失方法的侦测、能够侦测新追加的方法的钩子技术,等等。从这个方面来看,Ruby 与 Lisp 和 Smalltalk 有些许亲缘关系。
4、Ruby 是解释型语言。
这是个复杂问题,值得多说几句。有人可以争论说,从性能方面来考量,语言采用解释型机制弊大于利。对于这种想法,我用下面的斟酌予以回应:1. 首先最为显著的是,快速开发周期(rapid development cycle)颇有效益可得,Ruby 的解释型语言本质助长这种效益。2. 太慢到底是多慢呢?说慢之前请先做一些性能测试。3. 尽管会有人因此而批评我,但我还是要这么说:处理器每年都在持续提速。4. 如果您着实需要速度,您可以用 C 语言撰写需要速度的那部分代码。5. 最后,从某种意义上说,有一种值得商榷的观点:鉴于没有哪种语言是从骨子里就被解释,因此并不能说不可能撰写出 Ruby 编译器。
5、Ruby 能够处理正则表达式。
多年以来,正则表达式一直被认为是属于 UNIX 领域的雕虫小技,涉及诸如 grep 和 sed 之类的阳春工具,或是在 vi 里面做一些讨巧的“查找-替换”操作。Perl 语言帮助人们改变了这种看法,而现在 Ruby 也对此有所帮助。越来越多的人认识到这种超高级的字符串和文本操纵技巧中所蕴含的无比威力。对此持怀疑态度者,应该去读一读 Jeffrey Friedl 的书 Mastering Regular Expressions 。非怀疑论者也应该读。
6、Ruby 是支持多种平台的语言。
Ruby 可以运行在 Linux 及其他 UNIX 变体、各种版本 Windows 平台、BeOS,甚至 MS-DOS 上。如果我没记错的话,还有 Amiga 版本的。
7、Ruby 借鉴了前辈语言。
这是好事儿吗?在文学领域之外,是的,这是好事儿。牛顿说,“若我看得比别人远,乃是因为我站在了巨人的肩上”。Ruby 确实是站在了巨人的肩上。Ruby 引借了来自 Smalltalk, CLU, Lisp, C, C++, Perl, Kornshell,以及其他语言的特性。我看到其中的原则是:1. 不要重新发明轮子;2. 不要修补没有问题的部分;3. 特别重要的是,充分利用人们现有的知识。您掌握 UNIX 里面的文件和管道(pipes)吗?没问题,您可以在 Ruby 中运用到那些知识。您花了两年时间研习 printf 的各种格式符号?别担心,您在 Ruby 里面还可以使用 printf。您了解 Perl 的 regex handling 技术?好的,那么您几乎也就立刻学会了 Ruby 的 regex handling 技术。
8、Ruby 具创新性。
这一条与第7条有些矛盾吧?唔……是有一点;每个硬币都有两面嘛。Ruby 有一些特征极具创新性,比如非常有用的 mix-in 概念。或许这些创新型特征将来会被新的语言借鉴。(注:一位读者向我指出,LISP 至少早在 1979 年就有 mix-in 了。这一点我倒是完全没有注意到;我当另寻一个更好的例证,保证其真确性。)
9、Ruby 是特高级语言(Very High-Level Language,VHLL)。
这个问题有待商榷,因为术语 VHLL 还未被广泛使用,而其含义更是比 OOP 的含义更具争议性。我说“特高级”指的是,Ruby 可以通过相对较少的指令掌控复杂的数据结构并对其进行复杂的操作,符合了被一些人称为“最少投入”的原则(Principle of Least Effort)。
10、Ruby 有智能垃圾收集器。
诸如 malloc 和 free 之类的函数现在只是已然过去的昨夜噩梦。您连析构函数都不需要调用。仅此足矣。
11、Ruby 是脚本语言。
不要以为 Ruby 是脚本语言所以就不强大。Ruby 可不是玩具。Ruby 是全功能的程序设计语言,只不过 Ruby 让传统的脚本操作变得更容易撰写,比如运行外部程序、检查系统资源、使用 pipe(管道)、截获输出等等。
12、Ruby 用处多样。
Ruby 可以完成好 Kornshell 能够完成好的事情,也可以完成好 C 语言能够完成好的事情。想快速写一个十行的 hack 程序来完成一次性的任务,或者为遗留代码写个 wrapper 吗?用 Ruby 没问题。想写一个 Web 服务器、CGI,或者棋类游戏吗?用 Ruby 也没问题。
13、Ruby 对线程予以支持。
您可以使用简单的 API 撰写多线程应用程序。是的,即使是在 MS-DOS 上撰写也可以。
14、Ruby 是开源的。
想看 Ruby 的源代码了?想提供一个补丁建议了?只管去吧!想与智慧云集、乐于助人、包括语言设计者在内的用户社区进行联络吗?可以的!
Ruby 具有直观性(直觉性)。
学习曲线平滑不陡。一旦入了门,您是否就开始“猜测” Ruby 的使用方式了呢?您的猜测通常是正确的(译注:因为 Ruby 很直观,符合了人们惯常期待的方式)。Ruby 致力于符合“最少诧异或惊讶”之原则(Principle of Least Astonishment (or Surprise)).
15、Ruby 具有异常(exception)机制。
同 Java 和 C++ 一样,Ruby 能处理异常。这意味着少与返回代码纠缠,更少的嵌套 if 语句,更少的意大利面式逻辑(spaghetti logic,贬义,指的是复杂混乱的代码设计,比如大量使用GOTO语句等等),更好的错误处理机能。
16、Ruby 有高级的 Array class 。
数组是动态的;您不必像在 Pascal 等语言当中那样在编译期声明数组大小。您不必像在 C/C++/Java 当中那样为数组分配内存空间。Ruby 的数组是对象,因此您不必时刻警惕其长度;原则上,您不可能像在 C 语言当中那样“越出数组的长度大限”。想以索引、元素,或者反向处理数组吗?想打印整个数组吗?Ruby 为所有这些事情提供了对应的方法。想把数组当作集合(set)、堆栈(stack),或队列(queue)来对待吗?Ruby 也为此提供了对应的方法。想把数组当作查找表(lookup table)来使用吗?这是个问题问得巧——您不必这样用,因为 Ruby 提供了哈希表专门处理这个问题。
分享到:
相关推荐
- **创始人**:Yukihiro Matsumoto(松本行弘),一位来自日本的程序员。 - **创建时间**:1995年。 - **设计理念**:Ruby的设计理念强调编程的快乐与简单性,力求使编程过程既高效又愉悦。 - **语法特点**:Ruby...
- **Learning Ruby**:适合Ruby初学者的基础教程。 - **Advanced Rails**:针对高级Ruby on Rails开发者的深入指南。 - **Rails Cookbook**:涵盖Ruby on Rails框架中的各种常见问题解决方案。 - **Ruby Pocket ...
6. **活跃的社区和生态系统**:Ruby有一个活跃的社区,提供了大量的开源项目、库、框架和工具,如Ruby on Rails、Sinatra、RSpec等。 #### 语法特点 - **动态类型**:变量的类型是在运行时确定的,使得编程更加...
- **简介**:该课程覆盖了从基础知识到高级主题的广泛内容,包括元编程、并发等,非常适合想要深入了解Ruby内部机制的学习者。 - **适合人群**:适合希望系统地学习Ruby及其高级特性的开发者。 #### 三、练习网站...
Ruby 是一种面向对象的、动态的、解释型的编程语言。它由日本程序员松本行弘(Yukihiro Matsumoto,又名“Matz”)于 1993 年创建。 特点: **面向对象:**Ruby 是一种面向对象的语言,允许程序员创建对象并使用...
- **起源与发展**:Ruby是由日本程序员松本行弘(Yukihiro Matsumoto)于1995年开始开发的一种面向对象的脚本语言。它结合了Perl的灵活性与Smalltalk的强大功能,旨在提供一种简洁且易于阅读的编程语法。 - **版本...
Ruby(中文名:红宝石)是一种简洁、灵活且富有表达力的编程语言,由日本程序员松本行弘(Matz)设计开发。Ruby注重开发者的幸福感,致力于提高开发者的效率和乐趣。下面是 Ruby 的一些主要特点和特性: 1. **简洁...
- **插图作者**:why the lucky stiff是一位著名的Ruby程序员和艺术家,为本书提供了插图。 - **编辑团队**:由Mike Loukides担任编辑,Sarah Schneider负责生产编辑和校对,Joe Wizda负责索引编制。 - **设计团队**...
- **运行Ruby**: - 使用Ruby命令行的基本操作。 - IDE选择:FreeRIDE和SciTE等开发工具的使用技巧。 - fxri工具的介绍及其使用方法。 - **Ruby-irb**:交互式Ruby环境的使用,包括调试和测试代码片段。 - **Ruby...
- **使用交互式Ruby shell(irb)**:`irb`是一个内置的命令行工具,用于即时测试代码片段和学习Ruby语法。 ### 更深入的学习 随着你对Ruby的理解加深,你将探索更多概念,如类、模块、方法、继承、 Mixins、异常...
- **关键字**:Ruby中有多种关键字用于控制流和定义程序结构,例如`if`、`else`、`elsif`、`while`、`for`等。 - **运算符**:包括算术运算符(+、-、*、/)、比较运算符(==、!=、<、>)和逻辑运算符(&&、||、!)...
- **定义与特点**:Ruby是一种面向对象的脚本语言,简洁且易于阅读。它强调程序员的生产力和代码的可读性,支持多种编程范式,包括面向对象、命令式、函数式和元编程等。 - **发展历程**:由日本人松本行弘于1995年...
2. **面向对象**:Ruby的面向对象更为彻底,几乎所有的元素都是对象,而Python虽然也支持面向对象,但在某些方面如全局变量和函数的处理上,没有Ruby那么面向对象。 3. **性能**:Python通常在执行速度上略胜一筹,...
- **《Ruby Cookbook》**:这本书包含了各种Ruby编程技巧和实践案例,适合有一定Ruby基础的学习者深入学习。 - **《Ruby in a Nutshell》**:作为一本参考手册,该书提供了Ruby语言的核心概念和API的详细解释。 - **...
《为什么是(Poignant)Ruby指南Why's (Poignant) Guide to Ruby》是...通过结合《Poignant Ruby指南》的学习和其他资源的辅助,相信每位学习者都能够快速掌握Ruby编程语言的核心知识点,并成为一名合格的Ruby开发者。
虽然书名没有直接提及Rails,但作为Ruby学习的一部分,理解其MVC架构、ActiveRecord、路由和生成器等概念会非常有帮助。 12. **测试驱动开发(TDD)和持续集成**:Ruby社区重视测试,因此学习如何使用Rspec等测试...