"Real Artists Ship"

Colin Johnson’s blog


Life After Programming

What will eventually replace programming? As computing technology gets more advanced, will there be a point at which (most) tasks that are currently carried out by programming get carried out by some other method? I can think of two inter-related ideas.

The first is that more-and-more of the tasks that we currently do by programming get done by some kind of machine learning, some kind of abstraction from examples. We are already beginning to see this. Take, for example, the FlashFill feature in Microsoft Excel. This is a system where you highlight a number of columns, and then fill in a further column with examples of the calculation/transformation that you want to see achieved. As you fill in examples, a machine learning algorithm works behind the scene to learn a macro that matches the examples, and fills in the remaining columns automatically. If there are still errors, you can keep on feeding it more examples until it works. What is the analogy of this in other areas (e.g. database report generation)?

The second is that code generation becomes so good that we don’t program any more, we just give specifications, test cases etc. and the programs “write themselves”. We are unlikely to see this happen wholesale. But, it should be possible using current technologies to create an additional kind of tab in an IDE—not one that contains user-written code, but one that contains examples, and the code to realise them gets generated behind the scenes with machine learning and data mining from vast code-bases.

A lot of work in machine learning of programs has foundered on the problem of “how do you specify a whole system so that it can be learned”. We might eventually get there, but I thing we are more likely to see more fine-grained gains at the method/function/transformation level first.

Of course, there is still a need for some programming in these scenarios. But, it would play the role rather that operating systems, or firmware, plays to the average programmer these days—usually something that you don’t have to explicitly worry about at all.

Leave a Reply