본문 바로가기

소프트웨어,IT,컴퓨터공학 도서리뷰/개념 서적: (Conceptual Books): TDD, OOP, DDD

함수형 사고(O'REILLY) - 객체지향 개발자에서 함수형 개발자로 거듭나기 - [ 6~7/7] [명저다] [난이도최상]

객체지향 개발자에서 함수형 개발자로 거듭나기

 

 

함수형 사고(패러다임)에 대한 본질적인 책이다!

 

추천도 : 6~7/7

★★★★★★★ : 예제가 너무 다양한 프로그래밍 언어가 쓰여서.. 이 부분에서 1점을 깎고 싶다.

 

읽은 기간 📅 : 2021년 5월 10일 ~ 7월 6일 (하루1뽀모도로)

 

이 책을 추천하는 이들 👨‍👧

  • 함수형 프로그래밍의 본질을 경험해보고 싶은 사람들.
  • 함수형 패러다임에 관심이 있는 사람들

 

난이도 🦈

최상. (정말 어려웠다... 2~3번은 더 읽어야 이해가 되지 않을까 하는 부분도 다수 존재...)

함수형 프로그래밍에 대한 적절한 경험이 있어야 큰 도움이 될 책이라고 생각한다.

 

관련된 책들 📚

  1. 자바 8람다의 힘
  2. 기타 함수형 패러다임을 흡수한 언어들 (스칼라, 클로저, 그루비, 코틀린 등등..)

 

한 줄 평 ✍️

시중에 나온 책들 중에 가장 함수형 사고의 맥을 잘 짚은 책이라 생각한다.


 

점점 인간의 사고에 가까워지고 있는 프로그래밍 언어.

 

프로그래밍 언어의 역사를 살펴보면 꽤나 재밌다.

 

세대를 거쳐서 진화하는 프로그래밍 언어에는 이전 세대에서 불편해했던(혹은 관습적이었던) 부분들을 개선해 나간 흔적들을 볼 수 있기 때문이다.

 

컴퓨터에 가까웠던 어셈블리 언어는 하드웨어 발전과 함께 좀 더 친숙한 표현이 가능한 베이식, 포트란 등등에 그 자리를 내어준다.

 

베이식의 경우 goto 문을 통해 어떤 로직으로든 이동이 가능해서 프로그램에 대한 이해를 상당하게 복잡하게 만들었다.

 

그야말로 구조를 뭉게 뜨리는 명령문이었다. 해당 명령문을 조건절에 귀속시킴으로써 구조적 프로그래밍이 탄생한다.

 

if문과 for문 while문의 등장이다. goto문은 해롭다는 것이 대부분의 프로그래머에게 각인되었다.

 

그렇게 절차 지향형 프로그래밍이 고개를 들고 발전한다.

 

인간에게 가까운 명령문으로 껍질을 탈바꿈하고, 알고리즘에 집중하게 되는 시대가 열렸다.

 

그다음은 무엇이었을까?

 

터미널 인터페이스에서 벗어나게 되면서 우리는 다양한 이벤트를 발생시키게 되는 GUI 인터페이스를 경험하게 된다.

 

나아가 인터넷을 연결하는 웹 브라우저가 등장한다.

 

운영체제 및 다양한 프로그램의 복잡성이 수천 배 증가하게 될 상황이다.

 

이를 "객체"와 "객체"사이의 관계를 통해서 프로그램을 제작하게 되었다.

 

객체에 속성과 기능을 묶어서 활용하게 되었다. 좀 더 구조적으로 변한 것이다. 

 

자연스럽게 객체지향 프로그래밍이 발전하였다. 

 

그리고 21세기 분산형 아키텍처와 유지보수성을 위해서 함수형 프로그래밍이 고개를 들고 있다.

 

명령형 패러다임의 반대 측에서

 

모든 움직임을 "불변성"을 기반으로 하여 프로그래밍의 사고 체계를 변경시키고자 하고 있다.

 

코어 개발자들의 주류 프로그래밍 언어를 살펴본다면 함수형 프로그래밍의 움직임은 피할 수 없다는 것을 알 수 있다.

 

고차원적인 생각과 정책은 아래로 흘러가기 마련이다.

 

함수형 프로그래밍이 일반 개발자에게 그 패러다임이 편리하게 활용될 수 있도록 발전한다면

 

앞으로는 함수형 패러다임을 갖추지 못한 언어는 도태될 것이 분명한 이치로 보인다.

 

그러니 함수형 사고를 갖추고, 함수형 프로그래밍을 다룰 수 있는 것은 미래에 대한 훌륭한 대비로 보이며 현재에도 충분하게 십분 활용할 수 있다.

 

함수형 패러다임의 본질을 익히고, 여러 개의 모듈을 자유자재로 다룰 수 있을 만큼 능숙해진다면

 

개발자는 자신이 생각하는 그대로를 프로그래밍에 반영할 수 있다.

 

이것은 그동안 불가능했던 프로그래밍 시나리오 중 하나였다.

 

그렇게 설계와 구조가 부드러워지게 되는 것이다.

 

인간의 사유만큼 자유로워진 프로그래밍의 시대가 열리고 있는 것이다.

 

명령형 & 객체지향형 개발자에서 함수형 개발자로의 사고 전환

 

함수형 패러다임을 익힌다고 하여 명령형 & 객체지향형 패러다임이 필요 없어지는 것은 아니다.

 

정말 코어 한 부분에서는 함수형 패러다임이 명령형 & 객체지향형 패러다임보다 수십 배의 생산성을 보여준다는 것이 중요한 것이다.

 

대부분의 부분에서 명령형 패러다임과 객체지향형 패러다임은 그 구조를 제공해줄 것이다.

 

이 책은 그런 사실들을 충분하게 설명해준다.

 

함수형 사고가 왜 필요한지를 강력하게 설득하며, 함수형 사고의 여러 장점들을 설명해준다.

 

또한 대부분의 프로그래밍 언어들이 채택한 함수형 패러다임 체계를 보여준다.

 

하지만 수십 개에 가까운 함수형 프로그래밍 언어에서도 결국 본질은 하나라는 것을 뚜렷하게 보여준다.

 

결론적으로는 폴리글랏한 사고와 폴리 패러다임을 갖춰야 한다는 것으로 마무리한다.

 

개인적인 후기. 상당한 난이도의 책

 

석사 3기~4기에 함수형 패러다임에 대한 대학원 수업이 마련되어 있었는데, 이번에 BK사업이 바뀌게 되면서 폐강되었다.

 

아쉬운 대로 혼자 함수형 패러다임과 관련된 공부를 진행해야 했다.

 

2권의 책을 읽고 있는데 하나는 자바 8 람다의 힘이고 다른 하나는 "함수형 사고"이다.

 

소프트웨어 아키텍트가 꿈이며, 소프트웨어 테크닉이 필요한 나에게 자바는 가장 안정적이면서 범용성 높고, 활용도가 높은 프로그래밍 언어이다.

 

하지만 자바에게도 큰 오점이 남았던 역사가 있었으니 바로 뒤늦은 함수형 패러다임 채택이었다.

 

이후 수많은 JVM 기반 언어들이 자바가 놓친 기회를 얻고자 노력했다. 바로 함수형 패러다임의 부재였다.

 

스칼라, 코틀린, 그루비 등등 JVM기반의 언어들은 여러 프로젝트들과 함께 시장을 넓혀갔다.

 

뒤늦게 정신 차린 자바는 "강력한 스트림" 개념과 함수형 인터페이스로 함수형 패러다임의 부재를 깨끗하게 날렸다.

 

인터페이스도 너무도 아름다울 정도로 잘 만들어져서 떠났던 자바 개발자들을 다시 돌아오게끔 만들었다.

 

그리고 나는 현재 함수형 패러다임을 자바를 통해 배우려고 노력하고 있다.

 

아직도 서투르고 너무 어렵다. 언제 어떻게 활용해야 하는지에 대한 타이밍도 잘 모르겠다.

 

그저 깔끔한 알고리즘처럼 보이도록 사용할 때도 있다.

 

이번 책을 통해서 "함수형 사고"의 본질을 엿보게 되었다.

 

왜 강력한지

 

왜 앞으로 함수형 패러다임을 피할 수 없게 될 것인지

 

불변성이 강력한 이유는 무엇인지

 

폴리 패러다임을 갖춘 역량이 얼마나 무서운지 등등을 말이다.

 

이 책은 상당히 어려웠다.

 

난이도만 본다면 이 책의 평점은 4~5/7에 가까울지도 모르겠다.

 

어떤 부분은 여러 번 읽어도 뇌의 입 구조차에도 들어가지 않는다.

 

아직은 함수형 사고가 미숙해서 그런 것 같다.

 

추후에 함수형 패러다임을 더 깊게 공부할 기회가 생긴다면, 해당 책을 꼭 다시 읽어보고자 한다.

 

책의 저자는 심상치 않은 사람임이 분명하다는 것을 느낀 책으로 이 책의 저자의 이름을 잊어버릴 일은 없을 듯하다.

 

깔끔하게 번역해준 김재완 옮긴이 분에게 감사를 표한다.

 

반응형