Structural Programming and Rational Metaprogramming

I keep trying to put extensible programming aside, but it just won’t let me let go. (Yes, I know, the eighties want their lyrics back…) Most recently, Michael Feathers posted this piece about what he calls structural programming. As he says:

A structural program (or program snippet) is a program that is essentially a data structure on a page. The structure both dominates and conveys the semantics.

I realized years ago that this was the real difference between agile languages (like Python and Scheme) and sturdy ones (like C++ and Java): the former let you type in your data structures pretty much verbatim, and allows those data structures to include functions as easily as integers and strings. As a result, you really can work in the Turing Paradise in which programs are data and vice versa.

What’s holding us back now is our unwillingness to do more than overload operators. I can, if I try very hard, abuse this to create a mini-language that lets me type in things that look like decision tables—but Alan help me when I have to debug it. There’s a ton of good research waiting to happen here, and dozens of innovative products waiting to be built…

Coincidentally, I just saw a post from Diomidis Spinellis about rational metaprogramming. It has to lie at the heart of any extensible programming system; there are some interesting comments around his article that are worth following up.

In the wake of posts about Shopify's support for white nationalists and DataCamp's attempts to cover up sexual harassment
I have had to disable comments on this blog. Please email me if you'd like to get in touch.