On Tue, 28 Aug 2001, Sean Middleditch wrote:

> But should this eval() be built into the language itself as a core
> component?  I can where, perhaps if one wished to play with full
> meta-programming, it would be necessary, but neither do I see a need for
> meta programming outside of the academic field.  or are there some examples
> to prove me wrong?  Again, I'd rather be proven wrong and corrected now than
> just be wrong for a long time to come.  ^,^

This article has already been mentioned once in this thread, but:
http://www.paulgraham.com/lib/paulgraham/sec.txt

I think he says something like 25% of the code is macros (which
definitely counts as metaprogramming), and this is in a highly commercial
setting.

Now, metaprogramming doesn't have to be run-time, or require eval -
something like AspectJ (ok, those guys don't like me to call it
metaprogramming, but...) works as a preprocessor on Java code, which isn't
really that different from how Lisp works, since macros are expanded at
(roughly) compile-time anyway.

As for whether there's a "need" for it, there are absolutely some problems
that become much, much easier at the meta-level (Ruby's attr_accessor
method is a very simple case in point; something like the GOODS object
database is a more complex one).  "Need"? Insert standard
Turing-completeness disclaimer here.

> C/C++ is my most familiar language actually.  I haven't looked into Algol at
> all, although I'm slightly familiar with COBOL.  I've studied newer
> languages a lot more though, especially lately.

By "Algol-spawn" he was referring to the loose family of
C/Java/etc, usually in contrast to Lisp.  

> In any event, I find that rarely is there anything I need to do in C/C++
> that isn't possible.  Sometimes just a bit hard to do.  ^,^

Sure.  If it really comes down to it, you can just use C to write a Lisp
interpreter... or Ruby ;-).