The laws of unintended consequences seem to live in computer science and software development. Most good software products seem to wind up being used in unexpected ways. More than that one thing seems to always lead to another and not always in expected directions.
For example start with XNA Game Studio Express. It was designed to let hobbyists create their own video games for the Xbox 360 and for Windows PCs. It does that very well. And then other people with other ideas started looking at it as a tool for other things. For example there is a research project called Boku that is creating a 3D game that allows very young students to create computer programs. XNA GSE was a natural choice for this development.
Less obvious perhaps was the use of XNA GSE to create the virtual world/simulator system for Microsoft Robotics Studio. I should mention that the MSRS team just announced (here on their blog) the latest technical preview of their work with lots of new features. Well what’s the next step here?
Aside from a simulation package the Robotics Studio had to deal with some serious technical issues around concurrent operations. On a robot a lot of things often have to happen at once. An article by Mary Jo Foley quotes Tandy Trower, the head of the MSRS team:
Businesses have discovered that the Microsoft Robotics Studio includes technology that is suited for programming multicore, distributed systems. Specifically, businesses are quite interested in the concurrency and coordination (CCR) and decentralized software services (DSS) runtimes that are currently embedded in the robotics toolkit, Trower said. These runtimes are part of the evolving multicore/distributed programming model into which Microsoft and other tech vendors starting to plow lots of money and development work.
So what we have is that some software for game development allowed the robotics team to get some things done much easier so that they could focus their energies on other, very complicated, problems. Not many systems work in a vacuum these days and all the good projects build on the work of others.
One last comment, dealing with multicore systems and handling concurrency are some of the big issues in computer science today. They are going to become more and more important as time goes on. Students today will want to be familiar with at least the vocabulary of the problems.