By the way, C++ is unencumbered, supports OO anywhere it's useful, has exceptions that actually work (i.e. actually reduce the amount of error-handling code in your program, instead of multiplying it), and provides the benefits of garbage collection without its ... problems.
If you're talking about modern, though, you neglected to mention compile-time type inferencing. The MLs have it, Haskell has it, C++ has it, Java and C# don't. (What good is it, anyway? It enables writing libraries that are more powerful than is possible in weaker languages.) As modernity goes, Java 1.5 and C# are stuck at about 1991; Java 1 was about 1986.
Copyright © 2017, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds