일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 에릭 노먼드
- 김영한쌤
- 큰돌의 CS책
- 에릭 노이먼
- 고등애플
- 출처는 코딩앙마
- 쏙쏙들어오는함수형코딩
- 갈길이 멀구나
- 유틸리티타입은 공식문서 자주 보자
- 오종택개발자님
- 출처는 코딩애플
- 쏙쏙 들어오는 함수형코딩
- 리엑트를 다루는 기술
- 출처 : 코딩앙마
- 자바스크립트 딥다이브
- 나는 flux좋아...
- 이웅모
- 에릭노이먼
- 쏙속 들어오는 함수형코딩
- 생코님Redux
- 출처 : 자바스크립트 딥다이브
- 출처 : https://www.boostcourse.org/
- 쏙쏙 들어오는 함수형 코딩
- 클린코드다시읽기
- 흥달쌤
- 로버트 C마틴
- 출처 : 코딩애플
- 함수형 코딩
- 출처 : 한입크기로 잘라먹는 타입스크립트
- https://product.kyobobook.co.kr/detail/S000001952246
- Today
- Total
흰둥씨의 개발장
[함수형 코딩#2] 현실에서의 함수형 사고(예시로 살펴보기) 본문
함수형 사고 ?
ㄴ1) 액션, 계산, 데이터 => 계층형 설계
ㄴ2) 일급 추상 => 타임라인 다이어그램(분산시스템을 이해하기 위해 사용), 일급함수(함수를 인자로 받음)
피자집 예시 1)번 적용예시
ㄴ액션, 계산, 데이터를 구분하고, 계층형 설계하기
ㄴ계층형 설계는 유지 보수를 잘하기 위해 사용(각 계층은 코드의 변경 가능성에 따라 나눔)
액션 | - 반죽 펴기 - 피자 배달 - 재료 주문 |
자주바뀜 | | | | 자주안바뀜 |
<계층화 설계> 피자 조리법 --------------- 이번주 사야 할 것 조리법 순서 ----------------- 재료 목록 JS 객체 / 배열 --------------JS 객체 / 숫자 |
|
계산 | - 조리법에 나온것을 두배로 만들기 - 쇼핑목록 결정 |
|||
데이터 | - 고객 주문 - 영수증 - 조리법 |
계층형 설계 ?
ㄴ각 계층은 그 아래있는 계층을 기반으로 만들어짐 (가장 위에 있는 코드는 의존성이 거의 없음)
ㄴ일반적으로 비즈니스 규칙, 도메인 규칙, 기술스택 계층으로 나눔
ㄴ계층형 설계로 만든 코드는 테스트, 재사용, 유지보수 쉬움
피자집 2)번 예시 타임라인 다이어그램 (시간의 순서에 따라 흐름보기 편함)
ㄴ타임라인 다이어그램은 시간에 따라 변하는 액션을 시각화 하는 것
ㄴ1개의 로봇이 혼자 차례대로 일하는 시스템
ㄴ피자를 만드는데에 오류는 없지만 빠른?것같지는 않음
a로봇 투입 | 위 에 서 아 래 로 진 행 |
주문접수 | |
반죽만들기 | |
반죽 펴기 | |
소스 만들기 | |
소스 뿌리기 | |
치즈 갈기 | |
치즈 뿌리기 | |
오븐에 넣기 | |
10분기다리기 | |
서빙 |
피자집 2)번 예시 분산시스템으로 (여러대의 로봇이 일하는 것 같은 시스템)
ㄴ로봇3대가 각자의 타임라인을 가지고 동시에 일하는 시스템
ㄴ각 타임라인에서 처리되는 일 순서가 섞여서 누가 먼저 끝나는지 알수없고, 엉뚱한 피자가 만들어질 가능성이 있음
ㄴ서로 타임라인을 맞추지 않으면 분산시스템은 예측 불가능한 순서로 실행됨
주문접수 | ||
a로봇 | b로봇 | c로봇 |
반죽 만들기 | 치즈 갈기 | 소스 만들기 |
? | ? | 반죽 펴기 |
소스 뿌리기 | ||
치즈 뿌리기 | ||
오븐에 넣기 | ||
10분 기다리기 | ||
서빙 |
결론
1. 분산시스템은 서로 실행순서를 맞춰야함
2. 액션실행되는 시간은 중요하지 않음 (일반적으로 오래걸리는 작업이 항상 그렇지 않기 때문에 ....)
3. 드물지만 타이밍이 어긋나는 경우가 실제로 일어남(타임라인은 올바른 결과를 보장해야함)
4. 타임라인 다이어그램으로 시스템 문제 찾기 수월함
분산시스템의 문제점 해결하기
ㄴ타임라인 커팅 : 3대의 로봇이 움직일 때 서로를 기다릴수 있게 하기 (=여러 타임라인 동시 진행시 서로 순서 맞추는 방법)
ㄴ타임라인 커팅은 액션간의 협력을 위해 사용
ㄴ타임라인 커팅은 high-order operation(고차동작)으로 구현함
ㄴ3대의 로봇은 서로의 작업 끝나기를 기다렸다가 모두 완료하면 로봇한대가 cut아래 동작을 수행함
주문접수 | ||
a로봇 | b로봇 | c로봇 |
반죽 만들기 | 치즈 갈기 | 소스 만들기 |
CUT : 3개의 로봇이 위 작업을 모두 끝낼 때까지 아래 작업으로 진행하지 말자! |
||
반죽펴기 | ||
소스 뿌리기 | ||
치즈 뿌리기 | ||
오븐에 넣기 | ||
10분 기다리기 | ||
서빙 |
'함수형 프로그래밍 > 쏙쏙 들어오는 함수형 코딩' 카테고리의 다른 글
[함수형 코딩#6] 변경가능한 데이터 구조를 가진 언어에서 불변성 유지하기 (0) | 2023.07.01 |
---|---|
[함수형 코딩#5] 더 좋은 액션 만들기 (0) | 2023.06.29 |
[함수형 코딩#4] 액션에서 계산 빼내기 (0) | 2023.06.29 |
[함수형 코딩#3] 액션, 계산, 데이터 차이알자 (0) | 2023.06.28 |
[함수형 코딩#1] 함수형 사고 (0) | 2023.06.24 |