`
calmness
  • 浏览: 354016 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

ruby中标志的必然

    博客分类:
  • Ruby
阅读更多

        注册终于满了三天,终于可以动手写BLOG了,有点郁闷,javaEye无论从哪方面来看,都是不错的社区,唯一让俺觉得有点烦的就是发帖的这个限制,必须要三天后才可,本来看到一些不错的帖子,想回帖或者是跟大家一起讨论的时候,结果看到回复处的“三天”提示,唉。。。。。。

        呵呵,发发牢骚,三天前在这里论坛看到一篇理解ruby标志的文章,好像是翻译的吧,看了下,感觉不错,看到后面朋友们的回复,让俺获益良多,本来自己也想凑凑热闹回复一下,发表自己的看法,结果“三天”提示让俺偃旗息鼓,今天终于到了期限,不用再看到那可恶的“三天”提示了,呵呵。

        关于ruby中标志的概念就不多说了,在论坛里已经有很详细的解释,在论坛那帖子的回复里,很多朋友都是针对于RUBY中标志和JAVA字符串池哪个处理得更好而进行的讨论,其实关于java做得好还是ruby做得好,我个人认为不应该这样去看,我们应该从ruby本身的语言特性来看,在ruby中,任何一个字面值都是一个独立的对象,包括数字,字符等,问题就在“独立”这两个字上,ruby本身的意愿就是每一个字面值都是独立的,例如:
puts "aaa".object_id.to_s  >> 21718840

puts "aaa".object_id.to_s  >> 21718710

这两个是完全不同的字符串对象,ruby的本意是完全面向对象,这种同值而不同对象的方式是ruby的需要,也是完全面向对象的需要,至少我是如此认为,所以在这一特性之下,ruby就自然不能使用java的字符串池方式,而symbol的出现也就是必然的了,有的人说java处理得好,有的人说ruby处理的好,其实这些看法我个人觉得就过于片面,凭心而论,我个人觉得java字符串池的方式更省心,也更好用,但是就面向对象的角度来看,symbol更合理,第一次来这里发表看法,个人愚见,由于技术有限,所写有误处请指正,谢谢!

分享到:
评论
5 楼 刑天战士 2007-02-28  
symbol确实是比较地址,我不知道动态语言怎么实现的,反正在C里面,专门有一个symbol table是用来存放symbol的,不过C中的symbol好像是有类型的……
4 楼 calmness 2007-02-24  
我只是认为这一点不应该从其实现不同这方面来看,而更应该注重他如此做的用意,也许语言创作者本身也是想做到相同字面值不同对象这一点,从这点看来,symbol的出现属于必然,当然这也只是我一家的看法,事实上语言创作者本意如何也只有他自己才知道了。
3 楼 bencode 2007-02-23  
楼主:
引用
这种同值而不同对象的方式是ruby的需要,也是完全面向对象的需要,至少我是如此认为,所以在这一特性之下,ruby就自然不能使用java的字符串池方式


不以为然, java对常量字符串产用字符串池的方式, 以及ruby 不使用, 这是两者实现上的问题. 首先因为java 需要编译, 这样在编译期就可以进行优化, 所以这只是字符串优化上的一种措施, 而Ruby 所有对象都是在运行时构建起来的,所以如果再进行字符串池的操作, 就是画蛇添足了.

楼主:
引用
而symbol的出现也就是必然的


必然吗?

一个类而已

towjzhou:
就一个原因,更快,因为比较地址。

何出此言?
2 楼 calmness 2007-02-17  
这个当然,两者目的基本都是一样的
1 楼 towjzhou 2007-02-17  
就一个原因,更快,因为比较地址。

相关推荐

    ruby中英文api

    在Ruby中,API主要体现在类、方法、模块和库的形式上,它们提供了丰富的功能供开发者使用。Ruby的官方API文档详细记录了每种内置类型、类、模块、方法以及它们的使用方式。"ruby中英文api"资料集可能包含了对这些...

    ruby中文资源大全

    在工作中,他希望有一种比 Perl 强大,比 Python 更面向对象的语言。从1993年2月,他开始设计一个全新的自己的语言,1994年12月发布了第一个 alpha版本,并且将这种新语言定名为Ruby(红宝石)。 本教程内含多部中文...

    ruby 中文文档 必备资料

    在Ruby中,异常类是继承自`StandardError`的,你可以自定义异常类来处理特定类型的错误。 Ruby on Rails是Ruby最著名的Web开发框架,它遵循MVC(模型-视图-控制器)架构模式。这份文档可能也涵盖了Rails的相关内容...

    ruby中文文档中心资料

    在Ruby中,Web开发最知名的框架是Ruby on Rails,它遵循MVC(模型-视图-控制器)架构模式,简化了Web应用的开发。Rails提供了许多约定优于配置的特性,使得开发者可以更快速地构建功能丰富的网站。 总结起来,"ruby...

    ruby中文教程,从基础到深入的让你学习ruby

    变量在Ruby中有四种类型:局部变量(以小写字母或下划线开头)、实例变量(以`@`开头)、类变量(以`@@`开头)和全局变量(以`$`开头)。数据类型包括字符串、数字、布尔值、数组、哈希等。控制结构包括条件语句(如...

    ruby中文文档.chm

    在Ruby中,一切都是对象,包括基本的数据类型如字符串、数字和布尔值。这种特性使得Ruby在处理复杂问题时具有很高的灵活性。文档中将详细讲解Ruby的基础语法,如变量声明、控制结构(条件语句、循环)、函数和方法...

    Ruby中文文档.zip

    Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp ...

    ruby中文手册 chm

    中文翻译版可以帮助中文读者更好地理解书中的概念,从而提高学习效率。 通过这个中文手册,开发者不仅可以学习到Ruby的基本语法,还可以了解到更高级的主题,如元编程、闭包、 Blocks、Proc对象和Symbol,以及如何...

    Ruby中文帮助文档

    Ruby中文文档.CHM 方便ruby or rails学习.

    Ruby Ruby Ruby Ruby Ruby Ruby

    Ruby Ruby Ruby Ruby Ruby Ruby

    Ruby中文教程及相关源代码

    3. **函数与方法**:Ruby中的函数定义和调用,块和 Proc 对象,以及方法的定义、重载和作用域。 4. **面向对象编程**:Ruby是纯面向对象的语言,讲解类的定义、继承、模块(Module)的使用,以及对象创建和消息传递...

    ruby中文文档

    3. **块、 Proc 和 Lambda**:Ruby中的块是一段可以被传递和执行的代码,类似于其他语言中的闭包或匿名函数。Proc和Lambda是两种表示代码块的数据结构,它们可以存储和调用代码块,而且在行为上与函数类似。 4. **...

    Ruby中文文档

    Ruby是一种功能强大的面向对象的脚本语言,她可以使您方便快捷地进行面向对象编程.Ruby使文本处理和系统管理变得简单,与Perl非常相似.一句话:简单明了,扩展性强,移植性好. Ruby的几大亮点: 语法简单 垃圾回收 ...

    ruby中文 文档

    5. **字符串和数组**:这两种数据结构在Ruby中非常常用,文档会解释它们的操作和方法,如拼接、查找、替换等。 6. **哈希(Hash)**:Ruby的哈希是一种关联数组,键值对的存储方式,文档会介绍如何创建和操作哈希。...

    Ruby入门教程中文PDF 附实例

    Ruby中的控制结构也相当直观。`if`语句用于条件判断,`for`和`while`循环用于迭代。例如,下面的代码会打印1到5的数字: ```ruby for i in 1..5 puts i end ``` Ruby还是一个面向对象的语言,每个值都是一个对象,...

    Ruby元编程第二版中文

    在Ruby中,元编程的强大之处在于其语法简洁且易于理解,使得程序员可以轻松地实现动态行为。Ruby提供了多种元编程工具,包括: 1. **方法定义与调用**:Ruby允许在运行时定义和修改方法,如`define_method`函数可以...

    ruby中文教程(源代码)

    - 函数与方法:Ruby中的函数被称为方法,可以定义在类或模块中,支持块(block)和 Proc 对象。 2. **面向对象编程(OOP)** - 类与对象:Ruby是纯面向对象的语言,一切皆对象。你可以创建自定义类来封装数据和...

    hw-ruby-intro.zip_SaaS软件工程_hw-ruby-intro_ruby _ruby 中文_saas

    在本压缩包“hw-ruby-intro.zip”中,我们主要关注的是RUBY语言在SaaS(Software as a Service)软件工程中的应用。这个压缩包包含了一份名为“hw-ruby-intro”的作业代码,它是针对高级软件工程课程的,特别强调了...

    ruby语言帮助文档(简体中文)

    Ruby中的类和模块是构建对象的基础,类用于定义对象的结构和行为,模块则用于组织代码和实现多继承。 3. **方法**:Ruby的方法可以看作是对象的行为,可以定义在类、模块或者对象上。方法调用可以用点操作符(`.`)...

    ruby中文文档(ruby入门级别教程)

    通过这本指南,你可以掌握如何在Ruby中编写简单的程序,并逐渐深入到更复杂的编程技巧。 2. **RGSS入门教程**:RGSS是一种基于Ruby的游戏脚本系统,常见于RPG Maker系列软件。这个教程将教你如何使用RGSS编写游戏...

Global site tag (gtag.js) - Google Analytics