CHAPTER 1. 쏙쏙 들어오는 함수형 코딩에 오신 것을 환영합니다.
-
함수형 프로그래밍이란 무엇인가?
🔼 구글에서 ‘프로그래밍 패러다임’을 검색하면 단골로 나오는 예시 이미지
함수형 프로그래밍은 순수 함수를 조합하여 소프트웨어를 만드는 방식의 선언형 프로그래밍이다.
함수형 프로그래밍은 순수 함수와 불변성을 강조하며, 프로그램의 상태 변경을 최소화 하는 것을 목표로 한다. 수학적 함수의 개념에 기반을 두고 있어 코드의 간결성, 모듈성 및 예측 가능성을 높힐 수 있다.
-
함수형 프로그래밍의 주요 특징
- 순수 함수 : 순수 함수는 동일한 입력에 대해 항상 동일한 출력을 반환하며, 외부 상태에 영향을 주지 않는다. → 함수의 결과를 예측하기 쉬워지고, 테스트와 디버깅이 용이
- 불변성 : 함수형 프로그래밍에서는 데이터의 상태를 변경하는 대신, 변경된 새로운 데이터를 생성한다. → 상태 변경으로 인한 버그 발생 가능성 하락
- 고차함수 : 함수를 인자로 받거나 함수를 반환할 수 있는 함수 → 코드를 더 간결하게 작성, 중복을 줄이고 재사용성을 높임
-
단점
- 추상화 수준 : 함수형 프로그래밍은 높은 수준의 추상화를 제공해 코드가 간결하고 모듈화 된다. 하지만 이로 인해 때로 이해하기 어렵고 복잡해질 수도 있다.
- 성능 : 함수형 프로그래밍에서는 불변성과 순수 함수를 사용하여 상태 변경을 최소화 하지만 메모리 사용량이 증가하거나, 가비지 컬렉션 비용이 높아질 수 있다. 또, 재귀를 사용한 경우 스택 오버플로우가 발생할 수 있다.
- 표현력 : 상태 변경이 빈번하게 발생하는 경우, 함수형 프로그래밍으로 직관적으로 표현하기 어려운 경우가 있을 수 있다.
-
함수형 프로그래밍의 주요 특징
-
액션, 계산, 데이터는 무엇인가?
- 액션
- 실행 횟수와 호출 시점에 의존한다.
- 부수효과를 일으킨다.
- 계산
- 실행해도 다른 곳에 영향을 주지 않으며, 입력으로 출력을 계산한다.
- 참조 투명성 : 계산식(x+y) = z 일 경우 함수(계산식(x+y))는 함수(z)로 대체 가능하다. 즉, 계산은 계산된 값으로 대체가 가능하다.
- 데이터
- 계산 혹은 액션을 하기 위해 사용되는 데이터 혹은 이벤트를 기록한 사실이다.
- 액션
CHAPTER 2. 현실에서의 함수형 사고
-
장보기를 통한 액션, 계산, 데이터 분리
냉장고 확인 //액션 현재 재고 //데이터 필요한 재고 //데이터 필요한 재고에서 현재 재고 빼기 //계산 장보기 목록 //데이터 목록에 있는 것 구입 //액션
장보기를 예시로 들자면,
필요한 재고에서 현재 재고 빼기
는 현재 재고가 액션을 통해 나오는 유동적인 데이터기 때문에 호출하는 시점에 따라 달라질 수 있는 액션이 아닐까 생각하였다.필요한 재고에서 현재 재고 빼기
라는 말에 집중하는 게 아니라,현재 재고
라는 숫자 데이터와필요한 재고
라는 숫자 데이터 두가지를 받아 두 숫자 데이터가 같다면 어떤 시점이나 횟수에 상관없이 항상 같은 값을 반환하는빼기
라는 것에 집중해야 한다는 것을 알았다.(사실 2챕터보다는 8챕터 정도까지 읽은 후에 완벽히 이해했다…)