티스토리 뷰

Engineering

[책] 함수형 사고

Developer 이도운 2016.10.13 23:59

이번에는 '함수형 사고'를 읽었습니다. 책이 두껍지 않지만 내용이 어려운 편이고 코드 예제가 많아 가볍게 통독하였는데에도 보름정도 걸린 듯 합니다. 예전에 폴리글랏 프로그래밍 책을 통해 함수형 프로그래밍 언어가 영역을 넓혀가고 있다는 이야기를 알았었고, 최근에 Java 8에 추가된 함수형과 관련된 부분들과 자바스크립트, 스칼라를 공부하기도 하였었습니다. 

그러나 문법적인 내용들만 조금씩 익혔을 뿐, 함수형으로 생각하고 함수형에 맞게 프로그램을 만들 수 있겠다는 생각은 별로 들지 않았습니다. 어떻게 해야 함수형 언어들의 특성을 잘 살려 프로그램을 짜낼 수 있을지 모르겠어 답답하였는데, 우연히 이 책의 제목만 보고 마음에 들어 구입해보게 되었습니다. 생각하는 방법을 알려줄것 같았습니다.

이 책의 처음은 함수형은 왜 배워야 하는지에 대해 이야기합니다. 책을 읽기 전에는 함수형으로 만들면 어떤 이득이 있는지 잘 이해하지 못했습니다. 주변의 자바나 C/C++ 프로그래머들과 이야기 해 보면 배우기 어렵고 다른 사람이 작성한 코드도 읽기 어려워 실제 프로젝트에 쓰기는 어렵다는 이야기들이 많았습니다.

이 책은 이에 대해 다음과 같은 점들을 이야기하며 함수형 언어를 배워야 한다고 이야기합니다. 첫째, 패러다임이 전환되고 있다. HW 성능이 좋아짐에 따라 새로운 패러다임들을 사용하는 데 성능적인 문제가 많이 줄어들었다는 것입니다. 둘째, 언어 트렌드이다. 여러 언어들이 함수형 언어의 특성들을 더하고 있으므로 지금 사용하지 않더라도 미리 공부하면 나중에 쓸 수 있게 될것이라는 것입니다. 셋째, 메모리를 다루는 것과 같은 지루한 부분들은 런타임에 맡기라는 것입니다. 스트림에 의해 지연 처리되고 최적화 되는 것과 같은 예를 들 수 있겠습니다. 넷째, 간결해진다. 기존 언어들의 가변적인 부분을 함수형 언어는 최소화하여, 오류가 발생하기 쉬운 기능을 적게 노출한다는 점 등을 이야기합니다.

전적으로 동의하지는 못하였지만 함수형 언어를 왜 배워야 할지에 대해서 조금 더 이해하게 되었습니다. 순수 함수를 사용하도록 강제하고, 불변형인 것이 가지는 장점 정도가 함수형 언어의 장점이라 생각하고 있었습니다만, 프로그래머가 실수하기 쉬운 부분을 객체 지향에 비해 덜 노출하므로 더 중요한 부분에 집중할 수 있게 될 것이라는 점이 이 책을 통해 이해한 가장 큰 장점이지 않을까 합니다.

그 뒤로는 함수형 언어의 특징인 필터, 맵, 리듀스 등에 대한 사용법을 여러 언어들을 이용하여 설명하는데 이것이 이 책의 독특한 점입니다. 다른 책들은 한가지 언어에 대해 깊이를 추구하는 반면, 이 책은 '함수형 사고'라는 메타 주제를 삼은 만큼 특징을 발휘하여 같은 의미 또는 의도에 대해 각 언어가 어떻게 접근하는지 알려줍니다. 이를 통해 접근 방법을 다각도로 알 수 있었고, 언어의 특성에 대해 알기도 하여 신기한 경험이 되었습니다. 

게으름의 이점에 대해 그루비 코드로 설명게으름의 이점에 대해 그루비 코드로 설명

그 뒤로 커링, 메모이제이션, 함수형 자료구조, 디자인 패턴, 폴리패러다임을 적용한 구현 등 다양한 주제를 예를 들어 이야기 합니다. 함수형 언어의 각각의 주요한 특징을 설명하고 구현 방법과 어떨때 사용하는지도 알려줍니다. 객체 지향에서의 대응되는 영역들과 비교하여 이야기하므로 어떤 경우에 함수형으로 대체하여 사용하면 될지 알 수 있습니다.

객체 지향이 말로는 코드 재사용성을 높이고 캡슐화를 통해 코드를 숨겨 변경 영향도를 줄이고 위험을 낮춘다고 이야기하는데, 실제로 프로젝트를 하다보면 모듈의 재사용률은 높지 않고 메소드들만 팩토리화 해서 재사용하는 경우가 많습니다. 캡슐화의 이점도 별로 느끼기 어렵습니다. 제대로 돌아가도록 하려면 캡슐화된 모듈과 메소드의 내용을 까 보아야 효율적으로 코드를 만들 수 있는 경우가 많아요. 이런 점에서 객체 지향보다 더 많은 부분을 컴파일러와 VM에게 맡기고, 로직의 흐름에만 집중하게 해주는 함수형 언어가 앞으로도 계속 영역을 확대해 나아갈 수 있을 것 같습니다.

제가 기대한 것에 비해 얼마나 함수형 사고로 프로그래밍을 하게 될지는 잘 모르겠습니다. 역시 책을 한번 읽어서는 어려운 것 같아요. 다시 처음부터 차근 차근 읽어보고 실제 사례에 도입해 볼 생각입니다.

함수형 사고
국내도서
저자 : 닐 포드(Leal Ford) / 김재완역
출판 : 한빛미디어 2016.07.01
상세보기


댓글
댓글쓰기 폼
«   2019/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Total
47,984
Today
12
Yesterday
16