@rtacconi
Professional developer here:
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 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.
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 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.
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.
Go is simple and gets the job done in most cases. It compiles much faster than any other programming language I've ever used and that alone makes it a viable tool for rapid production. Go has grown up a fair amount since its inception (module system, better garbage collection, etc.). I don't use Go for financial applications because it doesn't have a built-in decimal type, but it is possible it might in the future.
After doing my financial programming in C#, I've switched to F#. It seems to be perfect for those types of applications. The syntax is clean and concise compared to C#. However, it requires you to think functionally and it compiles more slowly. I've programmed for more than half my life and I'm not convinced that object-oriented programming is any better than functional programming.
