David Pollak wrote:
> I am taking the position that as Ruby-based systems become more
> complex, the
> balance changes.  The Glue/RMagick/Instiki load issues are hints of the
> issues that, I argue, will become more common as there are more libraries
> and more complexity in the Ruby/Rails/whatevers-next code bases.
>
> One post drew the analogy to the danger of meta-programming and the
> danger
> of C/C++ pointers.  I think it's a perfect analogy.  Pointers are
> amazingly
> powerful, when used correctly.  Unfortunately, they were sometime
> mis-used
> which led to nasty program failures and they were ultimately bannished
> from
> the successor languages to C/C++ (Java, C#).
>
> I think meta-programming should stay part of Ruby.  I also think that
> Ruby
> should evolve (either through libraries or the runtime with switches,
> etc)
> to guard rails around meta-programming so that it's power can be used
> correctly.
>
> Thanks,
>
> David
>
> PS -- To avoid being branded a troll, this will be my last post in this
> thread.  I'm happy to discuss this issue privately.
I think this is exactly the *right* place to discuss this issue!!

1. I haven't used meta-programming in a *long* time. The last time I did
anything like it on a for-profit project was in the mid-1960s, and I had
my head handed to me by management for it. It's just not maintainable by
anyone except the original programmer and those *very* closely
associated with the original programmer.

In fact, I think the same goes for domain-specific languages. On a
software project, we already share a spoken language, one or more
programming languages, a shell/command line language, a revision/version
control system and lots of other environmental languages.

2. Complex adaptive systems, no matter whether they are organizations,
software, a living animal, or some combination of these, are ... well
... complex and adaptive. :) Unmastered complexity is a project-killer.

I'm optimistic that Ruby (and Rails) will evolve as they take on larger
and more complex projects. Fortran has, Lisp has, Algol/C/C++/Java/C#
has, Perl has, PHP has and Python has. As I noted before, only one
language seems to have thought all of this out from the start, Ada.

P.S.: In case you haven't noticed, I'm pretty much in violent agreement
with you, David.

P.P.S.: Yes, both meta-programming and domain-specific languages, called
by those names, *were* around in the mid-1960s. They didn't start with
Ruby or Forth or even Lisp. Regular expressions and text editors made
them more or less unneccesary, at the cost of millions of lines of badly
factored code. :)
>

-- 
M. Edward (Ed) Borasky

http://linuxcapacityplanning.com