I want to propose a three point Manifesto that Governs the Communication between a Computer and its Programmer.
The Manifesto reads as follows:
We can use the same technology to think of the error message generated by a computer language interpreter, along with the line of code containing the error, as the "source" language, and the natural language description of the error message as the "target" language.
This is the present error message of a Python interpreter in response to a fragment of Python code:
The idea is not necessarily to replace the error message or stack trace of the interpreter, but possibly to supplement it with a message in natural language.
You can see a more complete list of such message pairs at this link: Present and Correct Message Pairs. And the underlying input-output encoding that constitutes the technology of the neural network is given at this link: The Input and Output Encodings of the Neural Network.
This project is a work in progress. In the first iteration, we will only use the information present in the line in which the error occurs to translate the error message. This, I believe, can be handled by a vanilla Recurrent Neural Network. Later on, we may use information from the surrounding lines of code, which, in a more advanced form, would be handled by a variation on a vanilla Recurrent Neural Network called a "Bidirectional LSTM Network".
The primary challenge in this project is to put together the training data that will be used to train the neural network, and I am still searching for a clever way to do it which does not make it necessary to hand-write all the message pairs.