|
Brunel is a strongly-typed object-oriented language, named
after the famous Victorian engineer, Isambard Kingdom Brunel (see
photograph, taken by Robert Howlett in November, 1857). The language
is based on the theory of F-bounds and formally distinguishes the notions
of class and type. Whereas objects each have a simple,
monomorphic type, the variables to which they are bound have
a polymorphic class. Classes are expressed as parametric
constructions in the second-order function-bounded λ-calculus,
whose interfaces may be uniformly specialised under inheritance and
by explicit binding.
Polymorphism is expressed everywhere using bounded type parameters;
polymorphic variables may only receive objects whose types satisfy
the bound. Binding propagates an object's exact type into the
parameterised construction and enables early static analysis. The
same typing mechanism is used for both generic (template) and run-time
polymorphism. No special syntax is required to force static or
dynamic binding, which is resolved automatically at compile-time.
The Brunel 1.0 object-oriented language was originally
designed to support simple types and strict subtyping (Simons, 1991).
It was developed partly in response to Cook's analysis of type
failures in object-oriented languages
[1]
and partly as a vehicle for experimental
optimisation techniques, such as class dependency analysis, binding
analysis and inheritance subgraph reduction. An optimising compiler and
programming environment were developed, running under X-Open on Unix,
by (Low, 1991; Tse, 1991; Ong, 1991). Source files contained
additional hidden information to support rapid compilation and binding
analysis.
Subsequently, the language was revised completely, in response to
the theory of F-bounded polymorphism developed by Cook and others
[2],
[3],
which provided a more satisfying account of classes and polymorphism.
The ways in which this theory could account simply for many different
kinds of type abstraction in programming languages
were discussed in (Simons and Cowling, 1992). The unified theory of
classification is described briefly in (Simons, 1996a) and was presented
as tutorials at ECOOP and OOPSLA (Simons, 1993a, 1993b, 1994). The impact
of the theory upon another object-oriented language, Eiffel,
was described in (Simons, 1995b, 1995c). The popular impact on language
terminology and design notation was discussed in (Simons, 1996b).
The modified Brunel 2.0 language adopted
F-bounded inclusion instead of subtyping as its model of subclassing,
and handled generic (template) polymorphism by the same mechanism.
The theory of classification and the revised Brunel 2.0
language were described at length in the PhD thesis (Simons, 1995a).
Experimental
additions to the Brunel compiler included multiple inheritance
(Ng, 1992) and higher-order methods (Black, 1992). A revised version of
the optimising compiler is described by (Simons, et al., 1993, 1994).
This performed class dependency analysis, inheritance subgraph reduction,
automatic binding analysis and automatic inlining for a given system,
compiled in one pass from source. The language later had a minor syntax
revision, for which an analyser was developed (Manderis, 1996).
The concrete syntax of Brunel was eventually judged to be
over-burdened with type parameters. A daughter project
Poppy has been proposed, which
seeks to adopt type substitutions instead of parametric instantiation
as the main mechanism for type adaptation.
[1] W Cook, A proposal for making Eiffel
type-safe, Proc 3rd European Conf. Object-Oriented Progr.,
57-70; reprinted in Computer Journal, 32 (4),
(Nottingham: BCS/Pitman, 1989), 305-311.
[2] P Canning, W Cook, W Hill, W Olthoff and
J Mitchell,
F-bounded polymorphism for object-oriented programming,
Proc 4th Int. Conf. Func. Progr. Lang. and Arch., September,
(London: Imperial College, 1989), 273-280.
[3] W Cook, W Hill and P Canning,
Inheritance is not subtyping,
Proc 17th ACM Symp. Principles of Progr. Lang.,
(ACM Press, 1990), 125-135.
- A J H Simons,
Brunel: a strongly-typed, portable object-oriented language and
programming environment,
Department of Computer Science Research Report CS-91-07,
(Sheffield: DCS, 1991).
- Low E K,
A Class Structure Optimiser for Object-Oriented Languages
MSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: DCS, 1991).
- Tse H P,
A Class Structure and Formal Type Checker for an Object-Oriented
Language,
MSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: DCS, 1991).
- Ong P S,
An Object-Oriented Graphical User Interface for Brunel,
MSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: DCS, 1991).
- A J H Simons and A J Cowling,
A proposal for harmonising types, inheritance and polymorphism for object-
oriented programming,
Department of Computer Science Research Report CS-92-13,
(Sheffield: DCS, 1992).
- Ng Y M,
An Optimising Compiler for Handling Multiple Inheritance in
Brunel,
MSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: DCS, 1992).
- D Black,
An Optimising Compiler for an Object-Oriented Language with
Higher-Order Functions,
MSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: DCS, 1992).
- A J H Simons, Low E-K and Ng Y-M,
An optimising delivery system for object-oriented software,
Department of Computer Science Research Report CS-93-18,
(Sheffield: DCS, 1993).
- A J H Simons, Low E-K and Ng Y-M,
An optimising delivery system for object-oriented software,
Object-Oriented Systems, 1 (1), (London: Chapman and Hall, 1994),
21-44.
See earlier draft version.
- A J H Simons,
Introduction to Object-Oriented Type Theory,
ECOOP '93 Tutorial 10, (Kaiserslautern : AITO/ACM Press, 1993), 62pp.
- A J H Simons,
Introduction to Object-Oriented Type Theory,
OOPSLA '93 Tutorial 23, (Washington : ACM Press, 1993), 62pp.
- A J H Simons,
Exploring Object-Oriented Type Systems,
OOPSLA '94 Tutorial 28,
(Portland : ACM Press, 1994), 81pp.
- A J H Simons,
A Language with Class: The Theory of Classification
Exemplified in an Object-Oriented Programming Language,
PhD Thesis, Department of Computer Science, University of Sheffield
(Sheffield, 1995).
- A J H Simons,
A different proposal for making Eiffel type-consistent,
Department of Computer Science Research Report CS-95-07,
(Sheffield: DCS, 1995).
See revised TOOLS paper.
- A J H Simons,
Rationalising Eiffel's type system,
Proc. 18th Conf. Technology of Object- Oriented Languages and Systems
(TOOLS Pacific),
eds. C. Mingins, R. Duke and B. Meyer (Melbourne, 1995), 365-377.
- A J H Simons,
A theory of class,
Proc. 3rd Int. Conf. Object-Oriented Info. Sys.,
eds. D Patel, Y Sun and S Patel, (London: Springer Verlag, 1996), 44-56.
- A J H Simons,
Let's agree on the meaning of class,
Department of Computer Science Research Report CS-96-26,
(Sheffield: DCS, 1996).
- S Manderis,
A Syntax Analyser for Brunel,
MSc Dissertation, Department of Computer Science, University of Sheffield
(Sheffield: DCS, 1996).
I named this programming language Brunel in honour of Isambard
Kingdom Brunel, the famous and far-sighted Victorian Engineer. He was
responsible for the earliest suspension bridges, the more stable wide gauge
steam railway and the earliest screw-driven steamships that outpaced
paddle steamers in the race across the Atlantic. Many of his projects still
survive and serve their purpose today, such as the railway bridge at
Saltash, crossing from Devon into Cornwall.
I K Brunel was one of the most gifted engineers of his day,
pushing at the boundaries of steel and steam technology. The Clifton
Bridge was one of the first suspension bridges of its kind, that used
the technique of supporting the central roadway with chainwork linked
to a cable draped over pillars. A conventional arched bridge could
not work here, because of the distance between the pillars. A multispan
bridge was equally out of the question, given the depth of the ravine
and the fast flowing river below.
The Saltash Bridge was one of the last projects completed in
Brunel's lifetime. Different from the above, it rests on pylons
embedded in the river; yet the twin bowed arches serve both form and
function in a stunning design. The bridge was completed in 1859
and the end pillars bear the name I K Brunel, Engineer
in giant letters. Here, the bridge is under construction. Today,
the main railway line from Devon into Cornwall still crosses at
this point, though the road traffic uses a much newer suspension
bridge that was built just upstream, to the right from this
point of view.
The Great Western Railway was built to transport
passengers and freight from Bristol to London. The enterprise was
an economic success, since it allowed passengers to dock at Bristol
and reach London much more quickly than if they had been forced to
navigate the English Channel. It opened up the whole of the West
Country. Engineers remember it more for Brunel's choice of a wide
gauge of 7ft 1/4in, wider than George Stephenson's 4ft 8 1/2in. This
afforded faster travel in spacious carriages with more stable cornering.
Today, the French TGV (Train Grande Vitesse) runs on a similar
wide gauge.
Brunel also built railway stations in grand style, such as the
Bristol Temple Meads Station. Later, in an act of pure symmetry,
he named one of his luxury ocean-going liners the
Great Eastern.
|