[erlang-questions] Erlang and Ada

Mon Apr 2 05:19:31 CEST 2007

I wrote:
>> 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
noticed.  However,
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  
part of"
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

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  
nothing in
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 mailing list