| Here are my thoughts after quickly glancing over the „features“: 1. No formatting rules and verbose „end“ I thought that by now it was universally accepted that having clear rules is a good idea, see Python and golang) 2. OO with inheritance 3. multiple at that 4. Dynamic classes/objects 5. Methods inside the classes All of these make reasoning about effects very hard/impossible; Interfaces in golang, Multimethods in Clojure, Typeclasses in Haskell, CLOS in CL all provide a better solution to that. 6. Imperative 7. No functional elements (no functions, only methods) Both mean inherently stateful, which in turn complicates reasoning 8. redef & super It’s dangerous to have behaviour of single methods spread all over your codebase. 9. nullable Looks like an interesting idea to eliminate the class of NPE runtime errors, yet it’s a special language (and syntax!) construct. It therefore does not arise out of the type system, but is explicitely built into the type system, so it doesn’t scale. See Haskell’s Maybe type on how to eleminate NPE’s with a small, trivial type that is no more special than any other. Take it or leave it, these are the things I learned in my study of programming languages. I might be wrong, I might be right, but these are the things that came up as bad design most often in different languages. /me out |
It is far from being generaly accepted, see Clojure, Scala, Rust, Ruby, ... I'd say more new languages don't follow this than do. And despite general love for Python its most controversial feature is exactly this.