While reading about concurrency revolution over at Wes' weblog, I was reminded how many times what appears to be a new and completely original design/achievement is in reality only a variation of a known theme.
In this particular case, Wes is discussing (among other things) Microsoft Research approach to concurrency in the experimental language COmega and finds that it relies on asynchronous message-passing rather than synchronous method calls.
At first, this sounded like a great and completely new idea in the field of language design. But then I remembered a chat I had with a friend recently where he mentioned how Erlang (Ericsson's own language design) does not have threads, but very cheap "processes" that rely on asynchronous message passing (from Erlang whitepaper):
Concurrency - Erlang has extremely lightweight processes whose memory requirements can vary dynamically. Processes have no shared memory and communicate by asynchronous message passing. Erlang supports applications with very large numbers of concurrent processes. No requirements for concurrency are placed on the host operating system.
This does not mean that Microsoft research ideas are just a rehash of a known concept. Bringing the above into a mainstream language like C# or VB.NET is a very hard task in and of itself. In fact, many of the features in a modern language like C# existed for quite some time before in languages like Python, Ruby, Smalltalk, and even Haskell. What Microsoft gave us was great integration with the rest of the language and more importantly all new features work well with the existing .NET Framework Class Library. Let's hope that the same happens with new concurrency patterns...
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5