Emerald: A general‐purpose programming language

Emerald is a general‐purpose language with aspects of traditional object‐oriented languages, such as Smalltalk, and abstract data type languages, such as Modula‐2 and Ada. It is strongly typed with a non‐traditional object model and type system that emphasize abstract types, allow separation of typing and implementation, and provide the flexibility of polymorphism and subtyping with compile‐time checking. This paper describes the Emerald language and its programming methodology. We give examples that demonstrate Emerald's features, and compare and contrast the Emerald approach to programming with the approaches used in other similar languages.

[1]  Scott Danforth,et al.  Type theories and object-oriented programmimg , 1988, CSUR.

[2]  BlackAndrew,et al.  Fine-grained mobility in the Emerald system , 1988 .

[3]  Alan Borning,et al.  Classes versus Prototypes in Object-Oriented Languages , 1986, FJCC.

[4]  Andrew P. Black,et al.  Object structure in the Emerald system , 1986, OOPSLA 1986.

[5]  Barbara Liskov,et al.  Data Abstraction and Hierarchy , 1987 .

[6]  Larry Carter,et al.  Distrbution and Abstract Types in Emerald , 1987, IEEE Transactions on Software Engineering.

[7]  Eric Jul Object mobility in a distributed object-oriented system , 1990 .

[8]  Henry M. Levy,et al.  Modules, objects and distributed programming: Issues in RPC and remote object invocation , 1990 .

[9]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[10]  David R. Hanson Is block structure necessary? , 1981, Softw. Pract. Exp..

[11]  O. J. Dahl,et al.  Simula Begin , 1979 .

[12]  Luca Cardelli,et al.  Typeful Programming , 1989, Formal Description of Programming Concepts.

[13]  Henry Ledgard,et al.  Reference Manual for the ADA® Programming Language , 1983, Springer New York.

[14]  Alan J. Demers,et al.  Data types are values , 1985, ACM Trans. Program. Lang. Syst..

[15]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[16]  Bent Bruun Kristensen,et al.  The BETA Programming Language , 1987, Research Directions in Object-Oriented Programming.

[17]  Andrew P. Black,et al.  Fine-grained mobility in the Emerald system , 1987, TOCS.

[18]  Per Brinch Hansen,et al.  The programming language Concurrent Pascal , 1975, IEEE Transactions on Software Engineering.

[19]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[20]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[21]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[22]  Klaus-Peter Löhr,et al.  Object-Oriented Concurrent Programming , 1992, TOOLS.

[23]  Ole Lehrmann Madsen,et al.  Block structure and object oriented languages , 1986, OOPWORK '86.

[24]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPLSA '86.

[25]  Luca Cardelli,et al.  Modula-3 Report (revised) , 1992 .

[26]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPSLA 1986.

[27]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[28]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[29]  Gul Agha,et al.  Concurrent programming using actors , 1987 .

[30]  Rajendra K. Raj,et al.  A Compositional Model for Software Reuse , 1989, Computer/law journal.

[31]  Professor Dr. Niklaus Wirth,et al.  Programming in Modula-2 , 1982, Springer Berlin Heidelberg.

[32]  Alan Borning,et al.  Deltatalk: An Empirically and Aesthetically Motivated Simplification of the Smalltalk-80 Language , 1987, ECOOP.

[33]  Jean D. etc. Ichbiah Reference Manual for the ADA Programming Language , 1983 .

[34]  Robert D. Tennent Two examples of block structuring , 1982, Softw. Pract. Exp..

[35]  William R. Cook,et al.  A Proposal for Making Eiffel Type-Safe , 1989, Comput. J..

[36]  Norman C. Hutchinson,et al.  EMERALD: An object-based language for distributed programming , 1987 .

[37]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[38]  C. R. Snow,et al.  Concurrent Euclid, The UNIX system, and TUNIS , 1982 .

[39]  Rajendra Krishna Raj Composition and reuse in object-oriented languages , 1991 .