The July-August issue of American Scientist is just up on the Web. My Computing Science column in the new issue is a grumpy, ill-tempered diatribe about the overproliferation of programming languages—and about the grumpy and ill-tempered bickering between advocates of various languages, which often sounds to me like the posturing of TV wrestlers promoting their next slamfest. Do we really have to come to blows over Python vs. Perl?
Shortly after the issue went to press, I discovered a recent article that I wish I’d seen sooner, because it so perfectly captures the mood I was trying to convey. The article is by Niklaus Wirth, who has contributed his fair share of the world’s programming languages, including Pascal, the Modula series and Oberon. Wirth’s article, which appears in IEEE Computer (Vol. 39, No. 1, pp. 28–39, January 2006), bears the curious title “Good Ideas, through the Looking Glass.” I’m not sure exactly how to parse those words. Do good ideas, when seen in the mirror, become bad ideas? Depends on the mirror, I guess. For what it’s worth, most of the ideas on Wirth’s list—especially in the realm of programming languages—are things he considers mistakes. He mentions such classics as the goto statement and the dangling-else problem, and he mocks the terse syntax of C and its offspring: x+++++y+1==++x+++y.
Wirth does not spare himself—although some of his criticism is strangely third-personal. “Pascal’s designer,” writes Pascal’s designer, “retained the goto statement as well as the if statement without a closing end symbol. Apparently, he lacked the courage to break with convention and made wrong concessions to traditionalists. But that was in 1968. By now, almost everybody understands the problem except for the designers of the latest commercial programming languages, such as C#.” Wow, he’s got ’em up against the turnbuckles in a hammerlock.