Object orientated programming has serious flaws. It leads to complex top level states that can mutate at any point and make testing notoriously difficult. Not only that, but we've invented an entire list of arbitrary data patterns to make our lives even more difficult. To illustrate this point just take a look at the following link:
Functional programming, although not a silver bullet aims to put an end to this. Elixir, is one such language that is architected to support the recursive nature of functional programming perfectly. If you haven't watched the elevator pitch we encourage you to and perhaps begin to explore another side of programming you probably haven't even considered yet.
Functional programming is the future