Via lambda.weblogs.com kreeg ik een linkje naar het stuk "Can Programming be Liberated from the von Neumann Style?" van John Backus. Vreemd genoeg had ik dit stuk nog nooit gelezen, dus dat ben ik maar eens gaan doen.
De opening van dit stuk (uit 1977) vond ik buitengewoon lachwekkend, maar eigenlijk ook zeer triest: het is zo enorm actueel! Ik quote even de stukken die voor het meeste vermaak zorgen, maar uiteraard moet je het even helemaal lezen
.
Hier kerken je visie aan
: bijna 30 jaar geleden zo exact schrijven over de huidige stand van zaken
. Hierbij vergeleken was George Orwell toch wel een enorme prutser
.
De opening van dit stuk (uit 1977) vond ik buitengewoon lachwekkend, maar eigenlijk ook zeer triest: het is zo enorm actueel! Ik quote even de stukken die voor het meeste vermaak zorgen, maar uiteraard moet je het even helemaal lezen
Als dit nu gepubliceerd zou zijn, zou ik zo geloven dat het gebaseerd is op de huidige stand van zaken in de wereld van de programmeertalen: de (discussies over) irrelevant details, de enorme language specifications (neem bijvoorbeeld eens die van Java, C# of C++) enz enz. Het is even de vraag wat er ongelofelijk is: het feit dat er niet erg veel verbeterd is sinds 1977, of de zeer scherpe analyse die Backus in 1977 maakte.Conventional programming languages are growing ever more enormous, but not stronger. Inherent defects at the most basic level cause them to be both fat and weak: their primitive word-at-a-time style of programming inherited from their common ancestor the von Neumann computer, their close coupling of semantics to state transitions, their division of programming into a world of expressions and a world of statements, their inability to effectively use powerful combining forms for building new programs from existing ones, and their lack of useful mathematical properties for reasoning about programs.
Programming languages appear to be in trouble. Each successive language incorporates, with a little cleaning up, all the features of its predecessors plus a few more. Some languages have manuals exceeding 500 pages; others cram a complex description into shorter manuals by using dense formalisms. The Department of Defense has current plans for a committee-designed language standard that could require a manual as long as 1,000 pages. Each new language claims new and fashionable features, such as strong typing or structured control statements, but the plain fact is that few lan- guages make programming sufficiently cheaper or more reliable to justify the cost of producing and learning to use them.
Since large increases in size bring only small increases in power, smaller, more elegant languages such as Pascal continue to be popular. But there is a desperate need for a powerful methodology to help us think about programs, and no conventional language even begins to meet that need. In fact, conventional languages create unnecessary confusion in the way we think about programs.
For twenty years programming languages have been steadily progressing toward their present condition of obesity; as a result, the study and invention of programming languages has lost much of its excitement. Instead, it is now the province of those who prefer to work with thick compendia of details rather than wrestle with new ideas. Discussions about programming languages often resemble medieval debates about the number of angels that can dance on the head of a pin instead of exciting contests between fundamentally differing concepts.
Many creative computer scientists have retreated from inventing languages to inventing tools for describing them. Unfortunately, they have been largely content to apply their elegant new tools to studying the warts and moles of existing languages. After examining the appalling type structure of conventional languages, using the elegant tools developed by Dana Scott, it is surprising that so many of us remain passively content with that structure instead of energetically searching for new ones. The purpose of this article is twofold; first, to suggest that basic defects in the framework of conventional languages make their expressive weakness and their cancerous growth inevitable, and second, to suggest some alternate avenues of exploration toward the design of new kinds of languages.
Hier kerken je visie aan
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment