[erlang-questions] Erlang and Ada
Ulf Wiger (TN/EAB)
Thu Mar 29 12:47:44 CEST 2007
One missing detail in your list is that Erlang
lacks global variables, while Ada has them.
Erlang thus consistently employs "share-nothing
concurrency", while this is optional in Ada. This
is one of the fundamental reasons why you have
distribution transparency fairly routinely in
Erlang, while it is by no means given in e.g.
In the very early history of Erlang, a study called
SPOTS (SPC* for POTS**) was done. It involved writing
a phone switch control system in several different
languages. The project was sketched by Mike Williams
back in 1981, and carried out, as I understand it,
1982-1984. It involved experiments using e.g.
CHILL, Ada, Concurrent Euclid, CCS, LPL, Frames,
CLU and OPS4 - i.e. imperative declarative, object-
oriented and rule-based programming environments.
A report was presented at:
"Experiments with Programming Languages and Techniques
for Telecommunications Applications"
(Bjarne Däcker, Nabiel Elshiewy, Per Hedeland,
Carl Wilhelm Welin and Mike Williams)
Software Engineering for Telecommunication
Switching Systems, April 14-18, 1996, Eindhoven
I'm sure it's difficult to come by, in electronic
form or otherwise.
Back in those days, it was by no means easy to
circumvent the synchonous nature of Ada's
rendezvous, but I think I recall that Ada got
pretty favourable reviews overall. I've often
heard the comment that it wouldn't have been
half bad if industry had chosen to standardize
Back in 1996, I also heard of a project sponsored by
the Swedish Defense Industry, leading to a Master's
"Process-based Simulation of Interactive Agents in a Dynamic Terrain."
It was a troop simulation program, which was supposed to
have been written in Ada, but was never finished. A few
students wrote it in Erlang in a few weeks. I've read the
report once, but don't recall whether it contains any
comparisons between Erlang and Ada. I also recall hearing
that much attention at the demo was paid to the graphical
user interface, so the reasons why the Ada project didn't
succeed may well have very little to do with language-
* SPC = Stored Program Controller
** POTS = Plain Ordinary Telephone System
*** I recall a similar project where a contractor was to
build a prototype system for tracking vehicles as
overlays on digital maps. They couldn't handle a
live feed, but did have cute animated helicopters,
and were embarrassed that the helicopter flew upside-
down when going in the other direction. The organization
that ordered the work escorted them to the airport and
told them never to come back.
> -----Original Message-----
> From: erlang-questions-bounces@REDACTED
> [mailto:erlang-questions-bounces@REDACTED] On Behalf Of
> Ramon Diaz-Uriarte
> Sent: den 29 mars 2007 12:00
> To: erlang-questions@REDACTED
> Subject: [erlang-questions] Erlang and Ada
> Dear All,
> I was looking for a comparison of Erlang with Ada and could
> find very little (I searched comp.lang.ada, the erlang list,
> and lambda the ultimate, and did a variety of goodle
> searches). I understand that the two languages have different
> origins and have been mainly applied in different areas
> (telecom --Erlang-- vs. aviation and military --Ada).
> But it seems both are unique among "major languages" in the
> support they provide for concurrent and distributed
> programming using message passing. Why, then, so few
> comparisons among the two?
> In case it is relevant for anyone, I found the following
> masters thesis (?)
> "Comparison of the Concurrency Concepts of Ada, CHILL,
> Erlang, and Java" by Frank Ecke
> interesting in that regard (there is another one by P.
> Brömel, but being in German is inaccessible to me).
> If I understand correctly from the docs of each of the
> languages, etc, the main differences between the two (besides
> the difference in dynamic and functional (Erlang) vs. statics
> and imperative (Ada)) are:
> - Erlang uses asynchronous message passing, whereas Ada uses
> synchronous message passing. However, as F. Ecke shows above,
> it is possible to "trick" both languages into doing
> synchronous (Erlang) and asynchronous (Ada) without much trouble.
> - The concurrency and distributed computing aspects of Erlang
> emphasize fault tolerance.
> - Whether you use multiple Erlang processes within a machine
> or over several machines (e.g., a cluster) is generally
> transparent (i.e., code to cover these situations and things
> in between does not require rewriting).
> (Sure, there are many other differences from syntax to
> interpreter to libraries, etc).
> Am I missing something obvious?
> Ramon Diaz-Uriarte
> Statistical Computing Team
> Structural Biology and Biocomputing Programme Spanish
> National Cancer Centre (CNIO) http://ligarto.org/rdiaz
> erlang-questions mailing list
More information about the erlang-questions