Will we never program in plain English, even with AI?
This post is kind of an ellaboration of some things in this article by Ben Kehoe.
The most commonly accepted definition of a program is a sequence of instructions that we write for a machine to execute. These instructions have to be specific enough to remove any ambiguity from them. Programming languages evolved to allow precise instructions at different levels of abstraction.
If you ignore programming languages and attempt to instruct a machine with plain English, you’ll quickly realise how absolutely impossible this is. Plain English is just too ambiguous to work for any kind of precise instruction.
We’ve figured that out already a long time ago when writing laws, and now we write them in a language that is currently so divorced from plain English that essentially everyone has trouble reading law text. We needed to make law text more specific, but we weren’t yet smart enough to understand we needed a different language for that (law text predates computing by quite some time).
So, any person who says that anyone will be able to program computers with AI by instructing them in English has no idea what they’re talking about. Computers, at a lower level, still need precise instructions to do any work. This will always be the case as long as we have computers like the ones we have today. Any attempt to use plain English to program computers will quickly turn into its own language, which can either retain some sanity by going in the direction of a programming language, or become a monstrosity like modern law text.
What will happen, however, is that we will definitely set goals in plain English with AI. And something else will figure out specific instructions to achieve that goal. They may also accomplish other goals that were unintended, and this is something that might still be solved through a slightly specific language, which is a higher level from plain programming languages, but is also not at the level of plain English. It won’t be programming, and we won’t be using programming languages as we know them for this particular task.
Even we as programmers have languages that are more like goal-setting rather than instructing, but we still call them programming languages, even though they’re also at a higher level from plain programming languages.
We will either evolve our definition of what programming is to include goal-setting, and create a different term for current-world programming, or we’ll go the other way around and create a new term for this mix of goal-setting and instructing. I bet we’ll do the latter, since we have decades of content/books/experience/whatever about “normal programming”, and it’s easier to come with a new term rather than repurpose an existing one.
So no, I don’t think we’ll ever program in plain English. We’ll do something similar, but it will be with a more structured language, and solving different problems than programming languages solve today.