I love computer languages. In fact, I’ve spent roughly half my life nurturing one particular very rich computer language: Mathematica.
But do we really need computer languages to tell our computers what to do? Why can’t we just use natural human languages, like English, instead?
If you’d asked me a few years ago, I would have said it was hopeless. That perhaps one could make toy examples, but that ultimately natural language just wouldn’t be up to the task of creating useful programs.
But then along came Wolfram|Alpha. In which we’ve been able to make free-form linguistics work vastly better than I ever thought possible.
But still, in Wolfram|Alpha the input is essentially just set up to request knowledge—and Wolfram|Alpha responds by computing and presenting whatever knowledge is requested. But programming is different. It is not about generating static knowledge, but about generating programs that can take a range of inputs, and dynamically perform operations.
So the first question is: how might we represent these programs?