본문 바로가기
개념 정리/함수형 코딩

함수형 코딩: 함수형 코딩이란?

by 매진2 2024. 6. 23.
728x90

1. 함수형 프로그래밍이란?

함수형 프로그래밍 정의는 아래와 같다.

1. 수학 함수를 사용하고 부수효과를 피하는 것이 특징인 프로그래밍 패러다임

2. 부수효과 없이 순수함수만 사용하는 프로그래밍 스타일

 

하지만 위 정의의 문제점이 있다.

1. 부수 효과는 필요하다.

2. 함수형 프로그래밍은 부수효과를 잘 다룰 수 잇다.

3. 함수형 프로그래밍은 실용적이다.

 

그래서 이 책에서는 일반적인 함수형 프로그래밍의 정의를 사용하지 않고 실제 사용해본 프로그래머의 기술, 생각, 흐름, 시각을 정리했다. 또한 함수형 프로그래밍의 중요한 개념은 객체 지향 프로그래밍, 절차적 프로그래밍을 가리지 않고 모든 프로그래밍 언어에서 사용가능하다.

 

 

2. 함수형 프로그래밍에서 코드는 세 분류로 나뉜다.

1. 액션

  • 호출하는 시점과 횟수에 의존
  • 시간이 지남에 따라 안전하게 상태를 바꿀 수 있는 방법
  • 순서를 보장하는 방법
  • 액션이 정확히 한번만 실행되게 보장하는 방법

2. 계산

  • 입력값을 계산해 출력하는 것
  • 정확성을 위한 정적 분석
  • 소프트웨어에서 쓸 수 있는 수학적 지식
  • 테스트 전략

3. 데이터 

  • 이벤트에 대한 사실을 기록한 것
  • 효율적으로 접근하기 위해 데이터를 구성하는 방법
  • 데이터를 보관하기 위한 기술
  • 데이터를 이용해 중요한 것을 발견하는 원칙

 

이렇게 코드를 액션, 계산, 데이터로 구분하면 어떤 장점이 있을까?

프로그램이 복잡해지면서 분산 시스템을 많이 적용하는데 이때 코드를 데이터와 계산으로 바꾸면 분산시스템에서 생기는 문제를 해결할 수 있고 액션을 코드 전체에 영향을 주지 않도록 격리시키면 더욱 다루기 쉬워진다.

 


 

아래의 내용은 이후 나올 내용들의(거의 후반) 예시에 나온 용어만 정리했다.

이해가 안되더라도 책의 후반주에 자세히 설명이 될 내용이니 가볍게 읽고 넘어갔다.

 

함수형 프로그래머는 유지보수를 잘 하기 위해 계층형 설계를 사용한다.

이때 계층형 설계란?

  • 제일 안 바뀌는 코드를 맨 아래에, 제일 잘 바뀌는 코드를 맨 위로 둔다.
  • 일반적으로 기술 스택 계층 -> 도메인 규칙 -> 비지니스 규칙 순서로 나눈다.
  • 계층형 설계로 만든 코드는 테스트, 재사용, 유지보수가 쉽다.

 

타임라인 다이어그램을 사용하면 액션이 시간 순서에 따라 어떻게 실행되는지 알 수 있다.

  • 분산시스템을 타임라인 다이어그램으로 시각화 후
  • 여러 타임라인이 동시에 진행될 때 서로 순서를 맞추기 위해 타임라인 커팅이라는 방법을 사용한다.
  • 이때 타임라인 커팅은 고차동작으로 구현을 한다.
728x90

'개념 정리 > 함수형 코딩' 카테고리의 다른 글

함수형 코딩: 액션, 계산, 데이터  (0) 2024.06.25