함수형 프로그래머는 액션, 계산, 데이터 이렇게 세분류로 코드를 나눈다.
1. 액션 : 실행 시점이나 횟수 또는 둘 다에 의존한다.
- 시간이 지남에 따라 안전하게 상태를 바꿀 수 있는 방법
- 순서를 보장하는 방법
- 액션이 정확히 한 번만 실행되게 보장하는 방법
2. 계산 : 입력값으로 출력값을 만드는 것
- 정확성을 위한 정적 분석
- 소프트웨어에서 쓸 수 있는 수학적 지식
- 텍스트 전략
3. 데이터 : 이벤트에 대한 기록한 사실
- 효율적으로 접근하기 위해 데이터를 구성하는 방법
- 데이터를 보관하기 위한 기술
- 데이터를 이용해 중요한 것을 발견하는 원칙
분산 시스템 규칙 3가지
1. 메시지 순서가 바뀔 수 있다.
2. 메시지는 한 번 이상 도착할 수도 있고 도착하지 않을 수도 있다.
3. 응답을 받지 못하면 무슨 일이 생겼는지 알 수 없다.
현실에서의 함수형 사고
토니가 피자가게에서 피자를 여러판 만들어야 한다.
1. 액션과 계산, 데이터
- 액션 : 호출횟수와 시점에 의존하는 것 (반죽 펴기, 피자배달, 재료 주문)
- 계산 : 어떤 것을 결정하거나 계획하는 것 (조리법에 나올 것을 두 배로 만들기)
- 데이터 : 변경 불가능한 데이터를 간으한 많이 쓰려고 한다. (고객 주문, 영수증, 조리법, 결제, 재고)
- 계층화 설계 맛보기
2. 일급 추상
- 주방을 자동화하기 : 타임라인 다이어그램을 사용하면 액션이 시간 순서에 따라 어떻게 실행되는지 볼 수 있다.
- 분산 시스템을 타임라인으로 시각화하기
여러 대의 로봇이 함깨 일을 하는 것은 분산 시스템을 의미한다.
타임라인 다이어그램은 문제를 파악하는 데 도움이 되었지만 실행 순서가 섞이는 것은 어떻게 할 수 없었다. => 실패
- 각각의 타임라인은 다른 순서대로 실행된다
서로 다른 타임라인에 있는 액션 간 실행 순서는 보장할 수 없다.
1) 기본적으로 타임라인은 서로 순서를 맞추지 않는다
2) 액션이 실행되는 시간은 중요하지 않다.
3) 드물지만 타이밍이 어긋나는 경우는 실제 일어난다.
4) 타임라인 다이어그램으로 시스템의 문제를 알 수 있다.
- 타임라인 커팅 : 로봇이 서로를 기다릴 수 있게 하기
1) 타임라이 커팅으로 서로 다른 작업들을 쉽게 이해할 수 있다.
2) 타임라인 다이어그램을 사용하면 시간에 따라 진행하는 작업을 쉽게 이해할 수 있다.
3) 타임라인 다이어그램은 유연하다.
오른쪽 타임라인 커팅이 들어간 부분의 로봇들 작업이 끝나기를 기다린다. 그리고 모든 작업이 완료되면 로봇 한대가 나머지 피자를 완성한다.
이렇게 하면 재 재료를 준비하는 작업은 순서가 중요하지 않게 된다.
'Study > Book' 카테고리의 다른 글
다재다능 코틀린 프로그래밍 / 콜렉션 사용하기 (1) | 2023.05.17 |
---|---|
다재다능 코틀린 프로그래밍 / 코틀린 시작하기 (0) | 2023.05.04 |
쏙쏙 들어오는 함수형 코딩 / 액션, 계산의 차이 (0) | 2023.03.27 |