I helped to initiate the model driven development discussion at the Object Management Group in 1994 when we produced the first round-trip engineering business object design tool at Easel Corporation. The Rational product manager was a friend of mine and he repeatedly showed me his demoes of Rational Rose as he tried to emulate us. My technical lead eventually became the director of the Rational Rose development team.
Simonyi, one of the richest men in the world, has left Microsoft and started a company to get serious about this. This is the guy that gave us Word and Excel so we probably shouldn't underestimate him.
Everyone's a Programmer
Software is collapsing under the weight of its own complexity. Charles Simonyi’s solution? Programming tools that are so simple that even laypeople can use them.
By Claire Tristram
MIT Technology Review, November 2003
Programming In Pictures
When you ask Simonyi to explain just how the dronelike parts of programming might be automated, eliminating bugs caused by human error, he will tell you a story about jet engines.
“Think about the turbine blades,” he says. “They have to be perfect. If you were to use the most meticulous craftsman to make them, you still wouldn’t get anywhere near the degree of accuracy you need. You need to create a machine to make the blades. Are humans involved in the process? Of course. You need them to build the machine, and to maintain it and adjust it. Can machines fail? You bet! But they fail in a disastrous way, and you can see it right away and can fix it. It’s the same thing with code! You don’t want humans to touch it. It will have bugs in it! Can humans do something? Yes. They can build the machine.”
What, exactly, would a machine for writing software look like? It would itself be software. But its function would not be to solve the end problem—to perform some new home or office task. Rather, it would be a software “generator,” causing a particular piece of software to be written. Telling the generator what program to write would be accomplished through an easy-to-understand interface, sometimes referred to as a “modeling language.”
The most widely adopted modeling language today is the Unified Modeling Language, which evolved from work Booch and fellow programmers James Rumbaugh and Ivar Jacobsen did at Rational Software—and which is now being developed by the open-source software community under the stewardship of IBM and the other members of an industry consortium called the Object Management Group. The Unified Modeling Language is a system for creating diagrams. It’s intended to let managers of large software projects visualize their designs and make sure they meet the clients’ requirements before programmers sit down to write code in programming languages such as Java or C++.
Simonyi’s vision, and the reason he started his company, is to take the idea of models and go one step further: to link the model and the programming so tightly that they eventually become the same. Programmers and users will be able to switch between many contrasting views of the model they are creating, and revise programs at will simply by tweaking the models (see “Just-in-Time Programming,” below). It’s something like an architect being able to draw a blueprint that has the magical property of building the structure it depicts—and even, should the blueprint be amended, rebuilding the structure anew.