Can A Programming Language Be Too Powerful?

After writing my post on Emacs and Igors, I reread Rudolf Winestock’s The Lisp Curse that Done mentioned in his article on why Emacs users are like the Igors. Winestock’s article, in turn, mentioned another that I’ve also read before, Mark Tarver’s The Bipolar Lisp Programmer. It’s been many years since I’ve read either and I was very resistant to The Bipolar Lisp Programmer the first time I read it so I probably didn’t get as much out of it as I should have. On rereading them, I have to admit that they have a point.

That brings us to the title of today’s post. According to Betteridge’s Law the answer should be no but Winestock and Tarver make the case that Lisp is so powerful that its practitioners and their community are harmed. That’s a provocative claim so it’s worth taking a look at why Winestock and Tarver think it’s true.

The first question to consider is whether it’s true that one reasonable1 language can be more powerful than another. You might think that maybe the differences aren’t all that pronounced but Winestock suggests a thought experiment. Take the two languages C and Scheme, neither of which have object support, and consider how hard it would be to implement objects while maintaining backward compatibility with the original language. As Winestock says, it’s little more than a homework assignment for Scheme but takes significant programming chops to do it in C. So, okay, Lisp does seem more powerful in many ways.

But why would that be harmful? The problem according to Winestock is that every programmer “does it himself” and you end up with lots of implementations of whatever feature is being added none of which are entirely satisfactory to anyone but the implementer. That leads to programmer isolation and, often, the lack of standard implementations of many features.

Tarver takes this idea a bit further and says that the power of Lisp is especially harmful to a certain type of programmer that he describes as having a brilliant bipolar mind. His argument is a bit nuanced and you should read his article to appreciate it fully. In fact, read both articles. They’re thought provoking and interesting. Especially if you’re a Lisper.

Footnotes:

1

We’re not talking, for instance, about whether C is more powerful than, say, the original BASIC.

This entry was posted in General and tagged . Bookmark the permalink.