My dispute with Wesner Moise continues…
I’m going to take this post with good humor — the “werewolf” being a reference to the question of a silver bullet and an image in one of my responses. And the “naked, pale-skinned” thing I’ll take as pure jealousy of my chiseled physique, descended from Irish kings, tanned in the warm glow of the tropical sun, and followed, wherever I travel, by the wistful sighs of desirous women.
What we’re arguing about is whether there is any:
single development, in either technology or in management technique, that by itself promises even one order-of-magnitude improvement in productivity, in reliability, in simplicity.
This is how Fred Brooks defined the Silver Bullet for Software Engineering. In particular, Wes champions functional programming as a candidate.
My side of the original spat were these three posts in early December. In mid-January, we disagreed as to whether a 14-line Python recursive descent parser and Microsoft’s implementation of regular expressions had any relevance to the question.
Now, he’s posted something that’s either just an ad hominem attack or a response. I’ll take it as a response.
Wes says that I’m “wedded to the idea of no silver bullet.” Not so. I’m not emotionally committed to it. I’m just convinced, absent substantive evidence to the contrary, by the arguments that Brook made two decades ago and which have held since. I’m aware that this places me in what Kuhn would label the “dominant paradigm” and sets me up to be pushed aside by some revolution. But they’ll need more than mere assertions of merit to sweep me away: the werewolf hunters are going to have to ship commercial- and enterprise-sized applications that are developed an order-of-magnitude faster and that, to date, seems to be a sticking point.
Further, let’s be clear that I’m a fan of functional programming: ref. this post preceding the spat in which I praise Wes’s advocacy or re-read any of my posts in this spat, in which I regularly make it clear that I like functional programming approaches and am only skeptical of the hyperbole that it is a silver bullet.
The RegEx parser was held out as a template for a silver bullet approach. I pointed out that it’s capabilities are vastly different than what we mean by RegEx capabilities in a language. The example is, in fact, a perfect example of Brook’s central argument:
the hard part of building software [is] the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation.
This was lost on Wes, who said:
[W]ith this approach, we can get a reasonable implementation of regular expressions over lists of arbitrary types in less than 200 lines of code, which is two orders of magnitude more concise than Microsoft’s more specific implementation over strings. I’ll produce a port of this one day and post it in my blog.
So there’s a testable claim: a program that clones Microsoft’s RegEx implementation including time and space constraints. I doubt it can be done in 200 lines of code. I doubt that “testing the fidelity of the representation” can be done in an additional 200 lines of code. But perhaps someone will prove me wrong.
Wes invokes Charles Simonyi and IntentSoft as perhaps the company that will deliver the silver bullet. I hope he’s right. Simonyi is a fracking genius and is absolutely credible. However, surely it’s fair to point out that IntentSoft has been in business for 5 years without shipping a product and Simonyi was talking about intentional programming for years before the company incorporated. Whatever the ultimate benefits of intentional programming, there appears to have been difficulty boot-strapping themselves into silver bullet productivity.