Ellie(ID:1549/ell003)Distributed OO languageObject-oriented language with fine-grained parallelism for distributed computing. Based on BETA, Smalltalk, and others. Parallelism by unbounded RPC and 'future' objects. Synchronization by 'dynamic interfaces. Classes, methods, blocks and objects all modeled by first- class 'Ellie objects'. Genericity, polymorphism and delegation/inheritance. Structures: Related languages
References: Ellie Objects The object is the single abstraction mechanism for notions of names, data, functions, operations, blocks, control structures, and prototypes. All entities in Ellie are objects from characters and numbers to programs and databases. An object can either be uninitialized, initializing, or initialized. An uninitialized object may only serve as a prototype for activation of new objects. Initializing and initialized objects may also serve as prototypes. An initializing object is active, i.e., it is initializing or changing its state; it is said to have a process. An initialized object may have had a process and is passive. An object consists of the following: ? A reference, which uniquely identifies the object. ? A representation, which consists of references to other objects. ? An optional interface, which allows other objects in possession of the reference to access the part of the representation defined by the interface; the part is said to be exported. ? An optional process, which is initiated when the object is activated. The interface of an active object is usually closed, i.e., requests to access the representation are suspended. The interface will be opened when the object becomes inactive and any suspended request will be resumed. An activated object goes through the following phases: 1) It has just been activated. Optionally, it has a process executing that is changing the state of the object, i.e., the representation, and may change states of other objects known by references (the object is active and initializing itself). 2) Its process has terminated (or never existed) and the interface, if any, is opened (the object is passive and initialized). This means that the state now is only accessed and changed by the process of other objects. 3) The last reference to the object has ceased to exist and the object also ceases to exist. If the representation may change over time then the object is said to be mutable. If the interface does not allow other objects to change the state (only read it), then the object becomes immutable in 2). Immutability simplifies sharing of objects in a distributed environment because immutable objects can be copied. Parallelism exists beth between objects and within an object. If an object with a future process is activated then parallelism is generated because the process will execute in parallel with the process activating the object. If an object with a non-future process is activated then no parallelism is generated because the process activating the object is suspended, i.e., it will not execute again before the process of the activated object has terminated. Because objects through an interface may activate objects within another object and these objects can have future processes, the number of processes within an object has no limit. Processes synchronize by opening and closing object interfaces. By using this powerful mechanism, other synchronization primitives may be defined, e.g., condition and semaphore objects. Extract: Object Definition Object Definition An Ellie object is defined by means of an object constructor. Data accessible through the interface, private encapsulated data, input and output parameter, and the process for reading and modifying the state are defined by the object constructor. The value of an object constructor is a reference to an uninitialized object with the properties defined by the constructor. For example, [ function <: i :- integer :> i * i ] defines an object that when passed an integer number as actual parameter in an activation returns the square of the number. Four kinds of objects can be defined: Objects, future objects, express objects, and future express objects. The process of a normal object can not execute in parallel with the process of the object activating it, whereas the process of an future object can. The process of an express object is given higher execution priority by the processor than the process of a non-express object. Furthermore, an object can be defined to be a function or an operation. An object defined to be a function must have a functional process, whereas an object defined to be an operation may have an operational process. If a process is operational, it is allowed to have side-effects when active. If a process is functional, it must not have any sideeffect. By side-effects we mean modification of states outside the object itself. Extract: Object Activation Object Activation The only method for communication in Ellie is object activation. New objects are activated by using other objects as prototypes. As an example, let X, R, and S be existing objects where S is accessible by X through the interface of R, The object X may then activate a new object S' within R using S as a prototype. The process of S' may access (and possibly modify) the internal state of R. The object S' (and S) is called a super object of R. The object R is called the subobject of S" (and S). An object can only have one subobject but any number of super objects. The relations in this example are shown in figure 1. Figure 1: Object Relations An object may activate an object within its subobject, sub-subobject, sub-sub-subobject, etc., or within one of its super objects by evaluating an Ellie expression, for example: target.prototype parameter The subobject (or super object) is referred to by the name target and an actual parameter by the name parameter. The name prototype refers to the object within target that is used as prototype for the activation. An object may also activate an object within a super object, referred to by the name super, of its subobject (or super object) by evaluating an expression of the following form: target.super.prototype parameter This is possible to any depth of super objects as long as the super objects can be accessed through the interface of their subobjects. If the process of a new object is non-future then the activation is synchronous, i.e., the process of the object evaluating the Ellie expression is suspended. If it is a future process, the activation is asynchronous (a process is forked), i.e., the activating process is not suspended. The object receives an input parameter in the activation and it returns an output parameter when its non-future process has terminated or immediately (before activation) in case of a future process. Input and output parameters are passed by object reference. The output parameter of a future process is returned as a future result object with an undefined state. Requests to access a future result object will be delayed until the future process has terminated and defined the state of the output parameter. Requests to activate a new future object with a future result object (or an object referenced in its interface) as a prototype will also be delayed but the new future result object will be returned immediately. in [SIGPLAN] SIGPLAN Notices 25(11) November 1990 view details in [SIGPLAN] SIGPLAN Notices 25(11) November 1990 view details Ellie which supports fine-grained objects and parallelism. The paper concentrates on the parallel and fine-grained programming aspects of the language. A prototype version of the language has been implemented on a parallel transputer network. The main goal of Ellie has been to achieve machine independent parallel programming, which is a major concept to reduce the cost of parallel software development. Ellie tries to meet this goal by allowing the programmer to have a large number of small processes and then having the compiler adapt the actual number of processes used to suit the actual underlying hardware. in [SIGPLAN] SIGPLAN Notices 25(11) November 1990 view details in [SIGPLAN] SIGPLAN Notices 25(11) November 1990 view details The goals of Ellie have been to obtain an extremely flexible, machine independent, parallel language. Ellie tries to meet these goals by extensive usage of selected language concepts combined with compile-time analysis to adapt programs for efficient execution on the available hardware. Ellie runs on a parallel mesh transputer network. DOI in SIGPLAN Notices 29(09) October 1997 (OOPSLA '94) view details in SIGPLAN Notices 29(09) October 1997 (OOPSLA '94) view details in Concurrency: Practice and Experience 2000 v12 view details Resources
|