I remain unconvinced that Lisp’s macro facilities are antimemetic. I am not sure exactly how to divide up my disagreement between “it’s not antimemetic, it’s something more mundane” and “I don’t think you should use the exotic-sounding term ‘antimeme’ for something so mundane” because I am not exactly certain where you draw the boundaries of the term “antimeme”.
At any rate, I think the main reasons why Lisp isn’t more popular are fairly mundane and don’t need an exotic-sounding term to describe them. I think (though I confess I don’t have solid evidence) that:
most programmers who don’t use Lisp never even really look at it;
most who look at it but still don’t use it are mostly put off by superficial things like the unusual syntax or the Lisp community’s reputation for smugness;
most who get past those things but still don’t use it are mostly put off by genuine drawbacks like the relatively poor selection of libraries available or the difficulty of finding good Lispers.
So if Lisp is tragically underused then some of the tragic underuse will be the result of defmacro (and also, I suggest, set-macro-character and set-dispatch-macro-character) being underappreciated, but I find it very hard to believe that it’s a large fraction. And even that doesn’t all qualify as antimemetic in the sense of “provoking a self-suppressing response”, again unless you’re meaning that so broadly that it covers everything whose merits are easy to underestimate. If someone is (say) used to C-preprocessor-style macros, and hears that expert Lisp programming makes a lot of use of macros, and imagines a codebase full of #defines, are you calling that antimemetic? Or if they don’t jump to that conclusion but do think something like “hmm, macros aren’t really all that powerful, so a language where macros provide a lot of the power must be pretty weak”, are you calling that antimemetic?
I think the mental process you have in mind is different from both of those, because you’re taking “macro” to include e.g. C’s “if” and “for”, even though those aren’t implemented with any sort of macrology in C, so the reaction you’re describing is more like “these people say that in Lisp you can redefine the language itself, but that doesn’t make any sense”. Again I have no concrete evidence, but I don’t think that’s a common reaction. After all, C does have macros (of a sort) and you canuse them to extend the language (kinda), and users of Ruby, which is at least mainstream-ish, are used to using and making what they call “domain-specific languages” within Ruby even though what you can do there is fairly restrictive compared with Lisp’s macros.
I think you’re overdramatizing how people react to Lisp. “Lisp is an antimeme!” makes a great story, but I don’t think it fits the evidence as well as “Lisp is unfamiliar in various ways, and people are bad at seeing the merits of unfamiliar things”.
… Again, unless that or something like it is actually all you mean by “antimeme”.
It seems, at least some of the time, as if you’re using the term to describe anything whose widespread appreciation is limited by the fact that widespread beliefs or habits of mind get in the way. (Assuming that programming languages can’t have adjustable syntax; seeing a clear boundary between one’s self and the rest of the universe; being willing to have a boss and do what they say.) With that definition, I’m still not sure Lisp counts (as I said above, I think there are other reasons why many programmers don’t use Lisp, and they aren’t all antimemetic even in this very broad sense), but there’s certainly a case to be made that it does—but to me, “antimeme” doesn’t seem like an appropriate term, for two reasons.
It implies that the offputting-ness lies primarily in the thing itself, when in fact it seems much better to see it as a property of the people being put off.
It makes “being an antimeme” sound like some exotic SCP-ish property, when in fact a large fraction of underappreciated things are “antimemes” in this sense.
I remain unconvinced that Lisp’s macro facilities are antimemetic. I am not sure exactly how to divide up my disagreement between “it’s not antimemetic, it’s something more mundane” and “I don’t think you should use the exotic-sounding term ‘antimeme’ for something so mundane” because I am not exactly certain where you draw the boundaries of the term “antimeme”.
At any rate, I think the main reasons why Lisp isn’t more popular are fairly mundane and don’t need an exotic-sounding term to describe them. I think (though I confess I don’t have solid evidence) that:
most programmers who don’t use Lisp never even really look at it;
most who look at it but still don’t use it are mostly put off by superficial things like the unusual syntax or the Lisp community’s reputation for smugness;
most who get past those things but still don’t use it are mostly put off by genuine drawbacks like the relatively poor selection of libraries available or the difficulty of finding good Lispers.
So if Lisp is tragically underused then some of the tragic underuse will be the result of defmacro (and also, I suggest, set-macro-character and set-dispatch-macro-character) being underappreciated, but I find it very hard to believe that it’s a large fraction. And even that doesn’t all qualify as antimemetic in the sense of “provoking a self-suppressing response”, again unless you’re meaning that so broadly that it covers everything whose merits are easy to underestimate. If someone is (say) used to C-preprocessor-style macros, and hears that expert Lisp programming makes a lot of use of macros, and imagines a codebase full of #defines, are you calling that antimemetic? Or if they don’t jump to that conclusion but do think something like “hmm, macros aren’t really all that powerful, so a language where macros provide a lot of the power must be pretty weak”, are you calling that antimemetic?
I think the mental process you have in mind is different from both of those, because you’re taking “macro” to include e.g. C’s “if” and “for”, even though those aren’t implemented with any sort of macrology in C, so the reaction you’re describing is more like “these people say that in Lisp you can redefine the language itself, but that doesn’t make any sense”. Again I have no concrete evidence, but I don’t think that’s a common reaction. After all, C does have macros (of a sort) and you can use them to extend the language (kinda), and users of Ruby, which is at least mainstream-ish, are used to using and making what they call “domain-specific languages” within Ruby even though what you can do there is fairly restrictive compared with Lisp’s macros.
I think you’re overdramatizing how people react to Lisp. “Lisp is an antimeme!” makes a great story, but I don’t think it fits the evidence as well as “Lisp is unfamiliar in various ways, and people are bad at seeing the merits of unfamiliar things”.
… Again, unless that or something like it is actually all you mean by “antimeme”.
It seems, at least some of the time, as if you’re using the term to describe anything whose widespread appreciation is limited by the fact that widespread beliefs or habits of mind get in the way. (Assuming that programming languages can’t have adjustable syntax; seeing a clear boundary between one’s self and the rest of the universe; being willing to have a boss and do what they say.) With that definition, I’m still not sure Lisp counts (as I said above, I think there are other reasons why many programmers don’t use Lisp, and they aren’t all antimemetic even in this very broad sense), but there’s certainly a case to be made that it does—but to me, “antimeme” doesn’t seem like an appropriate term, for two reasons.
It implies that the offputting-ness lies primarily in the thing itself, when in fact it seems much better to see it as a property of the people being put off.
It makes “being an antimeme” sound like some exotic SCP-ish property, when in fact a large fraction of underappreciated things are “antimemes” in this sense.