[erlang-questions] Erlang and Ada

Ramon Diaz-Uriarte <>
Mon Apr 2 11:45:42 CEST 2007

On 4/2/07, ok <> wrote:
> 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
> only";
> my mistake was thinking that Annex E was one of the "informative"
> annexes.
> In fact Annex is is "Normative", and "Annexes A to J form an integral
> part
> 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
> reader
> (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
> can
> 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
> and
> 'Body_Version attributes that you can use to detect when update would
> hhave
> been necessary.  These things change whenever there is a semantically
> significant change, EXCEPT that
>         This International Standard does not define ... "semantically
>         significant".
> 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.)
> >

Thanks _a lot_ for the detailed and exhaustive search into the issue
and for your answer. Now I think I understand the issue and what it
really means when it says Ada allows for distributed computing.

(This still leaves open the question of why its so hard to find
statements like this in other places. I mean, comparisons of Ada and
Erlang in the realm of concurrency and distributed computing. But that
is a completely different question).

> > 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
> them...)

Ooops, I've used Scheme a little bit and Python quite a bit. I think
its time for me to go and learn what the things I use can really do
before talking :-).

Thanks again for your clarifications.



> _______________________________________________
> erlang-questions mailing list
> http://www.erlang.org/mailman/listinfo/erlang-questions

Ramon Diaz-Uriarte
Statistical Computing Team
Structural Biology and Biocomputing Programme
Spanish National Cancer Centre (CNIO)

More information about the erlang-questions mailing list