Emerald: A general‐purpose programming language

  title={Emerald: A general‐purpose programming language},
  author={Rajendra K. Raj and Ewan D. Tempero and Henry M. Levy and Andrew P. Black and Norman C. Hutchinson and Eric Jul},
  journal={Software: Practice and Experience},
  • R. RajE. Tempero E. Jul
  • Published 1 December 1990
  • Computer Science, Linguistics
  • Software: Practice and Experience
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… 

The development of the Emerald programming language

The origins of the Emerald group, the forces that formed the language, the influences that Emerald has had on subsequent distributed systems and programming languages, and some of Emerald's more interesting technical innovations are described.

Post-Javaism [object-oriented languages]

  • A. Black
  • Computer Science
    IEEE Internet Computing
  • 2004
The recent European Conference for Object-Oriented Programming (ECOOP) included the workshop on object-oriented language engineering for the post-Java era at which researchers gathered to examine languages that diverge from this model.

Patterns of Interface-Based Programming

By providing a set of basic patterns of interface use together with numbers of their frequency, this work provides insights that should be of interest not only to the practising programmer, but also to the designers and analysts of large code bases.

The Green Language Type System

The Green language type system is presented which supports classes as classless objects and a mechanism to treat basic values as objects and simplifies several other language mechanisms and prevents any infinite regression of metaclasses.

The Green language type system

Closing the gap between different object models

  • S. Sonntag
  • Computer Science
    [1992] Proceedings of the Second International Workshop on Object Orientation in Operating Systems
  • 1992
A technique to define and use operating system objects in the same way as programming language objects independent from the object model provided by the underlying operating system is shown.

Wyvern: a simple, typed, and pure object-oriented language

The design of Wyvern is described, a statically typed, pure object-oriented language that attempts to retain much of the simplicity and expressiveness of these iconic designs of Smalltalk and Self, suggesting a new way to think about a minimal, practical, typed core language for objects.

ECOOP’ 93 — Object-Oriented Programming

This work analyzed four experienced Smalltalk programmers as they enhanced applications by reusing new classes, finding that active programmers began work immediately, recruiting code from example usage contexts and relying heavily on the system debugger to guide them in applying the borrowed context.

Ellie: a general, fine-grained, first-class, object-based language

This paper presents the general-purpose programming language Ellie, which supports fine-grained objects and parallelism, and concentrates on the generality of the language that makes it extraordinary flexible and extensible.

A general, fine-grained, machine independent, object-oriented language

This paper introduces the general-purpose object-oriented programming language Ellie which supports machine independent fine-grained objects and parallelism and demonstrates new approaches for abstraction and code reuse in parallel programming.



Distrbution and Abstract Types in Emerald

The goals of Em-erald are outlined, Emerald to previous work is related, its type system and distribution support are described, and a prototype implementation of Emerald is constructed.

Object structure in the Emerald system

The structure, programming, and implementation of Emerald objects, and Emerald's use of abstract types are discussed.

The BETA Programming Language

This paper is a tutorial introduction to BETA, a modern language in the SIMULA 67 tradition that supports the object-oriented perspective on programming and contains comprehensive facilities for procedural and functional programming.

Block structure and object oriented languages

The purpose of this paper is to analyze the role of block structure in object-oriented languages and demonstrate that block structure is useful from both a conceptual and technical viewpoint.

Typeful Programming

  • L. Cardelli
  • Computer Science
    Formal Description of Programming Concepts
  • 1989
It is shown how typeful programming is best supported by sophisticated type systems, and how these systems can help in clarifying programming issues and in adding power and regularity to languages.

A Theory of Type Polymorphism in Programming

  • R. Milner
  • Computer Science
    J. Comput. Syst. Sci.
  • 1978

Type theories and object-oriented programmimg

Of primary interest are the models provided by type theories for abstract data types and inheritance, and the major portion of this paper is devoted to these topics.

On understanding types, data abstraction, and polymorphism

A λ-calculus-based model for type systems that allows us to explore the interaction among the concepts of type, data abstraction, and polymorphism in a simple setting, unencumbered by complexities of production programming languages is developed.

A Proposal for Making Eiffel Type-Safe

  • W. Cook
  • Computer Science
    Comput. J.
  • 1989
Type attributes, or generic parameters with default values, are suggested as a replacement for most cases of declaration by association, and the special association type used to express type recursion cannot be explained using type attributes, and appears to be a truly novel construct for typing object-oriented programs.

EMERALD: An object-based language for distributed programming

A programming language called Emerald is presented that simplifies distributed programming by extending the concepts of object-based languages to the distributed environment by incorporating a type system that deals only with the specification of objects--ignoring differences in implementation.