Object Oriented Programming
The style of programming that encourages entities messaging each other to perform computations. But things about class-based programming go here too, sadly.
The style of programming that encourages pure functions and rich types.
Monads let you treat asynchronous operations as values, and compose them, giving you a simpler basis for concurrency than callbacks.
Monads can help you deal with failures in ways that are more predictable, and easier to abstract over than exception-based error handling.
Dealing with many things happening at once in computers. Includes parallelism and distributed computing.