Software Architecture in Practice

Read this section to learn about the main elements, patterns, quality attributes, and principles of software architecture, including encapsulation, polymorphism, and dependencies. Pay attention to design patterns and their importance in software design.

8. Functional Programming

Functional programming stresses the importance on mutability and therefore is natural t for parallel and concurrent programming 

Because state is often not kept in functions 

- it has one less complexity to debug against, as you can always regenerate that state 

- race conditions are kept to a minimal 

- are great for pipeline architectures