[comp.parallel] Existing Concurrent Languages and Systems

ssmith@rhumba.mpr.ca (Shaun Smith) (06/08/90)

Hi,

     I'm a graduate student attempting to get a clear idea of how to
program a MIMD machine.  What I'm trying to do is find out what
languages (research and commercial) and support systems (OS) currently
exist for programming this class of machine.

     I'm aware of a few languages, such as Strand (a commercial parallel
logic language), Occam, and CST (Concurrent Smalltalk) but I don't know
much about any of them.  Can others contribute to this list?

     I think it would be interesting to create a table of languages like
the table that existed in comp.lang.misc in the recent past.  That table
consisted of a language and its underlying central concept.  Agreement
on the underlying central concept of any particular language was
controversal of course.


| Language | Hardware Platform(s)   | Underlying Central Concept | Status
|----------|------------------------|----------------------------|------------
|Strand    |Sun network             |Logic-based                 | Commercial
|          |Transputers w/ Helios OS|(similar to a stripped down |
|          |Meiko Computing Surface | version of flat concurrent |
|          |                        | prolog)                    |
|----------|------------------------|----------------------------|------------
|CST       |Jellbean Machine        |Concurrent communicating    | Research
|          |(no shared memory)      |objects.  Distributed ob-   |
|          |                        |jects (one object on more   |
|          |                        |than one cpu)               |

If I'm wrong in what I've stated, please correct me.  Any other contributions?

   Shaun

Shaun M. Smith                  | ssmith@joplin.mpr.ca
MPR Teltech Ltd.                | joplin.mpr.ca!ssmith@uunet.uu.net
8999 Nelson Way, Burnaby, BC    | ssmith%joplin.mpr.ca@relay.ubc.ca
Canada, V5A 4B5, (604) 293-5345 | ...!ubc-vision!joplinmpr.ca!ssmith

eugene@wilbur.nas.nasa.gov (Eugene N. Miya) (06/08/90)

If you are a grad student, then should not your advisor be teaching you
about bibliographic systems for research?  ;^)

Have you heard of ACM Computing Surveys?  A good journal. (usually)

Tables like yours have been published.  Below the references are offered
in the order they appear in press.  You should probably read the
references in reverse order, but it doesn't matter.  There are a
staggering number of systems out there.

The authors deserve some credit as some of them helped on these.

--e. nobuo miya, NASA Ames Research Center, eugene@orville.nas.nasa.gov
  {uunet,mailrus,other gateways}!ames!eugene

%A Henri E. Bal
%A Jennifer G. Steiner
%A Andrew S. Tanenbaum
%T Programming Languages for Distributed Computing Systems
%J ACM Computing Surveys
%V 21
%N 3
%D September 1989
%P 261-322
%K special issue on programming language paradigms,
%K Categories and Subject Descriptors:
C.2.4 [Computer-Communications Networks]: Distributed Systems -
distributed applications; D.1.3 [Programming Techniques]:
Concurrent Programming; D.3.3 [Programming Languages]:
Language constructs - concurrent programming structures;
D.4.7 [Operating Systems]: Organization and Design -
distributed systems
General Terms: Languages, Design
Additional Key Words and Phrases: Distributed data structures,
distributed languages, distributed programming,
functional programming, languages for distributed programming,
languages for parallel programming, logic programming,
object-oriented programming, parallel programming,
%X Not a great survey, but a good one.  It does not mention issues closer
to what people think as operating system issues.  But, it represents a
good reference point with all these languages [a few of which I've
never heard]:
ABCL/1, Act 1, Ada, Aeolus, ALPS, AMPL, Argus, Avalon, Blaze, BNR Pascal,
BRAVE, Camelot Library, Cantor, [Concurrent CSP] CCSP, [Xerox] Cedar,
CLIX, Cluster 86, CMAY, Concurrent C [2], Concurrent CLU, Concurrent LISP,
Concurrent PROLOG, Concurrent Smalltalk, CONIC, CSM, CSP-S, CSP/80,
CSP, CSPS, CSSA, Delta PROLOG, Dislang, Distributed Smalltalk,
DP, DPL-82, ECSP, Emerald, EPL, FRANK, FX-87, GDPL, GHC, GYPSY, Hybrid,
Joyce, LADY, LIMP, Linda, Lisptalk, LYNX, MC, Mandala, Mentat, MENYMA/S,
Multilisp, NIL, Oc, Occam, OIL, Ondine, Orca, Orient84/K, P*, P-PROLOG,
ParAlfl, PARLOG, ParMod, Pascal+CSP, Pascal-FC, Pascal-m, PCL,
Planet, Platon, PLITS, PML, POOL, Port Language, Pronet, Quty, QLISP,
Raddle, RBCSP, Relational Language, SDL, SINA, Sloop, SR, StarMod,
Symmetric LISP, Vulcan, ZENO.
It still lacks, but it depends on the definition of a distributed language.
No mention of atomicity.

%A Nicholas Carriero
%A David Gelernter
%T How to Write Parallel Programs: A Guide to the Perplexed
%J ACM Computing Surveys
%V 21
%N 3
%D September 1989
%P 323-357
%K special issue on programming language paradigms,
%K Categories and Subject Descriptors:
D.1.3 [Programming Techniques]: Concurrent Programming;
D.3.2 [Programming Languages]: Language classifications -
parallel languages; D.3.3 [Programming Languages]:
Language constructs - concurrent programming structures;
E.1.m [Data Structures]: Miscellaneous -
distributed data structures; live data structures;
General Terms: Algorithms, Program Design, Languages,
Additional Key Words and Phrases: Linda,
parallel programming methodology, parallelism,
%X From page: 326:
It is nonetheless a subtle but essential point that these approaches
represent three clearly separate ways of thinking about the problem:
Result parallelism focuses on the shape of the finished product;
specialist parallelism focuses on the makeup of the work crew; and
agenda parallelism focuses on the list of tasks to be performed.
Also the terms: message-passing, distributed data structures or
live data structures.  Notes that it does not deal with data parallelism
(ala CM) nor speculative parallelism (OR-parallelism).  Tries to be
practical, but it does admit distributed programs are harder and more
complex.

%A Paul Hudak
%Z Yale
%T Conception, Evolution, and Application of Functional
Programming Languages
%J ACM Computing Surveys
%V 21
%N 3
%D September 1989
%P 359-411
%K special issue on programming language paradigms,
%K Categories and Subject Descriptors:
D.1.1 [Programming Techniques]:
Applicative (Functional) Programming;
D.3.2 [Programming Languages]: Language classifications -
applicative languages; data-flow languages;
non-procedural languages; very-high-level languages;
F.4.1 [Mathematical Logic and Formal Languages]:
Mathematical Logic - lambda calculus and related systems;
K.2 [History of Computing]: software
General Terms: Languages,
Additional Key Words and Phrases: Data abstraction,
higher-order functions, lazy evaluation, referential transparency,
types, Lambda Calculus, Lisp, Iswim, APL, FP, FL, ML, SASL, KRC, Miranda,
Haskell, Hope, denotative [declarative] language,
%X This is the second paper in the special issue which has a section on
non-determinism [along with Bal, et al] which begins with a statement
which would sound bizarre to non-programmers or those not familiar
with the issues of determinacy.

%A Ehud Shapiro
%Z Weizmann Inst.
%T The Family of Concurrent Logic Programming Languages
%J ACM Computing Surveys
%V 21
%N 3
%D September 1989
%P 413-510
%K special issue on programming language paradigms,
%K Categories and Subject Descriptors:
D.1.3 [Programming Techniques]: Concurrent Programming;
D.3.3 [Programming Languages]: Language classification -
ALPS, Concurrent Prolog, Doc, FCP, guarded Horn Clauses, P-prolog,
PARLOG; D.3.3 [Programming Languages]: Language Constructs -
concurrent programming structures; D.4.1 [Operating Systems]:
Process management - concurrency, mutual exclusion,
synchronization; F.1.2 [Computation by Abstract Devices]:
Modes of Computation - parallelism;
F.3.2 [Logics and Meanings of Programs]:
Semantics of Programming Languages - operational semantics;
F.4.1 [Mathematical Logic and Formal Languages]:
Mathematical Logic - logic programming;
General Terms: Languages,
Additional Key Words and Phrases: Atomic unification,
computational replay, distributed detection, incomplete messages,
indeterminism, input matching, language embedding, logic variable,
metainterpretation, process structures, short-circuit, snapshots,
streams, transformational  vs. reactive languages,
don't-know and don't-care [latter called indeterminism] non-determinism,
%X One of the best subsections and a reference [paper] is entitled
"X = X Considered Harmful" from a Japanese paper not likely to be
seen by many in the West [for the Doc, distributed Oc, language].
Almost as good as Backus' von Neumann liberation Turing lecture (1978).
Programming language types will understand the title.

%A Charles E. McDowell
%A David P. Helmbold
%Z UC Santa Cruz
%T Debugging Concurrent Programs
%J ACM Computing Surveys
%V 21
%N 4
%D December 1989
%P 593-622
%K Categories and Subject Descriptors:
A.1 [General Literature]: Introductory and Survey;
D.1.3 [Programming Techniques]: Concurrent Programming;
D.2.4 [Software Engineering]: Program Verification --assertion checkers,
D.2.5 [Software Engineering]: Testing and Debugging -- debugging aids,
diagnostics, monitors, symbolic execution, tracing
Additional Key Words and Phrases: Distributed computing, event history,
nondeterminism, parallel processing, probe-effect, program replay,
program visualization, static analysis,
Agora, Amoeba, belvedere, BUGNET, CBUG, cdbg, dbxtool, defence, DISDEB,
EDL, HARD, IDD, Instant, Jade, MAD, Meglos, mtdbx, Multibug, Parasight,
pdbx, Pilgram, PPD, RADAR, Recap, Traveler, TSL, Voyeur, YODA,
%X Good tables surveying the field in the Appendix.  Thanks Charlie.