.hc 1 ABOUT EIFFEL


Eon/Eiffel is an implementation of the programming language @[Eiffel 3]
as described in the book @[Eiffel - The Language by Bertrand Meyer].

If you have not met Eiffel before, it is a new language based on a 
the notion of Object Orientated programming. This technique is not
new, it's roots go back several decades but it has found new life
in a world where the issue of software quality is becoming the
focus of attention.

In simple terms, an object becomes a building block. If a programmer
can construct a program out of existing blocks a triple advantage is
gained; the software is reliable if it is built from well used
fully developed modules; it is cheap because less code is written
and it is maintainable because each module is small, manageable and
insulated from other modules.

On a pure programming level, Eiffel defines a programming language
suitable for construction of each object, but more importantly
it defines how the modules are to be interfaced together. In fact 
not only does it define how the modules are put together, it makes
sure that they are put together properly.

On the more managerial side of things, it is important that one 
programmer should be able to build upon the work of others. To this
end, the way in which an module is to be used is automatically documented 
and made available to others via a set of tools. If a module is available
for a particular job but needs modification, Eiffel allows it to be
reused in such a way that it does not interfere with other users of
that module.


Thus in Eiffel we have a language that promotes software reliability via
reuse and correct design.

.h 1.1 ABOUT EON/EIFFEL

Most implementations of the Eiffel language (and indeed many other 
languages) produce C code which is then compiled. This is a sensible
approach because advantage can be taken to C's portability and by using
a C compiler that is native to the target computer, fully optimised
code can be generated.

Eon/Eiffel generates @{C++} output, something that can be done now that
@{C++} is available on a wide range of machines and the language has 
settled down. There are three reasons for the choice of @{C++}. 
It has much in common with Eiffel and it's ability to handle @{classes}
with inheritance simplifies the code generated by the Eon compiler.
Secondly, @{C++} compiler vendors have put much effort into producing
 product that handles objects and @{classes} efficiency - a somewhat
difficult task. We can take advantage of that work. Final, @{C++} is
becoming an industry standard with companies like Microsoft producing
the Windows interface in @{C++}. We are working towards a seamless @{C++}
interface so such products can be used with the minimum of difficulty.


Practical problems have meant that not all aspects of the Eiffel language 
are implemented as indicated in the book. However as the product (and indeed
the language) develop we hope descrepences will be removed.


.h 1.2 ABOUT THIS MANUAL

THIS MANUAL does not attempt to describe the language or the concepts
behind it.  A list of recommended reading for novices and experts
can be found in the section entitled @[More About Eiffel].

It describes how to build an Eiffel system once the basics of the
language are understood by the programmer.


