Computers writing their own software: according to Martin Vechev, Professor of Computer Science at ETH Zürich, that’s definitely not science fiction. Vechev is one of the founders of a field of research in which computer scientists aim to largely automate the programming process. In the foreseeable future, all “ordinary” programmers will be able to program at the same skill level as the best experts, thanks to assistants that offload much of the programming effort.

This is made possible by combining machine learning with existing enormous public software databases. These databases contain millions of programs comprising many billion lines of code – what Vechev calls “Big Code.”

Computers can recognize patterns in this existing code and learn which patterns are used in specific contexts. That way they can learn the meaning of the code and the rules governing its use. This is more or less comparable to how translation programs like Google Translate analyzes words in their context in order to derive the meaning and the usage rules.

Future programming assistants might work in the same way as the autocomplete functions that help us write text messages on our smartphones. For example, the programmer could write the first hundred or so lines of code, and then the assistant would propose a possible continuation which the programmer could accept or reject.

The core element of this sort of assistant is a probability model constructed on the basis of a large number of existing programs and code fragments. The model is then used to suggest a continuation to the code generated by the programmer. Vechev and his team have already developed assistants of this sort, such as the freely available online programs JS Nice and APK Deguard. They help users test their code and show them options for improving their software.