On this blog we’ve talked about the imprecision of natural language and the problems it can present in drafting requirements. Forget requirements – what would you think of a tool that could turn natural language into software code? Sounds crazy, doesn’t it? Well, there is already such a tool in the works, although it’ll probably still be a while before they’ve ironed out all the wrinkles.
Writing software has been relatively difficult since people began programming computers in the mid-1900s. Although programming a computer is eminently useful — it gives you fine control of a powerful tool — it requires learning a programming language.
Researchers from the Massachusetts Institute of Technology are aiming to remove this requirement. They have taken a step toward that goal with a language-to-code visualizer dubbed Metafor.
The visualizer uses natural language instructions to sketch the outlines of a program. It can be used as a programming learning tool and to provide rough drafts of programming projects, and could lead to more complete programming-by-natural-language methods.
Formal computer programming languages are difficult to write and inflexible, said Hugo Liu, a researcher at the Massachusetts Institute of Technology. This makes them “quite a pain to debug and maintain,” he said. “Hence the task of programming is rendered inaccessible to the general public.”
Natural languages like English, on the other hand, are universally accessible, said Liu. “Natural language is so semantically rich and flexible that if it could be computationalized as a programming language, maybe everyone could write programs,” he said.
I love the idea. Imagine being able to “code” your own software if you could just articulate what you want in natural language. While the notion seems surprising, I suppose I’ve seen development tools trending this way for a while. I remember being on a project a while back that implemented a rules engine. The notion there was that the business wanted to be able to make changes to promotions and to product portfolios whenever they wanted to, and not to have to wait for a scheduled software release with all of its overhead. This package was to make it so a business owner could make these changes via a relatively simple user interface.
So, while there are obvious implications to software developers here, what do developments like this mean to the business analyst? How will these jobs be affected if/when the day arrives that any old Joe can develop applications? What do we need to do to ensure that our skills aren’t marginalized as new tools simplify what were previously complex tasks requiring specialized training?
I don’t claim to have the answers, but I suppose it is something we should all be considering. What are your thoughts on the tool? On it’s implications? What other revolutionary tools have you heard of that will soon change the way we solve business problems? As always, I’ll be interested in reading your comments.