ACM Home Page
Please provide us with feedback. Feedback
Programming languages for distributed computing systems
Full text PdfPdf (6.50 MB)
Source ACM Computing Surveys (CSUR) archive
Volume 21 ,  Issue 3  (September 1989) table of contents
Pages: 261 - 322  
Year of Publication: 1989
ISSN:0360-0300
Authors
Henri E. Bal  Vrije Univ., Amsterdam, The Netherlands
Jennifer G. Steiner  Open Software Foundation, Cambridge, MA
Andrew S. Tanenbaum  Vrije Univ., Amsterdam, The Netherlands
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 27,   Downloads (12 Months): 440,   Citation Count: 60
Additional Information:

abstract   references   cited by   index terms   review   collaborative colleagues   peer to peer  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/72551.72552
What is a DOI?

ABSTRACT

When distributed systems first appeared, they were programmed in traditional sequential languages, usually with the addition of a few library procedures for sending and receiving messages. As distributed applications became more commonplace and more sophisticated, this ad hoc approach became less satisfactory. Researchers all over the world began designing new programming languages specifically for implementing distributed applications. These languages and their history, their underlying principles, their design, and their use are the subject of this paper. We begin by giving our view of what a distributed system is, illustrating with examples to avoid confusion on this important and controversial point. We then describe the three main characteristics that distinguish distributed programming languages from traditional sequential languages, namely, how they deal with parallelism, communication, and partial failures. Finally, we discuss 15 representative distributed languages to give the flavor of each. These examples include languages based on message passing, rendezvous, remote procedure call, objects, and atomic transactions, as well as functional languages, logic languages, and distributed data structure languages. The paper concludes with a comprehensive bibliography listing over 200 papers on nearly 100 distributed programming languages.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
ABRAMSKY, S., AND BORNAT, R. 1983. Pascal-m: A language for loosely coupled distributed systems. In Distributed Computing Systems, Y. Paker and J.-P. Verjus, Eds. Academic Press, London, pp. 163-189.
 
2
ACKERMAN, W. B. 1982. Data flow languages. Computer 15, 2 (Feb.), 15-25.
 
3
ADAMO, j.-M. 1982. Pascal+CSP, merging Pascal and CSP in a parallel processing oriented language. In Proceedings of the 3rd International Conference on Distributed Computing Systems (Miami/Ft. Lauderdale, Fla., Oct. 18-22). IEEE, New York, pp. 542-547.
4
 
5
 
6
7
 
8
ALMES, G. T. 1986. The impact of language and system on remote procedure call design, in Proceedings of the 6th International Conference on Distributed Computing Systems (Cambridge, Mass., May 19-23). IEEE, New York, pp. 414-421.
 
9
ALMES, G. T., BLACK, A. P., LAZOWSKA, E. D., AND NOE, J. D. 1985. The Eden system: A technical review. IEEE Trans. Softw. Eng. SE-11, i (Jan.), 43-59.
10
 
11
12
 
13
ANDREWS, G. R., 1982. The distributed programming language SR--Mechanisms, design and implementation. Softw. Prac. Exper. 12, 8 (Aug.), 719-753.
 
14
ANDREWS, G. R., AND OLSSON, R. A. 1986. The evolution of the SR programming language. Distrib. Comput. 1, 3 (July), 133-149.
15
16
 
17
 
18
BAALBERGEN, E. H. 1988. Design and implementation of parallel make. Comput. Syst. 1, 2 (Spring), 135-158.
19
 
20
BAGRODIA, R., AND CHANDY, K. M. 1985. A microkernel for distributed applications. In Proceedings of the 5th International Conference on Distributed Computing Systems (Denver, Colo., May 13-17). IEEE, New York, pp. 140-149.
21
 
22
BAL, H. E. 1989. The shared data-object model as a paradigm for programming distributed systems. Ph.D. dissertation, Dept. of Mathematics and Computer Science, Vrije Universiteit, Amsterdam, the Netherlands.
 
23
BAL, H. E., AND TANENBAUM, A. S. 1988. Distributed programming with shared data. In Proceedings of the IEEE CS I988 International Conference on Computer Languages (Miami, Fla., Oct. 9-13). IEEE, New York, pp. 82-91.
 
24
BAL, H. $., VAN RENESSE, R., AND TANENBAUM, A. S. 1987. Implementing distributed algorithms using remote procedure calls. In Proceedings of the AFIPS National Computer Conference (Chicago, ill., June 15-18). AFIPS Press, Reston, Va., pp. 499-506.
25
26
27
28
29
30
 
31
BLACK, A. P., HUTCHINSON, N. C., McCORD, B. C., AND RAJ, R. K. 1984. EPL Programmer's Guide. Univ. of Washington, Seattle, June.
 
32
 
33
BLOCH, J. J. 1988. The Camelot library. In Guide to the Camelot Distributed Transaction Facility: Release 1, A. Z. Spector and K. R. Swedlow, Eds. Carnegie-Mellon University, Pittsburgh, Pc., pp. 29-62.
34
 
35
 
36
BRINCH HANSEN, P. 1975. The programming language concurrent pascal. IEEE Trans. Softw. Eng. SE-1, 2 (June), 199-207.
37
 
38
 
39
40
 
41
42
 
43
CARPENTER, B. E., AND CAILLIAU, R. 1984. Experience with remote procedure calls in a realtime control system. Softw. Pract. Exper. 14, 9 (Sept.), 901-907.
 
44
45
46
 
47
48
 
49
CLARK, K. L., AND GREGORY, S. 1985. Notes on the implementation of PARLOG. J. Logic Program. 2, 1 (Apr.), 17-42.
50
 
51
CLARK, K. L., MCCABE, F. G., AND GREGORY, S. 1982. IC-PROLOG language features. In Logic Programming, S.-A. Tarnlund, Ed. Academic Press, London, pp. 253-266.
 
52
CMELIK, R. F., 1986. Concurrent Make: The Design and Implementation of a Distributed Program in Concurrent C. AT&T Bell Laboratories, Murray Hill, N.J.
 
53
 
54
CMELiK, R. F., GEHANI, N. H., AND ROOME, W. D. 1987. Fault Tolerant Concurrent C: A Tool for Writing Fault Tolerant Distributed Programs. AT&T Bell Laboratories, Murray Hill, N.J.
 
55
 
56
COOK, R. P. 1980. *MOD--A language for distributed programming. IEEE Trans. Softw. Eng. SE- 6, 6 (Nov.), 563-571.
57
 
58
 
59
Cox, I. J., AND GEHANI, N. H. 1986. Concurrent programming and robotics. AT&T Bell Laboratories, Murray Hill, N.J.
 
60
CROOKES, D., AND ELDER, J. W. G. 1984. An experiment in language design for distributed systems. Softw. Pract. Exper. 14, 10 (Oct.), 957-971.
 
61
DANNENBERG, R. B. 1981. AMPL: Design, implementation and evaluation of a multiprocessing language. Carnegie-Mellon University. Pittsburgh, Pc.
 
62
DAVIS, A. L., AND ROBISON, S. V. 1985. The architecture of the FAIM-1 symbolic multiprocessing system. In 9th International Joint Conference on Artificial Intelligence (Los Angeles, Calif., Aug. 13-18). pp. 32-38.
 
63
 
64
DEPARTMENT OF DEFENSE, U.S. 1983. Reference manual for the Ada programming language. ANSI/MIL-STD-1815A, DoD,Washington, D.C., Jan.
 
65
66
 
67
EICHHOLZ, S. 1987. Parallel programming with ParMod. In Proceedings of the 1987 International Conference on Parallel Processing (St. Charles, Ill., Aug. 17-21). Penn State University, pp. 377-380.
 
68
ELRAD, T., AND MAYMIR-DUCHARME, F. 1986. Distributed languages design: Constructs for controlling preferences, in Proceedings of the 1986 International Conference on Parallel Processing (St. Charles, Ill., Aug. 19-22). Penn State University, pp. 176-183.
 
69
ERICSON, L. W. 1982. DPL-82: A language for distributed processing. In Proceedings of the 3rd International Conference on Distributed Computing Systems (Miami/Ft. Lauderdale, Fla., Oct.). pp. 526-531.
70
71
 
72
 
73
FORMAN, I. R. 1986. On the design of large distributed systems. In Proceedings of the IEEE CS 1986 International Conference on Computer Languages (Miami, Fla., Oct. 27-30). IEEE, New York, pp. 84-95.
 
74
FOSTER, I. 1988. Parallel implementation of PAR- LOG. In Proceedings of the International Conference on Parallel Processing ( Vol. II) (St. Charles, Ill., Aug. 15-19). Penn State University, pp. 9-16.
 
75
76
 
77
 
78
 
79
 
80
GEHANI, N. H. 1984b. Broadcasting sequential processes (BSP). IEEE Trans. Softw. Eng. SE-IO, 4 (July), 343-351.
 
81
GEHANI, N. H. 1987. Message Passing: Synchronous versus Asynchronous. AT&T Bell Laboratories, Murray Hill, N.J.
 
82
GEHANi, N. H., AND CARGILL, T. A. 1984. Concurrent programming in the Ada language: The polling bias. Softw. Pract. Exper. 14, 5 (May), 413-427.
 
83
 
84
Gr. HANI, N. H., AND ROOME, W. D. 1986b. Concurrent C++ : Concurrent Programming with Class(es). AT&T Bell Laboratories, Murray Hill, N.J.
 
85
 
86
 
87
GELERNTER, D. 1984. A note on systems programming in Concurrent Prolog. In Proceedings of the International Symposium on Logic Programming (Atlantic City, N.J., Feb. 6-9). IEEE, New York, pp. 76-82.
88
 
89
GELERNTER, D., AND CARRiERO, N. 1986. Linda on hypercube multicomputers. In Proceedings of the 1985 SIAM Conference (Knoxville, Tenn.). Society for Industrial and Applied Mathematics, Philadelphia, Pa., pp. 45-55.
90
91
92
93
 
94
 
95
96
 
97
98
99
100
 
101
HAMILTON, K. G. 1984. A remote procedure call system. Tech. Rep. 70, Ph.D. dissertation, Computer Laboratory, Univ. of Cambridge, Cambridge, U.K., Dec.
102
 
103
HEWITT, C. 1977. Viewing control structures as patterns of passing messages. Artif. Inte!l. 8, 3 (June), 323-364.
104
105
 
106
107
 
108
HOURI, A., AND SHAPIRO, E. 1986. A sequential abstract machine for Flat Concurrent Prolog. Rep. CS86-20, Dept. of Computer Science, The Weizmann Institute of Science, Rehovot, Israel, July.
 
109
 
110
111
 
112
113
 
114
 
115
 
116
 
117
 
118
JAZAYERI, M., GHEZZI, C., HOFFMAN, D., MIDDLE- TON, D., AND SMOTHERMAN, M. 1980. CSP/80: A language for communicating sequential processes. In Proceedings of IEEE COMPCON Fall 1980 (New York, Sept.). IEEE, New York, pp. 736-740.
119
120
 
121
JOUVELOT, P., AND GIFFORD, D. K. 1988. The FX- 87 interpreter. In Proceedings of the IEEE CS 1988 International Conference on Computer Languages (Miami, Fla., Oct. 9-13). IEEE, New York, pp. 65-72.
 
122
123
 
124
KAASHOEK, M. F., AND BAL, H. E. 1988. An evaluation of the distributed data structure paradigm in Linda. IR- 173, Dept. of Mathematics and Computer Science, Vrije Universiteit, Amsterdam, Dec.
125
 
126
VAN KATWIJK, J. VAN 1987. The Ada compiler. Ph.D. dissertation, Dept. of Mathematics and Computer Science, Delft Univ. of Technology, Delft, The Netherlands, Sept.
 
127
 
128
129
 
130
KOCH, A., ANO MAIB^UM, T. S. E. 1982. A message oriented language for system applications. In Proceedings of the 3rd International Conference on Distributed Computing Systems (Fort Lauderdale, Fla., Oct. 18-22). IEEE, New York, pp. 824-832.
 
131
 
132
 
133
KUNG, H. T. 1982. Why systolic architectures? Computer 15, 1 (Jan.), 37-46.
 
134
 
135
LEBLANC, R. J., AND MACCABE, A. B. 1982. The design of a programming language based on connectivity networks. In Proceedings of the 3rd international Conference on Distributed Computing Systems (Fort Lauderdale, Fla., Oct. 18-22). IEEE, New York, pp. 532-541.
 
136
LEBLANC, R. J., ^NO WILKES, T. 1985. Systems programming with objects and actions. In Proceedings of the 5th International Conference on Distributed Computing Systems (Denver, Colo., May 13-17). IEEE, New York, pp. 132-139.
137
 
138
LESSER, V., SERRAIN, D., AND BONAR, J. 1979. PCL--A process oriented job control language. In Proceedings of the 1st International Conference on Distributed Computing Systems (Huntsville, Ala., Oct. 1-5). IEEE, New York, pp. 315-329.
139
 
140
LI, C.-M., ^NO LIU, M. T. 1981. Dislang: A distributed programming language/system. In Proceedings of the 2nd International Conference on Distributed Computing Systems (Paris, France, Apr. 8-10). IEEE, New York, pp. 162-172.
141
 
142
143
 
144
LISKOV, B. 1982. On linguistic support for distributed programs. IEEE Trans. Softw. Eng. SE-8, 3 (May), 203-210.
 
145
LISKOV, B. 1984. Overview of the Argus language and system. Programming Methodology Group Memo 40, MIT Laboratory for Computer Science, Cambridge, Mass., Feb.
146
147
148
149
150
151
 
152
153
154
 
155
MAY, D., ^NO SHEPHERD, R. 1984. The transputer implementation of Occam. In Proceedings of the International Conference on Fifth Generation Computer Systems 1984 (Tokyo, Japan, Nov. 6-9), pp. 533-541.
 
156
MEHROTRA, P., AND ROSENDALE, J. VAN. 1985. The Blaze language: A parallel language for scientific programming. Parallel Comput. 5, 3 (Nov.), 339-361.
 
157
MIEROWSKY, C., TAYLOR, S., SHAPIRO, E., LEVY, J., ^NO SAFRA, M. 1985. The design and implementation of Flat Concurrent Prolog. Rep. CS85- 09, Dept. of Computer Science, The Weizmann Institute of Science, Rehovot, Israel, July.
158
 
159
 
160
 
161
 
162
 
163
NELSON, B. J. 1981. Remote procedure call. Rep. CMU-CS-81-119, Dept. of Computer Science, Carnegie-Mellon Univ., Pittsburgh, Pa., May.
 
164
NG, K.-W., AND LI, W. 1984. GDPL--A generalized distributed programming language. In Proceedings of the 4th International Conference on Distributed Computing Systems (San Francisco, Calif., May 14-18). IEEE, New York, pp. 69-78.
165
 
166
OGmARA, T., KAJmARA, Y., NACANO, S., AND ARI- SAWA, M. 1986. Concurrency introduction to an object-oriented language system ondine, in 3rd National Conference Record A-5-1. Japan Society for Software Science and Technology, Japan.
 
167
OHKI, M., TAKEUCHI, A., AND FURUKAWA, $. 1987. An object-oriented programming language based on the parallel logic programming language KL1. In Proceedings of the 4th International Conference on Logic Programming (Melbourne, Australia (May 25-29). MIT Press, Cambridge, Mass., pp. 894-909.
 
168
 
169
 
170
171
 
172
173
 
174
175
176
177
 
178
ROMAN, G.-C., CUNNINGHAM, H. C., AND EHLERS, M. E. 1988. A shared dataspace language supporting large-scale concurrency. In Proceedings of the 8th International Conference on Distributed Computing Systems (San Jose, Calif., June 13-17). iEEE, New York, pp. 265-272.
 
179
ROMAN, G.-C., EHLERS, M. E., CUNNINGHAM, H. C., AND LYKINS, R. H. 1987. Toward comprehensive specification of distributed systems. In Proceedings of the 7th International Conference on Distributed Computing Systems (Berlin, Sept. 21-25). IEEE, New York, pp. 282-289.
 
180
ROOMS, W. D. 1986. Discrete event simulation in Concurrent C. AT&T Bell Laboratories, Murray Hill, N.J.
 
181
ROPER, T. J., AND BARTER, J. 1981. A communicating sequential process language and implementation. Softw. Pract. Exper. 11, 11 (Nov.), 1215-1234.
182
 
183
SAFRA, S., AND SHAPIRO, E. 1986. Meta interpreters for real. In Proceedings of IFIP Congress '86 (Dublin, Ireland, Sept.). IFIP, pp. 271-278.
 
184
SATO, M. 1987. Quty: A concurrent language based on logic and function. In Proceedings of the 4th International Conference on Logic Programming (Melbourne, Australia, May 25-29). MIT Press, Cambridge, Mass., pp. 1034-1056.
 
185
 
186
SCOTT, M. L. 1986. The interface between distributed operating system and high-level programming language. In Proceedings of the 1,986 International Conference on Parallel Processing (St. Charles, Ill., Aug. 19-22). Penn State University, pp. 242-249.
 
187
 
188
ScoTT, M. L., AND COX, A. L. 1987. An empirical study of message-passing overhead, in Proceedings of the 7th International Conference on Distributed Computing Systems (Berlin, Sept. 21-25). IEEE, New York, pp. 536-543.
189
 
190
SHAPIRO, E. 1983. A subset of Concurrent Prolog and its interpreter. ICOT TR-003, Institute for New Generation Computer Technology, Tokyo, Japan, Feb.
 
191
SHAPIRO, E. 1984. Systolic programming: A paradigm of parallel processing. In Proceedings of International Conference on Fifth Generation Computer Systems 1984 (Tokyo, Japan, Nov. 6-9). pp. 458-471.
 
192
 
193
 
194
SHAPmO, E., AND MIr. ROWSI(~, C. 1984. Fair, biased, and self-balancing merge operators: Their specifications and implementation in Concurrent Prolog. J. New Generation Comput. 2, 3, 221-240.
 
195
 
196
SHAPIRO, E., AND TAKEUCHI, A. 1983. Object-oriented programming in Concurrent Prolog. J. New Generation Comput. 1, 1, 25-48.
 
197
SILBERSCHATZ, A. 1984. Cell: A distributed computing modularization concept. IEEE Trans. Softw. Eng. SE-iO, 2 (Mar.), 178-185.
 
198
SILVERMAN, W., HIRSCH, M., HOURI, A., AND SHAP- IRO, E. 1986. The Logix system user manual. Rep. CS86-21, Dept. of Computer Science, The Weizmann Institute of Science, Rehovot, Israel.
 
199
 
200
SMITH-THOMAS, B. 1986. Managing I/O in concurrent programming: The Concurrent C window manager. AT&T Bell Laboratories, Murray Hill, N.J.
 
201
SPECTOR, A. Z., BLOCH, J. J., DANIELS, D. S., DRAVES, R. P., DUCHAMP, D., EPPINGER, J. L., MENEES, S. G., AND THOMPSON, D. S. 1986. The Camelot project. Rep. CMU-CS-86- 166, Dept. of Computer Science, Carnegie-Mellon Univ., Pittsburgh, Pa., Nov.
 
202
STAUNSTRUP, J. 1982. Message passing communication versus procedure call communication. Softw. Pract. Exper. 12, 3, (March) 223-234.
203
204
 
205
 
206
STROM, R. E., AND YEMINI, S. 1985a. Synthesizing distributed and parallel programs through optimistic transformations. In Proceedings of the 1985 International Conference on Parallel Processing (St. Charles, Ill. Aug. 20-23). Penn State University, pp. 632-641.
207
 
208
209
 
210
 
211
SUGIMOTO, $., AGUSA, K., TABATA, K., AND OHNO, Y. 1983. A multi-processor system for Concurrent Lisp. In Proceedings of the 1983 International Conference On Parallel Processing (Bellaire, Mich.). pp. 135-143.
212
 
213
TAKEUCHI, A., AND FURUKAWA, K. 1985. Bounded buffer communication in Concurrent Prolog. J. New Generation Comput. 3, 2, 145-155.
 
214
 
215
216
 
217
TANENBAUM, A. $., AND VAN RENESSE, R. 1988. A critique of the remote procedure call paradigm. In Proceedings of the E UTECO 88 Conference (Vienna, Austria, Apr. 20-22). North-Holland, Amsterdam, pp. 775-783.
218
 
219
 
220
221
 
222
TSUJINO, Y., ANDO, M., ARAKI, Z., AND TOKURA, N. 1984. Concurrent C: A programming language for distributed systems. Softw. Pract. Exper. 14, 11 (Nov.), 1061-1078.
 
223
UEDA, K. 1985. Guarded Horn clauses. ICOT TR- 103, Institute for New Generation Computer Technology, Tokyo, Japan, June.
 
224
VISHNUBHOTIA, P. 1988. Synchronization and scheduling in ALPS objects. In Proceedings of the 8th International Conference on Distributed Computing Systems (San Jose, Calif., June 13-19). IEEE, New York, pp. 256-264.
225
 
226
VAN WIJNGAARDEN, A., MAILLOUX, B. J., PECK, J. E. L., NOSTER, C. H. A., SINTZOFF, M., LINDSEY, C. H., MEERTENS, L. G. L. T., AND FISKER, R. G. 1975. Revised report on the algorithmic language Algol 68. Acta Inf. 5, 1-236.
 
227
WILKES, C. W., AND LEBLANC, R. J. 1986. Rationale for the design of Aeolus: A systems programming language for an action/object system. In Proceedings of the IEEE CS 1986 International Conference on Computer Languages (Miami, Fla., Oct.). IEEE, New York, pp. 107-122.
 
228
WILKES, C. T., AND LEBLANC, R. J. 1988. Distributed locking: A mechanism for constructing highly available objects. In Proceedings of the 7th Symposium on Reliable Distributed Systems (Columbus, Ohio, Oct. 10-12). IEEE, New York.
 
229
WIRTH, N. 1971. The programming language Pascal. Acta inf. 1, 35-63.
 
230
 
231
 
232
 
233
YEMINI, S. 1982. On the suitability of Ada multitasking for expressing parallel algorithms. In Proceedings of the AdaTec Conference on Ada (Arlington, Va., Oct. 6-8). ACM, New York, pp. 91-97.
234
 
235
236
237
 
238

CITED BY  60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


REVIEW

"Kathleen H. V. Booth : Reviewer"

In general, a distributed computing system is one in which more than one computer collaborates in the implementation of a calculation. In this excellent paper, the authors first suggest a more precise definition of such systems, since no consens  more...

Collaborative Colleagues:
Henri E. Bal: colleagues
Jennifer G. Steiner: colleagues
Andrew S. Tanenbaum: colleagues

Peer to Peer - Readers of this Article have also read: