Chapter 1. Welcome to Grokking Simplicity

FP의 정의: 수학적 함수의 특징을 보이고 side effect 없는 프로그래밍 패러다임

FP의 정의와는 달리 현실은 side effect를 다룰 수 밖에 없다

FP에서는 기능을 action, calculation, data로 구분 한다.

Functional thinking - 이 책을 관통하는 주제

Chapter 2. Functional thinking in action

Functional thinking의 실예, Toni's Pizza

Part 1: Action, calculation, data의 구별

계층적 디자인 (stratified design) - 변경 빈도에 따른 구분

Business rules / Domain rules / Tech stack 의 3단계로 나누는 계층 디자인. 비지니스 룰은 자주 바뀌고 테크스택은 가장 천천히 변경된다.

Part 2: First-class 추상화

로봇 한 대가 피자를 만드는 부엌, 단순한 타임라인을 갖는다 → 순차 처리 프로그래밍

로봇이 세 대로 늘어나면서 분업을 시도하였으나 서로 협업이 안 되며 혼란을 겪게 된다 → 분산 처리 프로그래밍

타임라인 다이어그램을 통해 분석해보니 분산 처리의 어려움을 깨닫게 되었고 타임라인에 동기화 라인을 추가하여 문제를 해결하였다. → 부검 과정

타임라인 다이어그램을 사용하면 시간의 흐름에 따라 액션이 수행되는 과정을 시각화하여 볼 수 있기 때문에 분산 처리 문제를 이해하는 데 도움이 된다.