# Modula-3 Annotated Bibliography

Copyright (C) 1994, Digital Equipment Corporation

Here is a complete list of books, papers and articles related to Modula-3. A more concise bibliography organized by topic and containing pointers back to this page is also available. An important fraction of this documentation is already included in the individual packages to which they apply.

Please send comments and/or additions to m3-request@src.dec.com.

1. Martin Abadi, Baby Modula-3 and a Theory of Object, Research Report 95, Systems Research Center, Digital Equipment Corporation, Palo Alto, February, 1993.

   This report describes a theoretical treatment of the semantics of objects.

   It's available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/SRC/research-reports/SRC-095.ps.Z`.

2. Joel F. Bartlett, Compacting Garbage Collection with Ambiguous Roots, Research Report 88/2, Western Research Laboratory, Digital Equipment Corporation, Palo Alto, February, 1988.

   This report describes an algorithm used as the basis for SRC Modula-3 garbage collector.

   It's available on paper, by sending a mail to `WRL-Techreports@decwrl.dec.com` (send help as the subject).

3. A. D. Birrell, J. V. Guttag, J. J. Horning, R. Levin, Synchronization Primitives for a Multiprocessor: A Formal Specification, Research Report 20, Systems Research Center, Digital Equipment Corporation, Palo Alto, August, 1987.

   It's available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/SRC/research-reports/SRC-020.ps.Z`. A revised version of this paper also appears as Chapter 5 of Systems Programming with Modula-3.

4. Andrew D. Birrell, An Introduction to Programming with Threads, Research Report 35, Systems Research Center, Digital Equipment Corporation, Palo Alto, January, 1989.

   It's available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/SRC/research-reports/SRC-035.ps.Z`. A revised version also appears as Chapter 4 of Systems Programming with Modula-3.

5. Andrew Birrell, David Evers, Greg Nelson, Susan Owicki, Edward Wobber, Distributed Garbage Collection for Network Objects, Research Report 116, Systems Research Center, Digital Equipment Corporation, Palo Alto, December, 1993.

   This report describes a fault-tolerant and efficient garbage collection algorithm for distributed systems. It is the algorithm used to garbage collect Network Objects.

   It's available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/SRC/research-reports/SRC-116.ps.Z`.

6. Andrew Birrell, Greg Nelson, Susan Owicki, Edward Wobber, Network Objects, Research Report 115, Systems Research Center, Digital Equipment Corporation, Palo Alto, February, 1994.

   This report describes the design and implementation of a network objects system, which allows you to write programs that communicate over a network, while hiding the messy details of network programming. Network objects provide functionality similar to remote procedure call (RPC), but they are more general and easier to use. The system is implemented in Modula-3.

   It's available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/SRC/research-reports/SRC-115.ps.Z`.

7. Graham M. Birtwistle, Ole-Johan Dahl, Bjorn Myhrhaug, and Kristen Nygaard, Simula Begin, Auerbach, Philadelphia PA, 1973.

8. Laszlo Boeszoermenyi, A Comparison of Modula-3 and Oberon-2 (extended version), Structured Programming, Springer-Verlag, 1993. Pgs 15-22.
9. Laszlo Boeszoermenyi and Carsten Weich, Programming with Modula-3: An Introduction to Programming with Style, Springer-Verlag, ISBN 3-540-57911-7, 1995. 577 pgs, including index.

   This book is in German, but it is in the process of being translated to English. It is an introductory programming text that uses Modula-3 for its examples. The authors say, "The main concern of the book is to give a clean and comprehensive introduction to programming for beginners of a computer science study. We start with more traditional programming concepts and move toward advanced topics such as object-oriented programming, parallel & concurrent programming, exception handling, and persistent data techniques. The book also presents a large number of complete examples written in Modula-3."

10. Laszlo Boeszoermenyi and Carsten Weich, Modula-3 in Academia: University of Klagenfurt, Austria, Threads: A Modula-3 Newsletter, Issue 1, Fall 1995.

    This article describes the teaching and research efforts centered around Modula-3 at the University of Klagenfurt in Austria.

11. Gilad Bracha and William Cook, Mixin-based Inheritance, Proceedings of the Conference on Object-Oriented Programming: Systems, Languages, and Applications; European Conference on Object-Oriented Programming, Pages 303-311, October, 1990.

12. Marc H. Brown and John Hershberger, Color and Sound in Algorithm Animation, Research Report 76a, Systems Research Center, Digital Equipment Corporation, Palo Alto, August 30, 1991.

    It's available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/SRC/research-reports/SRC-076a.ps.Z`.

13. Marc H. Brown, Zeus: A System for Algorithm Animation and Multi-View Editing, Research Report 75, Systems Research Center, Digital Equipment Corporation, Palo Alto, February 28, 1992.

    It's available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/SRC/research-reports/SRC-075.ps.Z`. Also in Visual Languages '91, October 1991.

14. Marc H. Brown, The 1992 SRC Algorithm Animation Festival, Research Report 98, Systems Research Center, Digital Equipment Corporation, Palo Alto, March 27, 1993.

    It's available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/SRC/research-reports/SRC-098.ps.Z`.

15. Marc H. Brown, The 1993 SRC Algorithm Animation Festival, Research Report 126, Systems Research Center, Digital Equipment Corporation, Palo Alto, July 29, 1994.

    It's available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/SRC/research-reports/SRC-126.ps.Z`.

16. Marc H. Brown and James R. Meehan (editors), VBTkit Reference Manual: A toolkit for Trestle, Systems Research Center, Digital Equipment Corporation, Palo Alto.

    This report is the working definition of the VBTkit toolkit. VBTkit is a collection of widgets for building graphical user interfaces in Modula-3. See the FormsVBT Reference Manual below, which describes a system for easily composing these widgets.

    It's available in the `vbtkit` archive of the SRC Modula-3 distribution. A draft version is available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/Modula-3/contrib/vbtkit.25Mar93.ps.Z`.

17. Marc H. Brown and James R. Meehan, The FormsVBT Reference Manual, Systems Research Center, Digital Equipment Corporation, Palo Alto.

    This report is the working definition of the FormsVBT toolkit. FormsVBT is a system for constructing graphical user interfaces (GUI's) in Modula-3.

    It's available in the `formsvbt` archive of the SRC Modula-3 distribution. A draft version is available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/Modula-3/contrib/formsvbt.25Mar93.ps.Z` and `pub/DEC/Modula-3/contrib/formsvbt.AppC.26Mar93.ps.Z`.

18. Mark R. Brown and Greg Nelson, IO Streams: Abstract Types, Real Programs, Research Report 53, Systems Research Center, Digital Equipment Corporation, Palo Alto, November, 1989.

    This report shows how to use objects in a real program. Also defines the de facto standard input/output functions. These interfaces give an especially good example of partially opaque types. A revised version of this report also appears as Chapter 6 of Systems Programming with Modula-3.

19. Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, Greg Nelson, Modula-3 Report, Research Report 31, Systems Research Center, Digital Equipment Corporation, Palo Alto, August 15, 1988.

    The report contains the original definition of the language, superseded by Research Report 52.

20. Luca Cardelli, James Donahue, Mick Jordan, Bill Kalsow, Greg Nelson, The Modula-3 Type System, Conference Record of the Sixteenth Annual ACM Symposium on Principles of Programming Languages (POPL), Pages 202-212, January 11-13, 1989.

21. Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, Greg Nelson, Modula-3 Report (revised), Research Report 52, Systems Research Center, Digital Equipment Corporation, Palo Alto, November, 1989.

    This report is the definition of the Modula-3 language. It is now only available in hardcopy. The address for orders is below. The complete language definition, Chapter 2 of Systems Programming with Modula-3, is also available on-line.

22. Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, Greg Nelson, Modula-3 Language Definition, Sigplan Notices 27(8):15-42, August 1992.

    This article consists of Chapters 2 and 3 of SPwM3. There is an on-line version.

23. Michel R. Dagenais, Building Distributed OO Applications: Modula-3 Objects at Work, Draft Version, March 8, 1995.

    A draft of a book describing "the latest object-oriented techniques for developing large interactive distributed applications". The focus is on the Modula-3 libraries and Network Objects, but the first two chapters give an introduction to object-oriented programming in general, and the object methodologies of C++ and Obliq in particular.

24. Luca Cardelli Obliq: a lightweight embeddable language for network objects, User's Manual, Systems Research Center, Digital Equipment Corp., 1994, by FTP
25. Amer Diwan, The Whole Program Optimizer, Threads: A Modula-3 Newsletter, Issue 1, Fall 1995.

    This article motivates and describes an optimizer for Modula-3 programs based on whole-program analysis. An optimizer that looks at an entire program can do better than one that uses only the information imported when compiling a single module. Preliminary results are promising: on benchmark programs, up to 50% of method invocations can be converted to direct calls. The optimizer is itself written in Modula-3.

26. Mary Fernandez, Simple and Effective Link-time Optimization of Modula-3 Programs, SIGPLAN '95, Conference on Programming Language Design and Implementation (PLDI), June, 1995, pgs. 103-115.

    This paper shows how the overhead introduced by Modula-3's opaque types can be reduced at link time. The optimizations described in the paper are shown to be effective: they reduce the total number of instructions by up to 14% and convert as many as 79% of indirect calls to direct calls.

27. Mary Fernandez, A Retargetable, Optimizing Linker, PhD Thesis, Department of Computer Science, Princeton University, January, 1996.

    This thesis describes mld, a retargetable, optimizing linker, for the MIPS, SPARC, and Intel 486 architectures. The linker optimizes away some of the costs of late binding. In particular, mld's optimizations permit efficient implementation of Modula-3's module-encapsulation and data-abstraction features. The thesis presents the results of applying mld's simple optimization techniques to several Modula-3 programs and reports their execution times on the MIPS and Intel 486 architectures.

28. Steve Freeman, Partial Revelation and Modula-3, Dr. Dobb's Journal, 20(10):36-42, October, 1995.

    This article describes how Modula-3's partial revelations promote encapsulation and code reuse. The article is one of five on "object-oriented programming" contained in the same issue (the other four languages are C++, Ada 95, S, and Cobol '97).

29. David Goldberg, The Design of Floating-Point Data Types, ACM Letters on Programming Languages and Systems (LOPLAS), 1(2):138-151, June 1992.

    This article describes the Modula-3 treatment of floating-point values.

30. Markus K. Gröner, I. Utku Moral, Concurrent Breadth-First Search using Modula-3.

    This page describes the authors' experience installing Modula-3 on a PC and using the language to implement a concurrent breadth-first search algorithm. The authors were trying to install M3forDOS, an implementation of Modula-3 that runs on DOS PC's. They found this installation to be quite difficult. They eventually ended up using a version of SRC Modula-3 that had already been installed on a Unix box at their site.

31. Sam Harbison, Modula-3, Byte, 15(12):385-392, November, 1990.

    This article is a survey of the Modula-3 language. It gives a brief history of the language and describes the language's major features, including modules, exceptions, objects, threads and other support for concurrent programming, safety, and garbage collection. It also discusses the basis for some of the more contentious language design decisions.

32. Sam Harbison, Safe Programming with Modula-3, Dr. Dobb's Journal, 17(10):88-96, October, 1992.

    This article is a survey of the Modula-3 language.

33. Samuel P. Harbison, Modula-3, Prentice Hall, ISBN 0-13-596396-6, 1992.

    A complete Modula-3 textbook covering the full language, with examples and exercises. Includes a style manual and a user's guide for SRC Modula-3.

    The first edition of the book contains many typos. A list of errata is available on-line for anonymous FTP (in TeX, compressed PostScript, or DVI format) from `gatekeeper.dec.com` in the directory `pub/DEC/Modula-3/errata/`.

34. Ernst A. Heinz, Modula-3*: An efficiently compilable extension of Modula-3 for problem-oriented explicitly parallel programming, Proceedings of the Joint Symposium on Parallel Processing 1993, Pages 269-276, May 17-19, 1993, Tokyo, Japan.

    Available from `i41s10.ira.uka.de [129.13.13.110]` by anonymous ftp in directory `pub/m3s` as `jspp93.ps` or `jspp93.ps.gz`.

35. Ernst A. Heinz, Sequential and parallel exception handling in Modula-3*: A unifying semantics specification, Advances in Modular Languages: Proceedings of the Joint Modular Languages Conference, P. Schulthess (editor), Pages 31-49, September 28-30, 1994, Ulm, Germany.

    Available from Universitatsverlag Ulm GmbH or from `i41s10.ira.uka.de` `[129.13.13.110]` by anonymous ftp in directory `pub/m3s` as `jmlc94.ps` or `jmlc94.ps.gz`.

36. Robert Henderson and Benjamin Zorn, A Comparison of Object-Oriented Programming in Four Modern Languages, Technical Report CU-CS-641-93, Department of Computer Science, University of Colorado, Boulder, Colorado, 1993.

    The paper evaluates Oberon, Modula-3, Sather, and Self in the context of object-oriented programming. While each of these programming languages provide support for classes with inheritance, dynamic dispatch, code reuse, and information hiding, they do so in very different ways and with varying levels of efficiency and simplicity. A single application was coded in each language and the experience gained forms the foundation on which the subjective critique is based. By comparing the actual run-times of the various implementations it is also possible to present an objective analysis of the efficiency of the languages. Furthermore, by coding the application using both explicit dynamic dispatch and static method binding, it is possible to evaluate the cost of dynamic dispatch in each language. The application was also coded in C++, thereby providing a well-known baseline against which the execution times can be compared.

37. Allan Heydon and Greg Nelson, The Juno-2 Constraint-Based Drawing Editor, Research Report 131a, Systems Research Center, Digital Equipment Corporation, Palo Alto, December, 1994.

    This report describes Juno-2, a constraint-based drawing editor implemented in Modula-3. For more information, see the Juno-2 Home Page. It is available for download .

    It's available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/SRC/research-reports/SRC-131a.ps.Z`.

38. Allan Heydon, Implementing Juno-2: The User Interface, Threads: A Modula-3 Newsletter, Issue 1, Fall 1995.

    Juno-2 is a constraint-based drawing program. This article describes how Modula-3's FormsVBT, VBTkit, and Trestle libraries were used to implement the Juno-2 user interface.

39. C.A.R. Hoare, Monitors: An operating system structuring concept, Communications of the ACM, 17(10), October 1974.

40. Jim Horning, Bill Kalsow, Paul McJones, Greg Nelson, Some Useful Modula-3 Interfaces, Research Report 113, Systems Research Center, Digital Equipment Corporation, Palo Alto, December, 1993.

    This report is a description of the SRC standard Modula-3 library interfaces. It's an essential reference for every Modula-3 programmer!

    It's available via anonymous FTP from `gatekeeper.dec.com` in `pub/DEC/SRC/research-reports/SRC-113.ps.Z`.

41. Wilson C. Hsieh, Marc E. Fiuczynski, Charles Garrett, Stefan Savage, David Becker, and Brian N. Bershad, Language Support for Extensible Operating Systems, November, 1996.

    Describes the extensions made by the SPIN group at the University of Washington to the Modula-3 language for use in their SPIN extensible operating system.

42. Peter Klein, Designing Software with Modula-3, Technical Report 94-16, Department of Computer Science III, Aachen University of Technology.

    It's available via anonymous FTP from `ftp.informatik.rwth-aachen.de` in `/pub/reports/1994/94-16.ps.gz`.

43. Butler W. Lampson and David D. Redell, Experience with processes and monitors in Mesa, Communications of the ACM, 23(2), February 1980.

44. Mark S. Manasse and Greg Nelson, Trestle Reference Manual, Research Report 68, Systems Research Center, Digital Equipment Corporation, Palo Alto, December, 1991.

    This report is the working definition of the Trestle toolkit for doing graphics in Modula-3.

45. Mark S. Manasse and Greg Nelson, Trestle Tutorial, Research Report 69, Systems Research Center, Digital Equipment Corporation, Palo Alto, May, 1992.

    This report is a tutorial introduction to the Trestle toolkit.

46. Paul McJones and Garret Swart, Evolving the UNIX system interface to support multi-threaded programs, Proceedings of the Winter 1989 USENIX Conference, February 1989.

47. Farshad Nayeri, SRC Modula-3: An Elegant, Free, Open, Mature, High-Quality, Clean & Modest Programming Language, System, Library & Tool for Building Robust, Large-Scale, Multi-Threaded & Distributed Programs, March, 1996.

    A happy user promotes SRC Modula-3. The article begins:

    > Despite its length and buzzword density, the subtitle above is one the shortest phrases that characterize the virtues of SRC Modula-3. The language designers' stated goal of "consolidation, not innovation" is a modest understatement for their wise, elegant, and inventive combination of features that are greatly needed by the modern programmer.

48. Farshad Nayeri, "Net Balance: A Network Objects Example", March, 1996.

    The sources of a simple client and server that use network objects. A gzipped tar archive of the sources and web page is also available.

49. Greg Nelson (editor), System Programming with Modula-3, Prentice Hall Series in Innovative Technology, ISBN 0-13-590464-1, L.C. QA76.66.S87, 1991.

    This book is the definitive language reference. It includes the language reference manual and papers on the I/O library, threads, and the Trestle window system. It is also known as "SPwM3".

    Here is its table of contents:

    1. Introduction
    2. Language Definition
    3. Standard Interfaces
    4. An Introduction to Programming with Threads
    5. Thread Synchronization: A Formal Specification
    6. I/O Streams: Abstract Types, Real Programs
    7. Trestle Window System Tutorial
    8. How the Language Got its Spots

50. Greg Nelson, Initialization of Object Types, Threads: A Modula-3 Newsletter, Issue 1, Fall 1995.

    This article describes the rationale for the way object types are initialized in Modula-3. Modula-3 doesn't have type constructors, but you can specify default values for object fields in the type definition. The article also describes the `init` method convention.

51. Paul Rovner, Extending Modula-2 to build large, integrated systems, IEEE Software, 3(6), November 1986.

52. Robert Sedgewick, Algorithms in Modula-3, Addison-Wesley, ISBN 0-201-53351-0, L.C. QA76.73.M63S43, 1993.

    Sedgewick's classic text on algorithms. The examples are in Modula-3.

53. Stephen Schaub, Modula-3 Reference and Tutorial.

    An on-line reference and tutorial, available in three formats: HTML, Texinfo source, and GNU Info files. All three formats are available as a gzipped tar file as well. Similar tutorials are available from: Concordia University, University of Kent at Canterbury

54. Emin Gün Sirer, Stefan Savage, Przemyslaw Pardyak, Greg P. DeFouw, and Brian Bershad, Writing an Operating System with Modula-3, November, 1995.

    Describes the experiences of the SPIN group at the University of Washington using Modula-3 to build a high performance extensible operating system. Debunks some of the myths surrounding Modula-3 by arguing that the SRC reference implementation introduces inefficiencies that are not imposed by the Modula-3 language itself.

55. Lauren Schmitt, Photon: An Environment for Building Distributed Applications, Threads: A Modula-3 Newsletter, Issue 1, Fall 1995.

    This brief article announces Photon, a commercially supported development environment based on SRC Modula-3. The first official release is scheduled for the first quarter of 1996. The first target platform is Linux PC's. Photon is a product of Critical Mass, Inc..

56. Ryan Stansifer, Trestle by Example, October, 1994.

    An on-line introduction to the Trestle window system. This tutorial was written to conform with SRC Modula-3 version 2.11. Some of the interfaces called in this tutorial are obsolete.

    A gzip'ed tar archive of the entire tutorial is available.

57. Carsten Whimster Using Modula-3 Under OS/2, Electronic Development Magazine, OS/2 edition (EDM/2), March, 1996.

58. Geoff Wyant, Introducing Modula-3, Linux Journal, December 1994.

    It's available via anonymous FTP from `ftp.gte.com` in `/pub/m3/linux-journal.html`.

You can order SRC Research Reports and videotapes on-line through the World-Wide Web. All reports and videotapes are free.

You can also order reports and videos by contacting:

> `src-report@src.dec.com`

    Last modified on Fri Jan 30 09:44:22 EDT 1998 by michel.dagenais@polymtl.ca
         modified on Thu May  2 19:44:22 PDT 1996 by heydon
         modified on Mon Dec 19 10:23:41 PST 1994 by kalsow
         modified on Wed Feb 12 12:48:44 PST 1992 by muller