Extract from Preface to "Object-Oriented Programming In Eiffel" by Pete Thomas and Ray Weedon Eiffel is a programming language designed to encourage the construction of correct software componenets using the object-oriented approach. It is named after the French Engineer who built the amazing tower in Paris. In the same way that M. Eiffel was an excellent civil engineer, Eiffel the language is a tool for building software utilizing excellent software engineering techniques. . . . To say that Eiffel is a programming language specifically designed to support the object-oriented paradigm is true but misses a major part of the story. Eiffel has been designed to support modern software engineering techniques. It brings together two important strands of thinking to prvide software engineers with a powerful yet easy-to-use tool. The main driving force behind the design of Eiffel was the desire to produce a programming language that would facillitate and encourage the construction of correct software. Object-oriented programming is a natural step in this direction because it is an attempt to narrow the gap between what a piece of software, a software component, is to acheive (defined in a specification) and how the program code (the implementation) is to achieve it. An object-oriented program contains descriptions of objects which are models of their real-world counterparts. By analysing a problem in terms of objects and then modelling them in software makes the resulting program easier to understand and hence easier to maintain, that is, the object approach makes it easier to produce correct programs. Another important technique in the production of correct software is to make as much use of existing software (known to be correct) in the construction of new applications. Eiffel has been designed to exploit software component reuse and one of the key mechanisms facilitating this is known as inheritance, a concept that characterizes all object-oriented languages.