쏙쏙 들어오는 함수형 코딩 Ch01
함수형 프로그래밍은 무엇?
- fp는 범용 프로그래밍 패러다임이지만, 좀 더 잘 어울리는 곳이 있다
wikipedia의 정의
- 수학 함수를 사용하고 부수 효과side effect를 피하는 것이 특징인 프로그래밍 패러다임
- 부수 효과 없이 순수 함수만 사용하는 프로그래밍 스타일
실용적 측면에서 위 정의의 문제점
- side effect는 필요하다
- 소프트웨어를 실행하는 이유; ex. 이메일 전송, DOM 조작
- FP는 side effect를 잘 다룰 수 있다
- FP는 실용적이다
액션, 계산, 데이터 구분하기
액션
- 실행 시점, 횟수에 의존
- 시간이 지남에 따라 안전하게 상태를 바꿀 수 있는 방법
- 순서를 보장하는 방법
- 액션이 정확히 한 번만 실행되게 보장하는 방법
계산
- 입력 값을 계산해 항상 동일한 출력
- 정확성을 위한 정적 분석
- 소프트웨어에서 쓸 수 있는 수학적 지식
- 테스트 전략
데이터
- 이벤트에 대한 사실 기록한 값, 실행하지 않는 정적인 것
- 효율적으로 접근하기 위해 데이터를 구성하는 방법
- 데이터를 보관하기 위한 기술
- 데이터를 이용해 중요한 것을 발견하는 원칙
액션, 계산, 데이터를 구분했을 때의 장점
분산 시스템에 잘 어울림
- 복잡한 소프트웨어, 처리해야 할 메시지가 섞이고, 중복, 유실되기도
- 실행 시점/횟수에 의존하는 코드를 최소화하면, 코드를 더 이해하기 쉽게 하고, 심각한 버그를 만들 수 있음
- 액션을 코드 전체에 영향을 주지 않도록 최대한 격리시키면, 액션도 다루기 쉬워짐
함수형 사고란 무엇?
- 함수형 프로그래머가 소프트웨어 문제를 해결하기 위해 사용하는 기술과 생각
- 액션, 계산, 데이터를 구분
- 일급 추상 first-class abstraction
이 책에서 JavaScript를 사용하는 이유
- 많은 사람들이 쓰는 언어. 웹 개발자가 아니더라도 조금은 알고 있음
- FP에 필요한 모든 것을 갖고 있고,
- 완벽한 FP 언어는 아니지만, 부족한 점 덕분에 오히려 어떤 것이 필요한 지 알 수 있는 계기가 됨
- 대부분 언어가 FP 기능을 완전히 갖고 있지 않기 때문에, 어떤 언어를 갖고도 FP를 할 수 있게 됨
#develop #fp