Computer language by Bertrand Meyer. Eiffel is truly object-oriented, and emphasizes consistency of data types. It uses a concept known as 'design by contract', which means that the designer of the class can constrain input and&output of features, thereby maintaining correctness.

This is the genealogy of the programming language Eiffel:

Eiffel is a child of Simula.
Eiffel was born in year 1986.
It became Eiffel 2.
Then it begat Sather in year 1991.
Then it begat Ruby in year 1993.
It became Eiffel 3, and has not changed much since that time.

This genealogy is brought to you by the Programming Languages Genealogy Project.

Yer, well, you don't need any of that C++, see, or none of that Javanese crap, nah geezer, you want some of this here Eiffel yeah, basically it's pure OO, the real hit son...

The lowdown on Eiffel is that basically it provided most of the bad OO ideas for Java, which took none of the good ideas. Like C++, Eiffel uses a class-based OO model, without introspection. It introduced the idea that everything must be an object; it has no concept of static class members. The syntax Pascal-like.

The thing that makes Eiffel different from other programming languages is that it supports invariants. Properly. An invariant is a predicate on the state of the object. These can be declared on variables, in which case they must hold true both on entry and exit to every method call; they may be declared as preconditions or postconditions for operations (methods). If an invariant is is false at method entry/exit then it is an error.

Eiffel also supports other good things, like templates (For typesafe goodness), and renaming, a feature that allows programmers themselves to themselves resolve the naming-clash problems of multiple inheritance. Why is this good? The reason that the language is called Eiffel is because according to Bertrand Meyer, creator of this language, Gustave Eiffel was the first modern civil engineer using actual mathematics to build something that everyone said was impossible. Meyer wants to leverage the power of formal methods in software construction: Once you've specced your thing in B it would seem obvious to use Eiffel to code the thing? No?

The problem is that formal methods bods these days tend to like languages like haskell, scheme, or some kind of constraint logic programming language with a rigorous denotational semantics; meanwhile joe average cannot be bothered to learn a new language that supports processes that even if he understands, his clueless coworkers and moronic management will not allow him to leverage: design by contract.

Log in or register to write something here or to contact authors.