No I think what we are seeing is a lot more hybrid systems. Go is like a statically typed language with lots of dynamic features. Julia is a dynamically typed language with lots static typing features.
Paradigms are getting mixed too. Rust, Kotlin and Swift are all imperative languages with heavy functional inspiration.
Traditional statically typed OOP languages such as Java is what people want to get away from.
> No I think what we are seeing is a lot more hybrid systems.
I'm not sure why you started that sentence with "No". I actually agree with it.
There are many good ideas that have emerged separately in different languages, and are being combined in some of the new languages.
All I'm saying is, successful upcoming languages will probably be more statically typed than dynamically typed.
In other words, the dynamic typing paradigm is failing the real world test.
> Go is like a statically typed language with lots of dynamic features.
Go is statically typed.
The part that lacks static typing (no generics) is the worst part of the language that gets the most flak.
> Traditional statically typed OOP languages such as Java is what people want to get away from.
Java's problem is that it's just way too verbose.
User user = new User(....); // This is not even that verbose
// Maybe more like this:
User user = new User(new UserProfile(....), UserManagerFactory.getDefaultUserManager());
People have misdiagnosed the problem and thought it was the static typing.
It turns out to be the lack of support for functions as objects. So for many things you end up having to create dummy classes and objects just to wrap functions.
Even C supported passing function pointers around.
So in this regard, Java is less expressive than C.
Paradigms are getting mixed too. Rust, Kotlin and Swift are all imperative languages with heavy functional inspiration.
Traditional statically typed OOP languages such as Java is what people want to get away from.