Smart guy joins Microsoft, film at 11.
Peter Drayton, who’s written some of the better stuff about REST and SOAP has taken a job at Microsoft as a Program Manager in the Common Language Runtime group. Reading the job description, which Peter called his “dream job” in a blog entry at the time, reveals a fundamental strength in Microsoft’s approach to advancing the .NET platform.
Microsoft will make available “resources for a technology transfer team that can help move features that have proven useful to the research community and internal compiler teams into [the CLR].” Technology transfer is a huge (or, at least, significant) problem in Computer Science. Take concurrent programming, which is currently in the same place that memory management was a decade ago: popularly thought to be a fundamental challenge. If you asked the average programmer in 1992 about garbage collection, they would have confidently stated that GC involved the freezing of all memory manipulation, couldn’t deal with cycles, etc. But if you asked people in the small commercial LISP business, they’d assert that GC was essentially a solved problem. (In 1992, I was simultaneously editor of Computer Language and AI Expert magazines and GC was the subject of many conversations.)
The release of Java in 1995 ended the debate about garbage collection, not by making any fundamental contribution to the state-of-the-art, but by transferring an academically known solution into a generally-useful language. No one wrote their PhD thesis on Java’s GC and no LISP hacker was surprised to find out that productivity increased, but the general programming community was astonished.
So it used to be that “memory management is fundamentally difficult” was the shibboleth; nowadays, it’s “multithreaded programming is fundamentally difficult.” And, to be sure, the concurrent programming model (note the singular!) exposed by Java and .NET does make it easy to deadlock and race and all that bad stuff. Meanwhile, there are academics who would say that multithreaded programming is, perhaps not “solved,” but certainly made much easier by such things as Communicating Sequential Processes (Google search or the original paper here) or the Calculus of Communicating Systems (Google search).
But even very useful programming models do not transfer into the general programming community as long as they are only external and optionally layered on top of an existing, available, and visible inferior model. There were garbage collectors for C and C++, but it took an infrastructure change to transfer an acceptance of GC into the general programming community. Similarly, there are libraries for CSP for Java, but no one’s heard of them. And improving the infrastructure of concurrent programming in Java doesn’t make money for anyone, so instead of getting a fundamental advance, you get the very top-heavy EJB solution and the JCP process.
Compare that to Microsoft’s model, which is to give someone the job of finding and facilitating the transfer of useful technologies into the infrastructure of the .NET platform. CSP is well-thought-out at a formal level, but is it generally useful and accessible to, say, a person coming from a Visual Basic background? (As opposed to, say, Z Notation, which is well-thought-out at a formal level, but would not make most programmers more productive.) The questions of general useability and accessibility are not of interest to academics but are, of course, the most important questions at a practical level. In Thinking in C# (you didn’t think I’d write this much without a plug did you? Why don’t you pre-order it now?), I say “.NET’s value proposition of ‘Any language, one platform,’ makes it fertile ground for new approaches to programming. Additionally, the .NET Framework Library contains classes beyond the scope of this book for emitting code, dynamic compilation, and programmatic type extension; .NET is potentially the most significant contribution to the development of new computer languages in 25 years. That would be nice; the rise of object-oriented imperative languages has had important benefits (the patterns movement could not have happened without the widespread adoption of the vocabulary of objects) but there has been a loss of awareness of the diversity and potential of alternate paradigms. Aspect-orientation, declarative, functional, and data-flow programming all have things to offer us today, and these are just some obvious areas. Hopefully, the commercial use of .NET will not blind visionaries to the value of the .NET infrastructure for research and development of programming technology. ”
This role and its being filled by Peter, known smart guy, makes it all the more likely that the .NET platform will be increasingly superior to alternatives over time.