함수형 사고
최근에 나온 번역서를 읽었는데, 찾아보니 원서는 2년 전인 2014년에 출간되었다.
명령형 방식으로 구현하던 로직, 디자인 패턴을 활용하던 설계를 함수형 프로그래밍에서는 어떻게 접근할 수 있는지 보여준다. 책의 제목이 함수형 언어가 아니라 함수형 사고라는 데서 짐작하겠지만, 언어 자체보다는 생각하는 방식의 전환과 확장에 중점을 둔다. 그래서 예제도 스칼라/그루비/클로저(Clojure)같은 함수형 프로그래밍 언어 뿐 아니라 자바8이나 함수형 자바로 구현한 코드가 나온다.
함수를 변수처럼 대입하고, 함수에 함수를 넘기고, 함수를 리턴하는 함수를 언어 차원에서 지원할 때 코드가 어떻게 바뀔 수 있는가. (함수형 언어만의 특징은 아니지만) 만약 없었다면 함수형 구현에서 제약이 되었을 lazy, memoize같은 개념이 어떻게 활용되는가 같은 것들을 배울 수 있다.
새로운 패러다임의 언어를 배울 때는 아예 처음부터 그 패러다임의 언어로 시작하는 것도 한 방법이지만, 내게 익숙하고 전형적인 코드가 다른 관점에서는 어떻게 구현되는지 비교하면서 익히는 것도 좋다고 생각한다. 책의 구성이 교과서처럼 체계적으로 정리된 것은 아니지만 구체적인 예제로 개념을 설명하고 코드를 비교하기 때문제 함수형 프로그래밍의 맛을 보고 싶은 명령형/객체지향 개발자에게 도움이 될 것이다.
노란 형광펜
100개의 함수를 하나의 자료구조에 적용하는 것이 10개의 함수를 10개의 자료구조에 적용하는 것보다 낫다., 앨런 펄리스, 111p (이 말은 함수형 프로그래밍을 다루는 책에서 정말 많이 인용되는 듯)
개발자가 유연한 언어를 접하면 문제를 언어에 맞게 구부리는 대신 언어를 문제에 어울리게 구부릴 수 있다는 것을 깨닫게 된다., 114p
특정한 추상 개념을 매일 사용하면, 머릿속에 점차적으로 스며들어 문제를 해결하는 방법을 변화시킨다., 160p