Recently, I wrote a post about Message Passing Interface:
I used to pass message between agents in my example of a web crawler:
The passing of messages between components, agents, objects, is a feature that deserves more study. I guess we could write new kinds of applications, using one-way message passing, so we could abandon the call-a-method current way of doing things. Let’s explore first, some message passing applications (not only one-way style).
In the Wikipedia entry about Message Passing:
we can read Alan Kay opinion:
If you develop systems with Smalltalk, Self or alikes, you’ll notice that the message is a first citizen, in many implementations, a full object, not only a way of call a method.
There is another place for use message passing. For 25 years, QNX operating systems uses the message passing paradigm to run a real time kernel.
I found this interview at Dr. Dobb’s to Sebastien Marineau-Mes, VP of engeneering at QNX:
Sebastien talks about the use of QNX in current market, and the challenge that multi-core machine could create on legacy code.
Remember: all the QNX kernel is based on message passing, although its messages are not one-way, and the passing is optimized to not incurr in loss of performance (more details, see QNX at Wikipedia). I see that many of these challenges and opportunities could be translated to the use, not only to multi-core, but to “multi-machines” in a grid. There many forces that are conspiring to bring these topics to current arena:
- We have a better understanding of agents, message passing and other ideas
- Normal hardware is cheap
- Each year, there are more application with higher level needs of scalabity (the user base will be the whole Internet in the near future, for non-trivial app)
- Many application must interact with other application in the same enterprise or in the net, and messages are an effective way to do that.
- In order to face that challenges, we must begin to abandon n-tier-only apps, to a cloud, grid or “something alike” schema.
I could imagine languages and technologies, based on message passing features. That is one of the reasons I’ve been involved exploring simples and crazy ideas with AjMessages, AjAgents, and Distributed Software Services during last months. I hope to write more about these subjects:
- Another example of distributed agents using DSS/VPL
- AjMessages ported to DSS (I had an implementation last year, but I never published it, I published the WCF only version)
- One-way messages implemented as primitives in AjTalk (Smalltalk-like interpreter)
- Deferred/Concurrent/LazyEvaluation/SomethingAlike implemented in AjBasic (using CCR?)
- Blog about a better-finished app running in a grid of DSS hosts (my team was working hard on this, last months).
Incidentally, you can read more about use cases applied in the real world using CCR/DDS, in Arvindra Sehmi’s post:
So many ideas…. only one life…. Should I begin to parallized myself? ajlopez-in-a-grid…. ;-)
Angel “Java” Lopez