Phil Wainewright points to a News.com interview with Charles Simonyi of Intentional Software. “Simonyi’s notion of pushing programming upstream is a PowerPoint-like design tool that allows stakeholders to describe an application in their own terms and then hand it off to the programmers to write a ‘generator’ to produce the machine-readable code. His company will develop tools, taking advantage of recent innovations in aspect-oriented development, design patterns, model-integrated computing and other programming methods.” Excerpts from the interview:
Now, we have three Moore’s Laws–one in processors, one in memory and one in bandwidth. Software is the opposite. We don’t celebrate Moore’s law; we commiserate over the continuing software crisis. That’s why I always say that software is the bottleneck on the digital horn of plenty. It’s so obvious that there is a giant gap between the processing capabilities of the machine compared to actual services it provides.
For the sake of argument, assume that we would ask the subject matter experts to write a nice PowerPoint presentation and give it to programmers so they can write the software. That would be a very modest improvement over current practices, which insist that the contributions of subject matter experts are organized in a decent way.
Our proposal goes further. We don’t ask the programmers just to read the presentation and write a program. We’ll ask the programmer to write a program that reads the presentation and writes the program. We are making a little twist to our request to the programmer: Don’t convert the design into a program by hand, write a generator to write the program. We will be actively supporting the process by giving the subject matter experts a CAD (computer-aided design)-like program that the generator can read its input from and process it easily and without loss of information.
Another way to think about it is that the programmers you would have employed anyway to solve your problem are now creating a domain-specific language for your problem. Programmers will admit that every big program is a language on its own. Microsoft Word is written in C++, for example, but if you want to work on it your colleagues won’t just ask if you know C++. Knowing C++ will get you 1 percent of the way toward learning about how Microsoft Word works. The other 99 percent is to learn all about Word’s procedures, services and data structures, which all have names, relationships, internal logic and a kind of syntax.
The programmers are subject matter experts in how to turn designs that are not computer specific into a software program. Value semantics, variables, states or decision tables, sequential and parallel logic–all of those computer science ideas are part of their expertise. The design has to be expressed in those ideas to run on a computer.