At the conference (video in Italian), Uberto covered only part of the presentation, so he restarted from the half presentation check:
- many bugs are caused by shared, inconsistene state
- the procedural paradigm doesn't care how you organize state
- OOP encapsulates state inside objects
- functional programming expels state from pure functions.
- in the case of a list of actions to perform, it couples the actions in a certain order; the first or second action populates the blackboard for the other ones and cannot be moved.
- in a distributed scenario, it decouples different processes from knowing the rest of the system, and allows new configurations.
Elegance and familiarity
Elegance and familiarity are orthogonal.Just because we see functional code as strange and different from the object-oriented approach, it does not mean it's inelegant: probably just that we are not familiar with it. It is closed against different changes than the equivalent OO solution; and a functional programmer will see our objects as inelegant too.