Using a stock Ruby interpreter and the ParseTree library (downloaded and installed with the single command "gem install ParseTree"), I can do this ...
require 'parse_tree'\nclass Example\n def example(arg1)\n return "Blah: " + arg1.to_s\n end\nend\np ParseTree.new.parse_tree_for_method(Example, "example")\nWith the output (slightly formatted):
[:defn, :example, \n [:scope, \n [:block, [:args, :arg1], \n [:return, \n [:call, [:str, "Blah: "], \n :+, \n [:array, [:call, [:lvar, :arg1], :to_s]]]]]]]The above is pretty cutting edge stuff coming from Ryan Davis. Ryan is building a compiler that will take a simplified version of Ruby and compile it directly to C. The goal is to do something pretty close to what Squeak does with its implementation language. Combine this with the MetaRuby project and you get pretty close to what Avi is talking about. We're not there yet, but I definitely see movement in that direction.
Again quoting Avi: the Refactoring Browser, the Debugger [...], the various inspectors and explorers and profilers [...] nobody wants to write those tools in C
I'm not sure why he thinks C is required for those projects. One of my first projects in Ruby was a simple class browser, Rails has an embedded interactive debugger where you can communicate with your web deployed code, all in just plain Ruby. And now that Ryan has made it easy to reify the Ruby parse information, a refactoring browser becomes a real possibility.
Grant, none of this stuff is comparable to what Smalltalk offers now, but I think real reason the two language cultures are so different is not because of the need for C, but because Smalltalk is image based and Ruby is not.