On 1/8/06, James Edward Gray II <james / grayproductions.net> wrote:
> On Jan 8, 2006, at 2:21 PM, Gregory Brown wrote:
>
> > How would you (the community) define meta-programming
>
> Code that writes code.

I think this is most of the way there.  From the wikipedia:

"Metaprogramming is the writing of programs that write or manipulate
other programs (or themselves) as their data or that do part of the
work that is otherwise done at runtime during compile time."

http://en.wikipedia.org/wiki/Meta-programming

> > open class system
>
> Classes that can be changed (methods added, removed, etc.) at runtime.

It's probably worthwhile to note that this makes things like irb possible, no?
Seeing as the 'main' area of Ruby is just within an Object.

Classes can be fully manipulated too, I'm not sure if this is part of
a complete definition or not.  That classnames themselves are first
class values and can be manipulated as such.

> > and the dynamic nature of ruby?

> I like to think that Ruby does away with much of the compile time vs
> runtime separation and that is a big source of it's dynamic nature.

I like this idea.  My professor had the misconception about ruby that
you could modify a class however you wanted, but could not remove it's
original set of methods or undefine fields or things like that.  This
misconception is due to the fact that static languages really do tend
to make their class definitions rather solid, where they're as free as
anything else in ruby :P