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.