PDC 2008: Toolkit for asynchronous programming emerges from robotics
On Wednesday at PDC, research took center stage, as the company took time to show off its virtual telescope and its experimental engineering projects. But one of these projects is something that applies to big business, not just laboratories.
LOS ANGELES - You might think that a real-world implementation of something that emerged from a project at the Robotics division of Microsoft Research would have something to do with, perhaps, just maybe, a robot. But one of the big surprises at this year's PDC was the emergence of a runtime toolkit for enterprise software developers that ostensibly enables a new -- or, more accurately, unimplemented -- method for dealing with very large scale tasks and problem-solving, that's directly inspired by the way Microsoft is programming robots to deal with complex tasks dynamically.
It's called the Concurrency & Coordination Runtime and Decentralized Software Services Toolkit (CCR and DSS), which in a more IBM-like fashion truly does say what the product is and does. It enables a methodology for delegating processing tasks to thousands of servers simultaneously -- especially in virtual environments -- using asynchronous scheduling.
When a nationwide or international business deals with a huge business task -- the handling of millions of simultaneous messages, the scheduling of worldwide shipments, the organization of countless business transactions -- typical software is only capable of handling the procedures implied by that task linearly, in a step-by-step fashion. Parallelism may enable some degree of multithreading, but even that becomes clustered when the problem scales upward to thousands of parallel processes.
Meanwhile, in the theoretical realm of robots, not only is research being done into how multiple autonomous agents can solve a problem cooperatively, but how individual autonomous agents react to unforeseen situations dynamically. Both concepts involve asynchronous scheduling, in which a procedure delegates a job to a plurality of simultaneous processes, but rather than wait for the results like a step in a long sequence, proceeds to go about its business until the results can be returned.
And almost like planning a military operation, asynchronous programming using CCR and DSS is failure tolerant. Some processes seeking a solution may fail; it's the others that don't which count.
BetaNews spoke at length with Tandy Trower of Microsoft Robotics and George Chrysanthakopoulos, CCR and DSS' principal developer. As they told us, CCR and DSS are actually relatively lightweight programming libraries -- they don't add much to your code from a lexical standpoint. They do, however, change the basic concept of your programs completely, in that you can list and delegate tasks to be performed without having to manage the sequence of that operation directly. Simply delegate the functions, then evaluate the results once they come back.
I say "simply," but the truth is, there's a lot of conceptual background to this system. We'll present our in-depth interview with Chrysanthakopoulos and Trower, not only on CCR and DSS but also about Microsoft Robotics and the nature of problem-solving programming, next week in BetaNews.