WRITING software is a painstaking business in which you can't afford
to slip up: get a single character wrong and the instructions either
do nothing or go horribly wrong. In one infamous software error, a misplaced
minus sign resulted in a fighter jet's control system flipping the aircraft
on its back whenever it crossed the equator.
Now a new system that takes the drudgery—and some of the potential
for slip-ups—out of programming is about to be launched. Its inventor
hopes it will one day turn us all into programmers.
Bob Brennan. a software engineer at Cambridge-based start-up Synapse
Solutions, has developed a piece of software that allows you to write
a program by keying in what you want it to do in everyday language.
Dubbed Mi-Tech—short for machine intelligence technology—the
software translates a typed wish list into machine code, the basic mathematical
language understood by the microprocessors inside computers. But this
is no easy task, because everyday language is riddled with ambiguities
and double meanings. "Mi-Tech can resolve these ambiguities,"
claims Brennan, because it has been taught about the significance of
context in the English language.
At the heart of Mi-Tech is a store of logical rules. These allow it
to extract instructions from statements in ordinary language, which
it then translates into machine code. In its present form, Mi-Tech has
a limited lexicon of only a few hundred words, but Brennan claims this
is sufficient for most of the tasks you might ask it to carry out.
Brennan says his program can write code in a fraction of the time that
it takes trained programmers. He spent months writing a program manually,
producing hundreds of pages of code. But given "just three pages
of monologue", Mi-Tech generated a program that performed exactly
the same tasks.
Vikram Adve, a programming-language researcher at the University of
Illinois at Urbana-Champaign remains sceptical. "Every programming
language that I have heard of has a well-defined syntax and well-defined
semantics," he says. And for a very good reason: all programming
languages operate on instruction compilers and hardware that are essentially
dumb. "Neither can really interpret the intention of the programmer,"
says Adve. So programming languages are deliberately designed to be
unambiguous to avoid confusion.
Brennan agrees that previously this required strict syntax. "The
problem before was that computers couldn't cope with ambiguities, but
now they can," he says. Mi-Tech's small lexicon means there is
less room for confusion. And if it's unsure of your meaning, Mi-Tech
will just say it doesn't understand.
Brennan is not going into any detail about how the system works until
his patents are granted. But he hopes to be licensing his program to
software companies within 18 months so that they can build it into their
own packages. If that happens, you might well be able to add programs
of your own design to your PC—without knowing how to code.