“Your point about people not seeing the world as comprising functions, is sort of weird.”
People can relate to “objects.” It’s not a stretch to think of a ball as having properties and behaviours. A ball can bounce. A ball can be kicked.
People do not relate to “functions” and functional composition. People do not relate to the lambda calculus or its related concepts. Sure, they can learn, but it’s kind of unnatural.
How do people model the world around them? As a collection of objects that have properties? Or as a flow of data with input to and output from some kind of data processor (i.e., function)?
“Also, most people doesn’t look at things at procedural steps, using FP you’ll lift your head up and start focusing on what instead of how, which is much more natural for things.”
People certainly do look at procedural steps. Whether they’re following directions to get to a physical destination, or to bake a cake, or to execute a military plan, there are conditional and/or repetitive operations involved. Any time you need to make a decision, that’s a conditional. Repetition means looping.
FP can produce concise and elegant code, but it’s not a silver bullet. Just as there is no perfect programming language, there is no perfect programming paradigm. They all have pros and cons.
I program in Smalltalk, and it can also be very concise and elegant. It just depends on how well you architect your solution.
“If you learn F# you’ll see that it is more readable than for example C# and java since there is much less noise to express almost any domain.”
People have different views about “readability.” My view, shared by many, is that code is readable if it hews closely to our natural language. Smalltalk, for example, is extremely readable because it almost resembles pidgin English. There is very little syntax, and the code consists entirely of sending messages to objects. “Keyword” messages, in particular, make code look very English-like. It is truly a beautiful programming language.
FP languages require a bit of a cognitive leap in this respect. Your mind has to be trained to read functional code. It’s not easy. I tried with Scheme and I never felt comfortable.
By the way, FP and OOP are rather like two sides of the same coin: