Eiffel - Both OO and Functional
Respectfully to All—Eiffel
- General purpose OO
- Functional through Llamba functions as "Agents"
- Void safe (no null reference pointers—ever!)
- SCOOP (Simple Concurrent Object Oriented Programming)—multithreading with a single keyword
- Multiple Inheritance (implemented with sanity and a smart compiler)
- Design-by-Contract (i.e. "built-in" testing)
- C/C++ friendly (i.e. easily linked to C/C++ or in-lined as needed)
- Has its own code analysis tools (Eiffel Inspector)
- Generics (i.e. ARRAY [G] --> ARRAY [CAR], ARRAY [ANIMAL], etc.)
- Simple (i.e. only 59 keywords)
I have now taught more than a dozen people to effectively code in Eiffel. For an experienced programmer with a mentor, this process takes no more than a few days at about 10hrs/day. I have even taught one person who did not know how to program at all in about two weeks (crash course in Object Theory and Computer Science + Eiffel/through-Eiffel).
I know, I know—cue the whining about "no-one-uses-it" in 3 ... 2 ... 1 ...
I have been using it on an $multi-million / 900 KLOC project for nearly 6 years. One does not follow opportunity—one makes it!