@rtacconi
Professional developer here:
C++ is an evolution of C, it is OOP, that kind of OOP which drives to complex and not reusable systems
Well this is false at first face. Smalltalk introduced the concept of object oriented programming to the world. It provides an abstraction layer that when properly implemented separates concerns and hides details making developers
more productive. If you've ever programmed in C, or Go for that matter you'd understand the level of complexity that emerges when you leave object space.
You are confusing bad developers for bad languages. A common mistake.
Functional programming languages have solved the problem of state with immutability and constrained solutions to change state.
Functional programming is cool but let's not attribute immutability and constrained solutions to the field of functional programming. Immutability
can be built into any language (hell, even javascript has it through ImmutableJS).
What you are trying to get at is not immutability but pure functions. Pure functions are a functional tool that are difficult to implement in other places. The primary benefit of functional programming is derived from pure functions in that you can compose them without concerning yourself with side effects. A major boon of this is that multi-core and distributed programming become much simpler at the expense of a far more complicated and confusing developer experience.
Functional and more modern languages like Go and Rust are more oriented to data, abstraction is built towards data, not objects and to make a modular system you just use modules and you put functions in modules. I am using Python with Atom and the REPL, so I get immediate feedback and I can use it as a notebook, for instance, I can print a data frame of a plotting data in the editor. To build it I use Docker, I install the dependencies and I add the files, very simple.
There's a lot to unpack here.
Go is not good.
How may I count the ways.
Rust would be a good language if the community wasn't overrun with SJWs. I really can't commit to a language who's community and language standard can be so readily hijacked by militant crazies.
Jane Street uses OCaml which is part of the family of Rust and Haskell, because it is fast and safe. However, if you are a one-man shop, most of the people use Python or R.
Jane Street has gone on record that they used OCaml primarily because their chief technology guy refused to use anything else. They ex post facto claim that it's better, and in some ways it is, but don't be confused about the reason they use it. It has a lot of problems around multicore that have yet to be solved. I would be curious how Jane Street gets around this. For the record OCaml is in the family of ML-likes. A cousin of OCaml is Haskell. Rust shares nothing in common with this family of languages.
A benefit of a language of C++ is that it can find bugs at compile-time and the same applies to Java, C#, Go, and similar languages.
This is referred to as
static typing. To an extent you can enforce this in Python with MyPy, and many dynamic languages are actually strongly typed on the backend (common lisp for example). Funny enough, you're more likely to run into a runtime bug in a weakly typed language like C++ than any other language you listed.