Language choice is mostly
dependent of social factors that can be summarised as "network
effect". In PLs that manifests itself primarily through a lack of
mature and numerous libraries.
Eiffel had additional technical flaws:
- Subtyping was wrong.
- Handling of concurrency was wrong, in the sense that almost all
concurrency was hidden, instead of exposed. Eiffel was an anti-Erlang in this regard.
- A lot of modern PL features were missing, e.g. pattern matching,
first-class higher-order functions.
- The single most distinctive of Eiffel's features, built-in support
for assertions, was not supported by good-enough tools.
I would argue that the last point is still the case today for all formal verification,
see e.g. Microsoft's Dafny [1]. Automating formal verification so
that normal programmers can use it routinely in mainstream programming is an
unsolved problem in December 2017.
Language choice is mostly dependent of social factors that can be summarised as "network effect". In PLs that manifests itself primarily through a lack of mature and numerous libraries.
Eiffel had additional technical flaws:
- Subtyping was wrong.
- Handling of concurrency was wrong, in the sense that almost all concurrency was hidden, instead of exposed. Eiffel was an anti-Erlang in this regard.
- A lot of modern PL features were missing, e.g. pattern matching, first-class higher-order functions.
- The single most distinctive of Eiffel's features, built-in support for assertions, was not supported by good-enough tools.
I would argue that the last point is still the case today for all formal verification, see e.g. Microsoft's Dafny [1]. Automating formal verification so that normal programmers can use it routinely in mainstream programming is an unsolved problem in December 2017.
[1] https://github.com/Microsoft/dafny