6장 함수형 프로그래밍

kimjunkyung·2022년 6월 22일

클린아키텍처

목록 보기
6/14
post-thumbnail

6장 함수형 프로그래밍

람다 계산법

정수를 제곱하기

사례(p54)

클로저 vs 자바 프로그램

  • 클로저 → x와 같은 변수가 한 번 초기화되면 절대로 변하지 않는다.

  • 자바 프로그램 → 가변 변수 사용하여 프로그램 실행 중에 상태가 변할 수 있다.

⇒ 함수형 언어에서 변수는 변경되지 않는다.

불변성과 아키텍처

경합(race) 조건, 교착 상태(deadlock) 조건, 동시 조건 업데이트 문제는 가변 변수로부터 발생.

아키텍트는 동시성 문제에 관심을 가져야하고 불변성은 실현될 수 있지만 타협이 필요.

가변성의 분리

  • 애플리케이션 또는 애플리케이션 내부의 서비스를 가변 컴포넌트와 불변 컴포넌트로 분리.
    • 불변 컴포넌트

      - 순수하게 함수형 방식으로 처리. 가변 변수 사용 X. 순수형 컴포넌트가 아닌 하나 이상의 다른 컴포넌트와 서로 통신. (p57 그림 6.1) 
      
      - 트렌젝션 메모리 등을 사용하여 가변 변수 보호

      ex) 클로저의 atom 기법 - swap!를 사용하여야만 값 변경

⇒ 애플리케이션을 제대로 구조화하려면 가변 컴포넌트와 불변 컴포넌트로 분리해야하고 많은 것을 불변 컴포넌트로 옮겨야함.

이벤트 소싱

: 상태가 이닌 트랜젝션을 저장하자는 전략. 상태가 필요해지면 단순히 상태의 시작점부터 모든 트렌젝션 저장.

→ 테이터 저장소 예시

결론

💡 - 구조적 프로그래밍은 제어흐름의 직접적인 전환에 부과되는 규율읻 - 객체 지향 프로그래밍은 제어흐름의 간접적인 전화에 부과되는 규율이다. - 함수형 프로그래밍은 변수 할당에 부과되는 규율이다.

⇒ 소프트웨어는 순차, 분기, 반복, 참조로 구성된다.

profile
#Backend #Developer

0개의 댓글