Introduction to Galileo 97
- Galileo 97 is an expression language: each construct is applied to
values to return a value.
- Galileo 97 is an interactive language: the system repeatedly prompts
for inputs and reports the results of computations; this interaction is
said to happen at the top level of evaluation. At the top level one can
evaluate expressions or perform declarations. This feature allows the interactive
use of Galileo 97 without a separate query language.
- Galileo 97 is an higher order language, in that functions are denotable
and expressible values of the language. Therefore, a function can be embedded
in data structures, passed as a parameter and returned as a value.
- Galileo 97 is a safe language. Each denotable value of the language
possesses a type. Besides predefined types, type constructors exist to define
new types, from predefined or previously defined types. They are: pairs,
tuple, sequence, discriminated union, function and semi-abstract types.
When defining semi-abstract types, the set of possible values can be restricted
with assertions. In general, any expression has a type that can be statically
determined, so that every type violation can be detected by textual inspection
(static type checking). Although any statically detectable error could also
be detected at run-time, the language has been designed to be statically
type checkable for the following basic reasons: firstly, programs can be
safely executed disregarding any information about types; secondly, the
language offers considerable benefits in testing and debugging applications,
since the type-checker detects a large class of common programming errors
without the need to execute programs, while errors at run-time could be
detected only by providing test data that cause the error to be raised.
- Galileo 97 has subtyping. If a type T is a subtype of a type T', then
a value of T can be used as an argument of any operation defined for values
of T', but not vice versa because the subtype relation is a partial order.
- Galileo 97 has parametric polymorphism and bounded parametric polymorphism.
Polymorphism is the ability of a function to handle values of many types.
Bounded parametric polymorphism has the effect of integrating parametric
polymorphism with subtyping, and it provide more expressive power than either notion taken separately.
- Galileo 97 has an exception-trap mechanism, which allows programs
to handle system and user generated exceptions uniformly. Exceptions can
be selectively trapped, and exception handlers can be specified.
- Galileo 97 supports the abstraction mechanisms of an object data model.
Classes are the mechanism to represent a database by means of modifiable
sequences of interrelated objects, which are the computer representation
of certain facts of entities of the world that is being modeled. Predefined
assertions on classes are provided and the operators for including or eliminating
elements in a class are automatically defined.
- The current main memory implementation of Galileo 97 run on Macintosh
Back to the Main