[erlang-questions] Erlang and Ada
Mon Apr 2 05:19:31 CEST 2007
>> However, I can certainly assure you that there is nothing in any
>> of the
>> previous Ada standards concerning distribution. Ada was designed
>> to be
This was far too strong, and I was hoping to fix this up before anyone
On 2 Apr 2007, at 4:43 am, Ramon Diaz-Uriarte wrote:
> Aha, I see. You obviously know this stuff, so I won't argue, but I
> thought in Appendix E (for Ada 95) there was some stuff related
> to/relevant for distribution.
It's "Annex" E, and its title is "Distributed Systems".
I had made a serious mistake. Annexes K to P "are for information
my mistake was thinking that Annex E was one of the "informative"
In fact Annex is is "Normative", and "Annexes A to J form an integral
of this international standard", so distribution *IS* "an integral
Ada 95. (It made sense for distribution to be optional, given that many
of the systems on which one would want to use Ada couldn't make use of
distribution facilities. But that's not the way the real world is.)
One is left wondering why "integral parts" are split off as "annexes"
rather than "chapters". However, annexes C to H are the "Specialized
Needs" annexes, which again strongly suggests to the feeble-minded
(ME) that they are not required of all systems. Chapter 10, which says
An implementation may provide inter-partition communication
mechanism(s) via special packages and pragmas. ... If no such
mechanisms are provided, then each partition is isolated from
all others, and behaves as a program in and of itself.
does not encourage the reader to believe that distribution facilities
be relied on to be present.
What is quite clear is that Annex E itself says that
The implementation shall provide means for explicitly assigning
library units to a partition and for the configuring and
execution of a program consisting of multiple partitions on a
distributed system; THE MEANS ARE IMPLEMENTATION-DEFINED.
That is, there is no *standard* way to say what the distribution of an
Ada program actually *is* nor to cause a distributed Ada program to run.
... the scheduling policies, treatment of priorities, and
management of shared resources between [...] partitions [that
are mapped onto the same node] are IMPLEMENTATION-DEFINED.
Ada 95 distribution does not handle update, but does provide 'Version
'Body_Version attributes that you can use to detect when update would
been necessary. These things change whenever there is a semantically
significant change, EXCEPT that
This International Standard does not define ... "semantically
Let me characterise Ada 95 distribution this way:
Ada 95 provides language means for specifying a program that *MAY*
be distributed, but not means for specifying that it *MUST* be
distributed, nor any way for saying *HOW* it is distributed.
The summary of the summary is
There is a reliable way for an Erlang program to say "I want to run
<this> over <there>." There is no portable way for an Ada program
to do that.
And from my point of view, that amounts to saying that there is
Ada 95 that I can recognise as useful distribution. (Not to mention the
fact that an Ada 95 implementation is only required to make distribution
work between identical machines.)
> OK, I see. I never paid too much attention to these issues since
> neither make a whole lot of difference for my current projects (or,
> I've never programmed in a language that allows "hot loading", so
> maybe I have no idea what I've been missing).
Lisp, Smalltalk, Prolog, TCL, Python (I think). We are even seeing
C systems with "fix and continue" in the debugger (not that I trust
More information about the erlang-questions