InfoQ

新闻

Rubinius开发入门

作者 Werner Schuster译者 苏宇 发布于 2007年9月30日 下午11时59分

社区
Ruby
主题
编程,
技术,
动态语言
标签
Rubinius,
趋势

Rubinius正在赢得越来越多的支持,许多Ruby VM的开发者都坚信它前途不可限量

理由之一是它的模块化设计及其展现内部结构的方式。对于新上手的开发人员而言,Rubinius的内省机制(introspection)是一项很体贴的设计。在Ruby中,我们已经可以很方便得通过诸如obj.methods(返回obj的方法列表)的方式观察Ruby类。而Rubinius则做得更上一层楼,你甚至可以访问代表代码数据结构的抽象语法树(Abstract Syntax Tree,AST)。Rubinius使用ParseTree,通过标记和嵌套列表展现其结构。例如,下列代码:

puts "Hello, Rubinius. You rock my world!"

将被解释成:

[:fcall, :puts, [:array, [:str, "Hello, Rubinius. You rock my world!", 0]]]

如果你觉得这看上去象LISP或者Scheme的代码,没错,这不是巧合。这种称为s-表达式(s-expressions,即symbolic expressions)的表现形式也被这些语言用来展现代码。

这种语法树形式的好处在于其可读性要高于另外一种由在内存中一堆链接在一起的对象组成的数据结构。在创建AST的时候这种优势则更为明显,例如,用于使用AST的测试用例。

研究ParseTree有助于Rubinius的开发。现在已经有一些工具基于ParseTree了。Ruby2Ruby将一个ParseTree AST转成Ruby源代码,这样就可以看到运行时生成的Ruby代码,这一点很有用。Flog是一个新工具,它可以分析代码并评估其质量。其它的一些基于ParseTree的工具像Ruby2CHeckle,可以提供类似的检查功能。在Ambition中可以看到另外一种使用ParseTree的方式,它通过利用Ruby代码的ParseTree表现形式创建数据库以及其它数据源的查询语句。

Brian Ford深入探讨了Rubinius,例如得到ParseTree输出。文章的话题中包括用于审视Rubinius代码和相应底层字节码的ParseTree AST的工具。有了这些,Rubinius的开发新手可以迅速了解外表下发生的一切,以及Ruby源代码在用于执行时被转换成什么样子。有关更多最新的细节以及命令行选项介绍可以参考Rubinius的Wiki:命令行选项

对于所有对Rubinius源代码感兴趣的人,Sam Aaron有一篇有关如何在Mac OS X下查看Rubinius源码的文章值得参考一下,文章里收集了一系列相关链接和操作指南。一方面,对于新手而言,Rubinius的源代码管理系统可能会有些令人困惑。在体验了一段时间Subversion之后,该团队目前已经改用了Git。Git是一个分布式代码管理系统,由Linus Torvalds开发,原本是用于Linux内核开发的,但是现在采用这个系统的项目也在不断增加。分布式代码管理系统人气越来越旺了,因为它们让代码分支变得更容易,而代码分支可以让实验变得很简单。

要想了解如何使用Rubinius入手,请参考Rubinius网站上的“使用Git”页。正如Sam Aaron所指出的,一旦Rubinius被检出之后,使用Git来保持和Rubinius最新开发进度的同步,是非常容易的:

进入你的Rubinius所在目录,并敲入以下指令:

git pull ; rake build
查看英文原文:Getting started with Rubinius development
译者简介:苏宇,网名beanworms,软件工程师,开源项目XRuby成员。爱好广泛,尤喜烹饪。乐于寻找更好的解决问题的方法,目前对Ruby技术颇为着迷,个人blog为:http://azure-sky.javaeye.com/。参与InfoQ中文站内容建设,请邮件至china-editorial[at]infoq.com

没有回复

回复

深度内容

Flex与JSON及XML的互操作

平台需要互操作性。在这篇文章中,作者仔细研究了Flex和JSON及XML的互操作性。文章也包含了使用E4X库来将XML映射到图表和表格组件的内容,还演示了如何使用as3core库来解码JSON消息。

用Qi4j进行面向组合编程

本文将简要介绍面向组合编程(COP,Composite Oriented Programming)的概念,展示它如何规避OOP存在的一些问题,并重新点燃使用可重用部件组装领域模型(Domain Model)的希望。

系统开发——新学科,新教育

一门新的计算机学科——“系统开发”,强调人性化、匠艺、设计、创意、创新和新事物的涌现,并建议用被称为“bottega”的工作室替代乏善可陈的教室。

图书聚焦:Visual Studio 2008 揭秘

Mike Snell和Lars Powers用他们最近由Sams出版的新书《Visual Studio 2008揭秘》,试图帮助大家提高开发人员的生产力。本文包括一个下载样章——第10章调试。

BPEL为何不是BPM的圣杯?

Pierre Vigneras在本文中讨论了作为标准之一的BPEL所存在的问题。Pierre先给我们大致介绍了一个简单的并行流程,接着讨论了从业者在试图以一个结构化模型为基础表达非结构化流程时遇到的一系列问题。

基于范型的多语言编程

你是否仔细思考过,为什么人们总在讨论“要正确的语言做恰当的事情”?在这篇文章中,Sadek Drobi向你解释了为什么应该在系统内部混合使用多种语言。

采访与书摘《Pro Web 2.0 Application Development with GWT》

Jeff Dwyer就关于他的新书(《Pro Web 2.0 Application Development with GWT》)、GWT1.5以及创建可搜索的Ajax应用谈了一些他的见解。

时刻准备着,迎接IT业的春天

我们需要设身处地地为客户及客户的业务本身着想,与客户同舟共济。更多创新的思路、产品和模式也同样将为IT业带来新的出路。IT业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!