Viewing Ada from a process model perspective

This paper compares two programming language paradigms for large software systems. The first is based upon nested block structure and static binding, augmented with abstract data types and concurrency, as exemplified by Ada. The second is based upon processes with disjoint data spaces which communicate by passing messages over dynamically bound ports as exemplified by the process model of NIL. We argue that the process model paradigm is simpler, has better support for modularity and programming-in-the-large, and results in more reliable and maintainable programs.We suggest usage restrictions and language extensions which allow Ada to support a process model with minimal change to the language. We show that our suggested modification of Ada yields a considerably simpler language.

[1]  Jonathan Rosenberg,et al.  A methodology for programming abstract data types in Ada , 1982, AdaTEC '82.

[2]  David Alex Lamb,et al.  Simulation of Procedure Variables Using Ada Tasks , 1983, IEEE Transactions on Software Engineering.

[3]  Craig Schaffert,et al.  CLU Reference Manual , 1984, Lecture Notes in Computer Science.

[4]  Peter Wegner Capital-Intensive Software Technology , 1984, IEEE Software.

[5]  Robert E. Strom Mechanisms for compile-time enforcement of security , 1983, POPL '83.

[6]  Robert E. Strom,et al.  NIL: An integrated language and system for distributed programming , 1983, ACM SIGPLAN Notices.

[7]  C. A. R. Hoare,et al.  The emperor's old clothes , 1981, CACM.

[8]  Jack C. Wileden,et al.  Nesting in Ada programs is for the birds , 1980, SIGPLAN '80.

[9]  Nagui Halim,et al.  A New Programming Methodology for Long-Lived Software Systems , 1984, IBM J. Res. Dev..