Oh boy. People are writing about why Ruby’s almost as good as Lisp, and it’s ruffling some lispy feathers. I’m not sure I even get this bit:
One claimed advantage of (included, but not limited to) Ruby is its ability to introspect: examine dynamically the contents of a classes, data structures in general, what functions do etc. OK, but to do that you need a new bunch of structure in your language: special data types, new methods to access the internals of other objects etc.
Again, guess what ? There’s a language, invented more than 40 years ago, in which you can do just that, only in a simpler way. In Lisp, the only structure is the “list”. Everything is either an atom, or a list. So as long as you can handle lists (that’s what Lisp was invented for), you can access and manipulate everything in your programs: data, function prototypes, function bodies, everything. And you don’t need any additional syntax or feature in the language itself. You access all of Lisp from Lisp, that’s all. That’s what I call pure reflexion, by contrast to only introspection which needs a specific mechanism to do its business. I consider it abusive to call Ruby a reflexive language.
“Everything is either an atom, or a list.” Guh? All s-expressions are atoms or lists, and source code is made of s-expressions, but once it’s compiled and running it doesn’t make much sense to talk about it that way. “The only structure is the list” — huh wuh guh? Vectors? Arrays? Objects? Strings? Hashtables?