`
aideehorn
  • 浏览: 260843 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ruby 36要点

    博客分类:
  • ruby
阅读更多

1. 它是面向对象的。 这表示什么意义呢?如果问10个程序员,你也许会得到12种结果,你有你的看法,我不会试图去改变你的看法。但是有一点,Ruby提供了对数据和方法的封装,允许类的继承,对象的多态。不像其它语言(C++,Perl等),Ruby从设计的时候开始就是一种面向对象的语言。
2. 它是纯面向对象的语言。难道是我多余?不是这样的,之所以这么说,因为Ruby中一切都是对象,包括原始数据类型(primitive data types),比如字符串,整型,都表示的是一个对象,而不需要Java那样提供包装类(wrapper classes)。另外,甚至是常量,也会被当作对象来处理,所以一个方法的接收者,可以是一个数字常量。
3. 它是动态语言。对于只熟悉像C++,Java这样静态语言的人来说,这是一个重大的概念上的差别。动态意味着方法和变量可以在运行时候添加和重定义。它减少了像C语言那样的条件编译(#ifdef),而且容易实现反射API(reflection API)。动态性使得程序能自我感知(self-aware),比如运行时类型信息,检测丢失的方法,用来检测增加方法的钩子等。在这些方面Ruby和 Lisp和Smalltalk都有一些关系。
4. 它是一种解释执行的语言。这是一个负杂的问题,值得重点解释一下,也许这个特点会因为性能的原因而引起从优点变为缺点的争论。对于此,我有几点见解:1. 第一:快速开发循环是一个巨大的好处,这要得意于Ruby的解释执行。2.多慢才叫慢呢?在说它慢之前先定一个慢的基准。3.也许有人要批评我了,但我还要说:处理器每年都在变得原来越快。4.如果你真的很在意你的速度,你可以用C开发一部分你的代码。5.最后,从某种意义上说,这是一个还在争论中的问题,没有一个语言天生就是解释型的,世界上没有哪个法律进制开发一个Ruby编译器出来。
5. 它理解正则表达式。很多年之前,正则表达式只是用在UNIX的工具如grep或者sed中,或者在vi中进行一些一定的查找-替换等。Perl的出现解决了这些问题,而现在,Ruby同样也能做到这些。越来越多得人认识到了这种字符串和文本处理技术的难以置信的能力,如果你对此表示怀疑,那么请去看一下 Jeffrey Friedl的书Mastering Regular Expressions,然后,你就应该不会有什么怀疑了。
6. 它是多平台的。 Ruby可以运行在Linux,UNIX,WindowsBeOS?,甚至MS-DOS。如果我没记错,甚至还有一个Amiga 版本的
7. 它是派生来的。这是一件好事情吗?抛去书本上的知识,它是有用的。牛顿曾说过“我如果看得比别人远,那是因为我站在巨人的肩膀上”。Ruby同样也是站在巨人的肩膀上,它借鉴了Smalltalk, CLU, Lisp, C, C++, Perl, Kornshell等的优点。在我看来它的原则包括:1.不要重复制造轮子。2.不要修补没有损坏的东西。3.最后一个也是比较特别的,它能平衡(Leverage )你已有的知识。你了解UNIX的文件和管道,没关系,你可以在Ruby中继续用,你用了两年的时间学习了printf 指示符,不必担心,Ruby中你也可以使用printf。你知道Perl的正则表达式处理,那么你也就学会了Ruby中的正则表达式。
8. 它是创新的。是不是觉得这个和第七条矛盾了?也许是有一部分矛盾,每个硬币都有两面。一些Ruby的特点都是创新的东西,比如非常有用的Mix-in,也许这个特点会被后来的语言借鉴。(注:一位读者指出Lisp早在1979年就有mix-in了,这是我的疏忽;我应该找个更好的例子,并且能确信它。)
9. 它是非常高层次的语言。(Very High-Level Language :VHLL) 这是一个容易引起争论的话题,因为这个术语还没有广泛使用。而且它的意思比起OOP来说还是有讨论余地的。我这么说,指的是Ruby能支持复杂的结构和这些结构的负杂的操作,而需要的指令非常少,这与最小努力原则(Principle of Least Effort)一致。
10. 它有一个灵巧的垃圾收集器。 像malloc和free 这样的例程已经是昨天的恶梦了,你不需要什么回收内存的操作,甚至是调用垃圾收集器。
11. 它是脚本语言。不要因为此就认为它不够强大,它不是一个玩具。它是完全成熟的语言,用它能轻松的完成传统的脚本操作,比如运行外部程序,检查系统资源,使用管道,捕获输出等等。
12. 它是通用的。 Kornshell做的东西它也可以做,C语言做的东西它也可以做的很好。你可以用它写一个只运行一次的只有10行的程序,或者对一些遗留程序进行包装,你想写个web server,或者一个CGI,都可以用Ruby来写。
13. 它是多线程的。 Y你可以用一些简单的API来写多线程程序,甚至在MS-DOS上都可以。
14. 它是open source的。你想看它的源代码吗?可以,你也可以提交补丁,参加广泛的社区,包括它的创造者。
15. 它是值觉得。 Ruby的学习曲线比较低,而如果你翻过了一个坎,你开始“猜测”事情是怎么工作的,而且你的猜测很多时候都是正确的。Ruby坚持最小惊讶( Least Astonishment)的原则。
16. 它有异常机制。 像Java和 C++一样, Ruby 中也有异常机制,这意味着你不必因为返回值而将代码弄得凌乱不堪,很少的嵌套if语句,很少的意大利面条似的逻辑,更好的错误处理。
17. 它有一个高级的数组类:Array。 Ruby中数组都是动态的,你不必像pascal那样在声明它的大小,也不必像C,C++那样为它分配内存。它们是对象,所以你不必关心它们的长度,实际上你不能"走到末尾(walk off the end)"。这个类提供了各种方法,使得你能够根据索引,根据元素来访问数组内容,也可以反向处理数组。你也可以用数作作为set,队列,堆栈等。如果你想用查找表,可以用哈希结构。
18. 它是可以扩展的。 你可以用C或者Ruby来编写外部库(external libraries),同样,你也可以修改已有的类和对象。
19. 鼓励文档编程(literate programming)。你可以在Ruby程序中嵌入注释或者文档,这些文档可以用Ruby的文档工具提取和处理。(真正的文档编程者可能认为这是必须的基本东西吧)
20. 创造性的使用标点符号和大写字母。比如一个方法返回一个boolean型(Ruby中并没有这种说法),那么一般这个方法最后都以问号结尾,如果一个方法要修改接收者本身,或者具有破坏性,则用一个感叹号结尾,简单,直觉。所有常量,包括类名,都以大写字母开头,所有对象属性以@符号开头。这有匈牙利命名法的实用性,但是没有视觉上的丑陋性。
21. 没有保留字。只要语法分析器看不出歧义,就允许用所谓“保留字”作为标识符。呼吸一下新鲜空气。
22. 支持迭代器。这使得你可以给一个数组,list,tree等对象传递一个块,然后对它们的每个元素进行block调用。这个技术值得深入学习。
23. 它的安全性。 Ruby借鉴了Perl中基于$SAFE变量的分层控制机制。这对于CGI程序来说非常有用,可以防止人们攻击web服务器。
24. Ruby中没有指针。 像 Java一样,和C++不同,Ruby中没有指针的概念,所以免除了关于指针语法和调试的头疼。当然,这也意味着最底层的程序开发将会很困难,比如访问一个设备的控制状态寄存器;但是,我们可以用一个C库来调用。(像C语言程序员有时候要使用汇编语言一样,Ruby程序员有时候也要使用C语言来完成一定的任务)
25. 它使得人们专注于细节。 Ruby中有很多同义词和别名,你也许不记得字符串或数组的长度是size还是length,没关系,它们任何一个都可以工作。对于Range来说,你可以使用begin 和end 或者使用 first 和 last,它们也都工作。你想拼写indices,结果写成了indexes,没关系,这两个都一样。
26. 非常灵活的语法。方法调用时候括号可以省略,参数之间只需用逗号分割。类似Perl风格的数组定义可以让你不用全部使用引号和逗号定义一个字符串的数组。关键字return可以生路。
27. 丰富的库函数。 Ruby提供了线程,socket,有限对象持久化,CGI,服务器端可执行的,数据库等其它库函数,还有对Tk的支持等。还有很多其它的库函数。
28. 本身自带调试器(debugger)。在完美的世界中,我们才不需要调试器,但是这个世界不是完美的。
29. 交互式执行。 可以用Ruby像Kornshell那样执行。 (这可能是本页最具争论的一点,我不得不承认,Ruby真的不是一个很好的shell。但我仍然坚持,基于Ruby的shell是一个不错的主意。)
30. 它是简明的。 不像Pascal那样要求if后面跟着then,while后面跟着do 。变量不需要声明,它们不需要类型。返回类型不必指定,关键字return 可以省略,它将返回最后一个表达式的值。另一方面,它也不像Perl或者C那样复杂难懂。
31. 它是面向表达式的(expression-oriented)。 你可以轻易的使用 x = if a<0 then b else c  这样的表达式。
32. 语法砂糖(syntax sugar)。 (像Mary Poppins解释:一勺语法的糖能使语义被接受) 。如果你想对数组x进行迭代,可以用for a in x。你也可以用a+=b代替a=a+b,这都行。很多操作符其实在Ruby中都是方法,这些方法的名字比较直观,短小,有着便利的语法。
33. 它支持操作符重载。如果我没有记错的话,早在很久之前的SNOBOL就提供了这个功能,但是直到C++它才变得流行。虽然它可能乱用而出错,但是这仍是一个非常不错的优点。另外Ruby自动定义操作符的赋值版本,比如,如果你重定义了+,那么,你同时得到了一个+=操作符。
34. 支持无限精度的数字。 有人会关心 short, int, long吗,只需要使用 Bignum就行了,你可以轻松的实现365的阶乘。
35. 有幂操作符。在很久以前,我们在BASIC和FORTRAN中使用它,然而当我们学习Pascal和C之后,我们才认识到这个操作符有多差劲。(我们被告知自己连它是怎么工作的都不知道-它使用了对数,迭代了吗,效率如何?),但是,我们真的关系这些吗?如果是,我们可以重写这个方法,否则,Ruby有非常好的* *(星号之间无空格)操作符可以用。
36. 强大的字符串处理。 If如果你想查找,判断,格式化,trim,定界(delimit),interpose,tokenize,你可以自己选择随便用哪一个来得到你想要的结果。
37. 规则很少引起异常。 Ruby的语法和语义比其它语言有条理,每种语言都有独特的一面,每条规则都会有异常发生,但是Ruby规则引起的异常就少的多了。

分享到:
评论

相关推荐

    Ruby语言教程知识点详解 ruby重点知识点总结掌握.docx

    Ruby语言教程知识点详解重点总结 章节目录 1.Ruby语言简介与安装 2.Ruby基础语法 3.数据类型与变量 4.运算符与表达式 5.控制结构 6.函数与模块 7.类与对象 8.继承与多态 9.异常处理 10.文件与I/O操作 11.Ruby标准库...

    Ruby Under a Microscope An Illustrated Guide to Ruby Internals

    Ruby是一种以简单优雅的语法为核心的强大编程语言,但它内部所执行的无数不为人知的任务是这本书的重点研究对象。作者Pat Shaughnessy通过科学的实验方法,使用大量的图表和详尽的解释带领读者深入探索编程语言的...

    Ruby 编程语言的书籍

    1. **模块与混合**:介绍模块的作用及其实现方式,重点讲述如何使用`include`关键字将模块混入到类中,从而实现代码重用。 2. **元编程**:深入分析Ruby强大的元编程能力,包括动态方法定义、反射、符号处理等内容...

    ruby metaprograming

    不过,基于您的需求,我将重点围绕“Ruby元编程”这一主题来生成相关的知识点。 ### Ruby元编程 #### 一、引言 Ruby是一种动态类型的面向对象语言,它的灵活性和简洁性使得它非常适合进行元编程。元编程是指编写...

    ruby API资料

    2. **ruby19-core.chm**:核心库文档则重点介绍了Ruby语言的基础结构和核心组件,比如对象模型、类和模块系统、流程控制结构、异常处理等。在这里,你可以找到关于`Object`、`Class`、`Module`、`Proc`和`Method`等...

    中文版 Ruby 设计模式.pdf

    《Ruby设计模式》是一本关于设计模式方面的重点书籍。《Ruby设计模式》以通俗易懂的方式介绍了Ruby设计模式,主要包括Ruby概述、使用模板方法变换算法、使用策略替换算法、通过观察器保持协调、通过迭代器遍历集合、...

    ruby-1.8.7-p72-i386-mswin32.zip

    描述中的信息与标题相同,没有提供额外的知识点,因此我们将重点放在标签"Ruby"以及压缩包内的文件上。 在压缩包内,我们看到以下几个关键文件夹和文件: 1. **README.1st**:这通常是一个包含软件基本信息、安装...

    松本行弘:Ruby2.0

    这表明演讲的重点将放在Ruby 2.0这一版本上,并且由语言的设计者本人进行介绍。 ### 知识点二:Ruby 的设计理念与初衷 **内容解析:** 松本行弘认为,Ruby 最初的诞生并非为了取代Perl,而是出于一种个人兴趣和...

    ruby笔记1ruby笔记1ruby笔记1

    标题中的"ruby笔记1ruby笔记1ruby笔记1"暗示了这是一份关于Ruby编程语言的学习笔记,可能包含了作者在学习过程中的重点、难点以及心得体验。描述中的内容重复了标题,进一步强调了这是关于Ruby的深入学习记录。标签...

    从 Java 到 Ruby_ 每一个管理者应该知道的事情

    与 Java 的Spring 或 Struts 等框架相比,Rails 的开发速度和社区支持可能是讨论的重点。 4. **团队适应性**:转换语言可能需要团队成员学习新的技能。管理者需要了解这个过渡的成本和时间投入,以及如何最小化对...

    Packt.Cloning.Internet.Applications.with.Ruby

    在使用Ruby开发类似应用时,应考虑的技术要点包括: - **图片处理**:使用Ruby gem如ImageMagick或MiniMagick进行图像压缩、裁剪和格式转换等操作。 - **多媒体存储**:选择合适的云存储解决方案(如Amazon S3),以...

    Ruby设计模式(中文版+英文版).pdf

    本书是一本关于设计模式方面的重点书籍。本书以通俗易懂的方式介绍了Ruby设计模式,主要包括Ruby概述、使用模板方法变换算法、使用策略替换算法、通过观察器保持协调、通过迭代器遍历集合、使用命令模式完成任务、...

    Ruby语言中文教程.rar

    首先,Ruby的基础语法是学习的重点。Ruby语言允许程序员以一种自然、接近英语的方式来编写代码,使得代码更易读、易写。例如,变量的声明无需指定类型,直接使用`$`、`@`、`=`等符号即可。`puts`函数用于输出内容到...

    生成PDF的ruby

    我们将重点讨论Prawn,这是一个功能强大且易于使用的库,用于生成高质量的PDF文档。 **Prawn库的使用** 1. **安装Prawn**: 在你的Ruby项目中,首先需要通过`Gemfile`添加Prawn,然后运行`bundle install`来安装。 ...

    ruby_on_rails安装部署指导手册

    ### Ruby on Rails 安装与部署知识要点 #### 一、前言 在进行 Ruby on Rails 的安装与部署过程中,我们需要关注几个核心方面:系统版本兼容性、软件依赖包的选择与安装、Ruby 语言环境的配置以及 Rails 应用的具体...

    Ruby语言介绍要点难点代码案例参考实际应用举例 Ruby 是一种动态、面向对象的编程语言,最初由日本程序员松本行弘(Yukih

    Ruby语言介绍要点难点代码案例参考实际应用举例 Ruby 是一种动态、面向对象的编程语言,最初由日本程序员松本行弘(Yukihiro Matsumoto)于1995年创建。它以简洁、优雅的语法著称,致力于提高开发者的生产力和乐趣。...

    [Ruby完全自学手册].邓蔚.扫描版

    在深入探讨Ruby的高级特性时,元编程将被重点关注。Ruby允许在运行时修改代码,这种能力使得它在某些场景下非常灵活。例如,读者将学习到如何使用 `class_eval` 和 `instance_eval` 动态定义类和方法,以及 `send` ...

    《Ruby从入门到精通》PDF版本下载.txt

    以下是对书中的核心概念和技术要点的概述: ### 一、Ruby简介 1. **Ruby语言的特点**:Ruby是一种简单、快速、面向对象且易于学习的编程语言。它支持多种编程范式,如面向对象编程(OOP)、函数式编程等。 2. **...

    Ruby学习资料(含参考手册和Programming Ruby)-中文.rar

    "Ruby语言(Grant Ren)-p143.doc"可能是一篇关于Ruby语言的深入文章或章节,重点关注的是第143页的内容。在学习过程中,阅读这些深度文章可以帮助你理解更高级的主题,比如Ruby的内存管理或者面向协议的设计。 ...

Global site tag (gtag.js) - Google Analytics