A Very High Level Programming Language and Environment
  • Rob Strom
  • Shaula Yemini
Conference paper


This paper is a summary of ongoing research activities related to the programming language NIL, a very high level language for large, long-lived software systems developed at IBM Yorktown.

We first present a short summary of the major features of NIL. These include the NIL system model, which is a dynamically evolving network of loosely coupled processes, communicating by message passing; the very high level NIL computation model; and typestate, which is a refinement of type systems which enables a compiler to assume an important part of program validation.

We then describe our current research directions which include 1) developing transformations which map NIL programs to efficient distributed and parallel implementations; 2) including programs as first-class typed NIL objects; and 3) research toward a semantic definition of NIL.


Output Port Input Port Type Family Interface Type Optimistic Transformation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [APT 80]
    Apt, Krzysztof, Nissim Francez and Willem P. de Roever “A Proof System for Communicating Sequential Processes” ACM Transactions on Programming Languages and Systems, July, 1980.Google Scholar
  2. [COD 70]
    Codd, E. F. “A Relational Model of Data for Large Shared Data Banks”, Communications of the ACM, vol 13, No 6., June 1970.Google Scholar
  3. [HAI 82]
    Hailpern, B., “Verifying Concurrent Processes Using Temporal Logic”, Springer Verlag Lecture Notes in Computer Science, no. 129, 1982.Google Scholar
  4. [KEL 83]
    Keller, Robert M., and Prakash Panangaden, “An Archival Approach to the Semantics of Indeterminate Operators” Draft Report, University of Utah.Google Scholar
  5. [LAM 83]
    Lamport, L., “Specifying Concurrent Program Modules” ACM Transactions on Programming Languages and Systems 5:2, April 1983 July 1978.Google Scholar
  6. [MIL 80]
    Milner, Robin “A Calculus of Communicating Systems”, Springer Verlag Lecture Notes in Computer Science 492, 1980.Google Scholar
  7. [MIS 81]
    Misra, Jayadev, and K. Mani Chandy “Proofs of Networks of Processes” IEEE Transactions on Software Engineering July, 1981.Google Scholar
  8. [STR 83a]
    Strom, R. E., “Mechanisms for Compile-Time Enforcement of Security”, Tenth Symposium on Principles of Programming Languages, Austin, January 1983.Google Scholar
  9. [STR 83b]
    Strom, R. E., and Yemini, S. “NIL: An Integrated Language and System for Distributed Programming”, Proc. ACM SIGPLAN Conference on Programming Language Issues in Systems, June, 1983.Google Scholar
  10. [STR 84a]
    Strom, R. E. and Yemini, S., “Synthesizing Distributed Protocols through Optimistic Transformations” Proc. Fourth International Workshop on Protocol Specification, Testing and Validation, Skytop Penn. North Holland, 1984.Google Scholar
  11. [STR 84b]
    Strom, R. E. and Halim, N., “A New Programming Methodology for Long-Lived Software Systems” IBM Journal of Research and Development, January 1984.Google Scholar
  12. [STR 85a]
    Strom, R. E., and Yemini, S. “Optimistic Recovery in Distributed Systems”to appear in ACM Transactions on Computer Systems August, 1985. also available as IBM Research Report RC 10353.Google Scholar
  13. [STR 85b]
    Strom, R. E., and Yemini, S. “Typestate: A Programming Language Concept for Enhancing Software Reliability”, to appear in IEEE Transactions on Software Engineering,Special Issue on Software Reliability.Google Scholar

Copyright information

© Springer-Verlag Tokyo 1986

Authors and Affiliations

  • Rob Strom
    • 1
  • Shaula Yemini
    • 1
  1. 1.IBM T.J. Watson Research CenterUSA

Personalised recommendations