I posted some of this in the comments on a blog, but I figured some programmers here might be interested too.
Bill Gates has an article about robots, in a recent “Scientific American”. He talks about the infantile state of robotics-related software. This article is probably part of a campaign related to Microsofts’s Robotics Studio.Gates speaks of the need for standardization and the need for a different programming style (one that makes it easier to handle great concurrency).
In essence, what’s required to get robotic software going is some level of standardization at a “BIOS and OS” level. Just as we can program to a keyboard, mouse, etc. someone needs to abstract out the devices: sensors and motors and provide an interface that allows people to discover device properties (from among a std. set for that device-type) and program to that standard API.
I think Gates is on the right track about concurrency if one views concurrency not so much as a timing speed issue, but more of an issue of “programming metaphor”. I think the type of programming metaphor that will end up being the best starting point is one where we have “Event Listener” for the various sensors, with the Listener events triggering various responses. It might also be helpful to layer this over some type state-transition. So, a programming language that makes it easy to declare states and state-transitions (either by the language, or by an add-on library) could be helpful.