[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Macros Make Me Mad

I agree entirely with your premises.  Macros are language
constructs, and as such have to be held to higher standards.
I don't see how your conclusion follows from this-- that
macros will yield more problems than benefits.

What about all the stuff in Lisp that's already implemented
as macros, for example?  Are you saying it's a lose to have
these operators?  Probably not.  So why is it bad to write more?

I think the root of your mistake is saying that macros    
don't scale to larger groups.  The real truth is that
macros don't scale to stupider groups.  A group of one
idiot can easily render his code unreadable with badly
designed macros.  Whereas a group of smart programmers, 
however large, will be able to use macros in safe ways
that yield net wins.  E.g. by doing bottom-up programming.

To adapt Mike Vanier's LFSP, macros are simply an FFSP.
Macros would only be bad if there were no programmers
S enough to use them safely.   That one I can answer from
experience.  I probably know 50 Lisp hackers personally 
that I would trust to write macros.

Ergo macros are not a bad feature.  At worst they are
a high-end niche feature.  And that kind of feature is
in fact especially interesting to companies in competitive
situations, as I tried to show in Revenge of the Nerds.


--Todd Proebsting wrote:

> Despite the fact that many folks I respect swear by macros, I've yet to
> feel comfortable with them in a language.  Since LL2, I've been trying
> to figure out what my resistance is based on.
> Let me say that I think that macros are beautiful and powerful and all
> those good things.  Let's not quibble about that.
> Defining a macro is often an act of defining a language construct and
> implementing it.  Reasonably or not, I hold language constructs to a
> higher standard than, say, a mere function definition.  Specifically,
> * I expect language constructs to be implemented perfectly.  I must
> trust my compiler.
> * I expect language constructs to be documented precisely.  I must trust
> the documentation.
> I know precious few programmers who document well at all, much less to
> the level I expect in a language definition, and I know precious few
> programmers who implement and test their own code to the level expected
> in a compiler.  Therefore, I'd expect more problems from macros than
> benefits.
> Are these technical reasons?  No.  But they are practical reasons, and
> ultimately I program practically.  Macros may be great for individuals
> and small groups, but I just don't believe that they scale for these
> non-technical reasons.
> Todd