Concurrency, was Re: Doh! Stupid Programming Mistakes <humor>
levi at cold.org
Fri Oct 27 15:13:53 MDT 2006
On Oct 27, 2006, at 2:10 PM, Bryan Sant wrote:
> This is what J2EE set out to solve for the masses. With the original
> J2EE systems, things were complex, but the hope was to encapsulate a
> uniform way to work with local and remote objects (among other
> things). I've always found this to be a worthy and interesting goal.
> Enterprise Java Beans (EJBs) could be configured as a local or remote
> resource, and their role could be easily switched. Remote
> communication could be done with a messaging protocol (which would
> work similar to MPI), or with RMI (actually RMI-IIOP, which is
> actually CORBA).
> The new JEE 1.5 specification has really simplified things compared to
> prior J2EE complexity evilness. You just add one-liner annotations to
> your plain-jane objects, which gives your JEE container clues about
> what services you want that object surrounded with.
> Whether you like or hate the implementation specifics of JEE, I still
> think the concept is cool. Distributed computing is neato.
I don't know the implementation specifics of J2EE to know how I like
them, at least aside from their reputation of being rather complex.
The name 'Enterprise Java Bean' itself leaves a bad taste in my
mouth; it's entirely free of content and sounds like it was contrived
by a marketing guy who thought he was really clever. But that's
beside the point. I should probably look into them at some point,
especially if the complexity has decreased.
Distributed computing is indeed pretty cool, and it's still a very
open research area. I had a fun conversation with Peter Van Roy
about it after his BYU Colloquium presentation; I wanted him to give
his talk on distributed computing, but everyone else wanted his talk
on CS education. I didn't have any insights to contribute during our
conversation, and I'm sure I didn't get but a small fraction of what
he has to say out of him, but he did spark my interest in distributed
computing and the issues involved.
Some platforms of interest for their ideas relating to distributed
computing are Erlang, E (erights.org), the Mozart Programming System,
and Inferno/Limbo. Also interesting are the Linda extensions for C,
Prolog, Java, etc.
There are also many formal systems that have been developed for
reasoning about concurrent systems such as Petri Nets, Communicating
Sequential Processes, Pi Calculus, the Actor Model, and probably more
that I'm forgetting right now. As formal systems, they're not
immediately practical, but many software models can and have been
built around them, and software based on formal systems has the
advantage of having at least some aspects of its execution provably
correct (or at least consistent with the model).
This is something I'd really like to dig into, if I had time.
Unfortunately, most of what I know about the above topics are that
they exist and look interesting. :)
: Peter Van Roy is co-author of Concepts, Techniques, and Models
of Computer Programming (http://mitpress.mit.edu/catalog/item/
default.asp?ttype=2&tid=10142), a fairly new textbook that aims to be
a comprehensive introduction to computer programming from a computer
science perspective. He also actively researches logic programming
and distributed programming, largely within the Mozart programming
More information about the PLUG