Emerald (programming language)
Emerald was an object-based, distributed programming language developed in the 1980s at the University of Washington. It was designed to support the creation of robust and highly available distributed systems. One of its primary goals was to provide location transparency for objects, allowing programmers to interact with objects regardless of their physical location in the network.
A key feature of Emerald was its support for object mobility. Objects could be moved dynamically between different nodes in the distributed system, either automatically by the runtime system or explicitly by the programmer. This mobility was intended to improve performance by locating objects closer to where they were being used, and to enhance availability by moving objects away from failing nodes.
Emerald emphasized strong typing and compile-time checking to help ensure the correctness of programs. It supported a type system with abstract types and type inheritance, allowing for the creation of reusable and extensible code. It also incorporated mechanisms for managing concurrency and synchronization in a distributed environment.
While Emerald was not widely adopted in industry, it served as an important research vehicle for exploring concepts in distributed object-oriented programming, influencing subsequent programming languages and distributed systems technologies. Its contributions to object mobility, location transparency, and distributed concurrency management remain relevant in the field of distributed computing. The development of Emerald ended in the early 1990s.