1 Introduction
1.6 Related Work
There are no other known instances of a strongly-typed persistent programming language having been used as the implementation vehicle for an integrated persistent programming environment. However there are other programming language systems that could be used to support such an environment. In order to catalogue those languages, it is necessary to define exactly what is required to support the work described here.
The base point is a language and environment supporting the orthogonal persistence of strongly typed objects. In particular strongly typed executable code objects can be retained within the persistent environment. The language is used to construct an integrated set of tools within the environment that support the construction, compilation, linking and execution of programs written in the language. The key tool here is the compiler which can take representations of programs in the base language made up from the data structures of that same language and convert these into program components that are executable within the environment. This compiler is a function within the persistent environment available to other programs executing there.
A brief analysis of a number of languages with the basis philosophical aims found in the FIDE project is now given.
C+ +
The C++AJnix™ [Str86,Car89,RT78] world has succeeded in constructing integrated persistent programming environments. However the only data type that may persist in such environments is the byte. The benefits of strong typing such as improved safety and data modelling power over the whole envhonment cannot be achieved. An example of such a system is the combination of the language E [RCS89], an extension of C++, with the EXODUS Storage Manager [Car89]. The Storage Manager provides storage objects which are uninterpreted byte sequences of virtually any size. The aim
is to build and extend datable systems by writing the database system code in E. E inherits from C++ the lack of strong typing and so is unsuitable for the experiments described here.
Smalltalk
The object-based environments of Smalltalk systems [BOP+89] support the entire programming process from construction to execution. However, the compiler used in this environment is not implemented using the Smalltalk language and is not available to executing programs. In addition, Smalltalk implementations are dynamically typed which, while increasing flexibility for program construction and evolution, reduces the safety of completed applications. This is a significant factor in an environment designed to support large-scale and long-lived applications.
O2C
The O2 Database [BBB+88] is an object-oriented database server developed at Altair,
France. An O2 sublanguage is embedded in an existing programming language in
order to allow the creation of objects in and querying over the database. O2C [LR89]
is an extended version of the C language [KR78] that can operate over the O2 Database. O2C programs are stored outside the database and the language is therefore
unsuitable for the construction of system software within the 0 2 persistent
environment. For example, since executable program components cannot be stored and manipulated within the environment, the construction architecture cannot be supported. Type checking is spread over both the external C environment and the internal 02 environment. Hyper-programming cannot be supported since source programs are not contained within the environment.
Galileo
Galileo [AC085] is a strongly-typed object-oriented language developed at the University of Pisa in Italy. The language is supported by the Functional Abstract Machine (FAM) [Car83] with extensions to permit access to the Persistent Object Store developed by Brown at the University of St Andrews [BMM+92]. Any top- level declarations in an interactive Galileo session are retained within the persistent environment. The compiler is external to the persistent environment and is not available to executing programs. Executable code may be stored within the persistent environment in the form of first class functions and strongly typed persistent locations are also supported, so it should be possible to construct applications using the methodology outlined in Section 1.3.1. Until a compiler has been constructed within the language, which is possible, the remaining benefits of persistence described here cannot be supported. However it is hoped that collaborative research during the term of the FIDE project will permit these benefits to be demonstrated.
DBPL
Developed at the University of Hamburg in Germany, DBPL [MS89] supports an extended relational data model. "The final DBPL language design provides an orthogonal integration of sets and first order predicates into a strongly and statically typed programming language and the DBPL system supports the language with full database functionality including persistence, query optimisation and multi-user transaction management." [Atk92] A compiler has yet to be constructed within the DBPL language and so the benefits of persistence have yet to be realised. The designers of DBPL have progressed to the language Tycoon which has a more powerful type system in order to continue their experiments into persistent environments.
1
-I
1
Tycoon 1
!Î The typeful language Quest [Car89] was developed by Cardelli to explore the limits of
strong typing within programs. The University of Hamburg combined Quest and the Persistent Object Store of Brown [BMM+92] to construct the language Tycoon [MMS92]. The Quest module mechanism inherited in Tycoon supports the construction of large applications from components which are first class values in the system. This module mechanism permits applications to be constructed that are more statically bound than those constructed using the application architecture outlined in Section 1.3.1. Similarly to Galileo, a compiler has yet to be constructed within the environment and so the benefits of persistence outlined in Sections 1.3.2, 1.4.1 and
1.4.2, whilst possible have yet to be realised. Again, it is hoped to demonstrate the |
benefits of persistence within a Tycoon integrated environment during the FIDE project.