
Screenshot from a CMUX workspace; left hand side me speaking to the agent: “im not even sure what to look at” - to which it responds: “Let me just point at them directly - I’ll outline both titles in the live browser and screenshot”; right hand side, it, helpfully, highlighting the relevant element in the context of a browser window of the running application
So this is what happened to me the other day. Doing a PR review. Trying to fumble my way in, and my masterful prompt “im not even sure what to look at” getting insta-rewarded with that “blows my mind” moment.
Upon later consideration (and after I shared that success story) I was going to add, “hard to believe that it has come to this. That this is how I program now”.
Which reminded me that I still wanted to give the following a closer read: On the foolishness of “natural language programming”, by Edsger W.Dijkstra (of shortest-path-algorithm fame), which you can find here.
This was written in 1978 and, while surely interesting, my takeaway is that I think what he had in mind were surely algorithms. Programming back then seemed to be pretty much centred around relatively small chunks of code (if I may overgeneralise a bit). So his argument was something like symbolic notation is perfectly unambiguous, language isn’t. And while we might imagine that the rather taxing act of programming could be alleviated if we just could “tell the computer”, this comes at a price: it leaves room for errors — the kind only a being equipped with reason can spot.
The problem is, requirements for computer programs have vastly outgrown the “sort me a list” phase. I mean: in every slightly more complex program that is not mathematics-shaped from the outset, an act of translation from natural language into symbolic language is necessary. We call that requirements engineering and it can be frustrating. But there’s no way around it. Programming, in that conception, is literally disambiguation. But disambiguation does not mean that there is a straightforward, that is, in itself unambiguous, path.
Seen through to its logical conclusion, it seems that virtually all programming is natural language programming.