Com S 541 -- Programming Languages I Handed out: Mar. 5, 1993 HOMEWORK 12: Designing a Distributed Programming Language Due: March 29, 1993 This is a group project. You are to work in the large groups and produce a group report. Read chapter 11 in Watt's Programming Language Concepts and Paradigms. Read the paper on SR and perhaps some other references about SR. Read Liskov and Weihl, ``Specification of Distributed Programs'', Distributed Computing Vol. 1, pages 102-108, 1986. You are to design a distributed programming language based on SR that supports the design method for distributed programs described by Liskov and Weihl and discussed in class. The language should be as close to the syntax of SR as you can make it, and should be no larger than SR itself. You are to accept the sequential aspects of SR without change. Make whatever additions and deletions you think appropriate to the concurrent part of SR. Your report should have the following sections. 1. Introduction. Describe in general terms the goals of your language design, the specific solutions you have picked, the reasons for these, language solves, the differences from SR, and the reasons for these differences. 2. Concepts. Define as precisely as you can any special concepts and terms used in the description of the language. Such concepts would be specific to distributed programming. Concepts such as call-by-value, which we have studied already should be assumed. 3. Report. Using the grammar of your language as an organizing tool (see the Algol 60 report, the Scheme Report, or appendix B of Watt's Syntax and Semantics book for examples), for each feature of the distributed part of your language: give the syntax (formally), semantics (in English, but being as precise as possible), and some examples. 4. Extended Example. Write a realistic distributed program using your language that shows off the features of your language related to your goals. (Carefully check the syntax of this program against your grammar.) Explain the program and how it demonstrates the features of your language. 5. Discussion and Evaluation. Discuss how well your language met your goals, what its shortcomings are, what tradeoffs you had to make in its design, how it compares with SR and other relevant languages. You can add other discussion topics. SUGGESTIONS Don't just have one person take each section of the report! Try to reach consensus on each issue; don't vote; work on problems until a clear right answer emerges, or until it's clear you're making an arbitrary choice (or until the deadline forces a choice). Start with goals, and an example problem that would, if solved, demonstrate those goals. Work out the example program(s) and then iterate between it and the grammar. Then start doing the report, and watch for concepts that you need to describe certain features. Compare with other languages. Iterate until (just before) the due date. Although you shouldn't copy other language designs wholesale, you may use them for ideas and even syntax. All such uses of other languages should be cited properly. OTHER REFERENCES Guy T. Almes and Andrew P. Black and Edward D. Lazowska and Jerre D. Noe, ``The Eden System: A Technical Review'', IEEE Transactions on Software Engineering, Vol. SE--11, Num. 1 (Jan., 1985), pages 43-58. Gregory R. Andrews and Fred B. Schneider, ``Concepts and Notations for Concurrent Programming'', ACM Computing Surveys, Vol. 15, Num. 1 (Mar., 1983), pages 3-43. Andrew Black, Norman Hutchinson, Eric Jul, Henry Levy, and Larry Carter, ``Distribution and Abstract Types in Emerald'', IEEE Transactions on Software Engineering, Vol. SE-13, Num. 1 (Jan., 1987), pages 65-76. Per Brinch Hansen, ``Distributed Processes: A Concurrent Programming Concept'', Communications of the ACM, Vol. 21, Num. 11 (Nov., 1978), pages 934-941. B. W. Lampson (ed.), ``Distributed Systems--Architecture and Implementation'', Springer-Verlag, 1981, (LNCS, Vol. 105). Barbara Liskov and Robert Scheifler, ``Guardians and Actions: Linguistic Support for Robust, Distributed Programs'', ACM TOPLAS, Vol. 5, Num. 3 (Jul., 1983), pages 381-404. B. Liskov, ``On Linguistic Support for Distributed Programs'', in Proceedings Symposium on Reliability in Distributed Software and Database Systems, Pittsburgh, Jul., 1981, pages 53-60. Barbara Liskov, Maurice Herlihy, and Lucy Gilbert, ``Limitations of Synchronous Communication with Static Process Structure in Languages for Distributed Computation'', in Conference Record of the Thirteenth Annual ACM Symposium on Principles of Programming Languages, St. Petersburg Beach, Florida, ACM, Jan., 1986, pages 150-159. Michael L. Scott, ``Language Support for Loosely Coupled Distributed Programs'', IEEE Transactions on Software Engineering, Vol. SE-13, Num. 1 (Jan, 1987), pages 88-103. Weihl and Liskov "Implementation of Resilient, Atomic Data Types", ACM TOPLAS, Vol 7, Num. 2 (Apr 1985), pages 244-269). See the bibliographies in the papers, use the science citation index, or look in the file ~leavens/distrib.bib for even more references.