Elle(ID:6914/ell009)


persistent data-aware language based on ML and used to create Galileo


Related languages
ML => Elle   Based on
Elle => Galileo   Written using

References:
  • ALBANO, A., OCCHIUTO, M.E., AND ORSINI, R. A uniform management of persistent and complex data in programming languages. In Znfotech State of Art Report on Databases, M.P.Atkinson, Ed., Series 9, No. 4, Pergamon Infotech, 1981, 321-344. view details
  • Albano, Antonio; Cardelli, Luca and Orsini, Renzo "Galileo: A Strongly Typed Interactive Conceptual Language" view details Abstract: Galileo, a programming language for database applications, is presented. Galileo is a strongly-typed, interactive programming language designed specifically to support semantic data model features (classification, aggregation, and specialization), as well as the abstraction mechanisms of modern programming languages (types, abstract types, and modularization). The main contributions of Galileo are (a) a flexible type system to model database structure and semantic integrity constraints; (b) the inclusion of type hierarchies to support the specialization abstraction mechanisms of semantic data models; (c) a modularization mechanism to structure data and operations into interrelated units (d) the integration of abstraction mechanisms into an expression-based language that allows interactive use of the database without resorting to a new stand-alone query language. Galileo will be used in the immediate future as a tool for database design and, in the long term, as a high-level interface for DBMSs. Extract: Galileo: relation to previous work
    The design of Galileo has been influenced by two areas of research: conceptual modeling and programming languages. Although these areas have a number of overlapping issues, there are problems to be solved if the results from both areas are to be successfully integrated. Galileo applies results from the conceptual modeling sector for features related to object-oriented databases, declarative definitions of constraints, multiple descriptions of objects, and view modeling.
    Galileo borrows features such as data types, abstract types, and modularization from the programming language area. Although the utility of such features is recognized both pragmatically and theoretically, they have mainly been studied for applications to temporary data (i.e., not involving databases).
    The database proposals that have most influenced the design of Galileo are TAXIS, DIAL, and ADAPLEX. TAXIS is notable for introducing the basic knowledge representation mechanisms of semantic networks on data, transactions, and exceptions and for its approach to user dialogue modeling. DIAL, which has evolved from SDM, uses data types, classes, derived classes, the ?port? mechanism to deal with user interaction, and features to control concurrency at the conceptual level. Finally, ADAPLEX uses semantic data model features in a strongly-typed programming language, namely, Ada.
    The main contributions of Galileo are
    (1) the integration of features to support semantic data model abstraction mechanisms within an expression-based, strongly-typed programming language;
    (2) a systematic use of both concrete and abstract types to model structural and behavioral aspects of a database;
    (3) the inclusion of type hierarchies to support the specialization abstraction mechanism of semantic data models as well as a software development methodology by data specialization
    (4) the proposal of another abstraction mechanism, modularization, to organize a conceptual scheme in meaningful and manageable units, so as to deal with data persistence without resorting to specific data types such as files of programming languages, and to deal with application-oriented views of data in a similar way to the view mechanism of DBMSs;
    (5) a small number of independent primitive features that can be applied orthogonally, that is, in any combination.
    The basic ideas of Galileo have been investigated in ELLE, a programming language designed to deal uniformly with temporary and persistent complex data, that is, without resorting to special data type constructors to deal with permanent data. Both ELLE and Galileo borrow many of their features from the functional programming language ML. Extract: Galileo TYPE HIERARCHIES
    TYPE HIERARCHIES
    An important property of the Galileo type system is the notion of subtype: if a type u is a subtype of a type v (u C v), then a value of type u can be used in any context where a value of type v is expected, but not vice versa. The subtype relation is a partial order. For instance, if a function f has a formal parameter of type v, then an application of f to a value of type u is correctly typechecked because no run-time errors can occur. It is important to stress the point that since Galileo has a secure type system, the notion of type hierarchies is related to that of well-typed expressions [24, 281: expressions that are syntactically well typed are always semantically well typed (i.e., such expressions do not cause runtime type errors, and give a value of the correct type). In Milner?s words, ?welltyped expressions do not go wrong? also [36] apply to hierarchies among types.
    This notion of type hierarchies is different from the subtype concept of Ada, but is similar to the subclass mechanisms of Simula 67 and Smalltalk. In Galileo, this notion is extended to all the types, in the sense explained in the sequel to this paper, while preserving two important properties: the language is still strongly-typed and the functions need not be recompiled in order to be used on parameters of any subtype.
    With this mechanism Galileo supports the notion of programming by data specialization, originally introduced in Simula 67 and generalized in TAXIS to all the constituents of a database application: data, transactions, assertions, and scripts. Complex software applications, especially those related to databases, can be designed and implemented incrementally. Once a set of functions has been designed and tested for the most general data, it can be used with data of any subtype introduced later on in the software development process. Moreover, new functions on the subtypes can be defined in terms of the old functions.
          in ACM Trans Database Sys 10(2) June 1985 view details