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