<쏙쏙 들어오는 함수형 코딩> 책 추천

Roeniss Moon·2023년 1월 15일
0

독서

목록 보기
19/33

이 책은 무엇을 말해주는가

아래 질문에 대한 심플하고도 유용한 답을 준다. (유일한 해답은 아니겠지만!)

  • 말 그대로 코드 한 줄 한 줄 작성할 때 어떤 일관된 원칙을 가지면 좋을까?
  • 하스켈은 자바랑 뭐가 다를까?*
  • 동시성 이슈는 어떻게 다루는게 좋을까?
  • 함수형 프로그래밍의 패러다임이 일반 언어(파이썬, C#, 코틀린, 자바스크립트 등)에 널리 퍼졌단 얘기는 들어봤는데, 그게 정확히 뭘까?
  • 고차 함수**는 너무 복잡한 것 같은데 이게 좋은 거 맞나?
  • 헥사고날/어니언/DDD 아키텍처를 코드 레벨에서 어떻게 구현하지? 도메인을 격리한다는게 진짜 "코드 레벨"에서 어떻게 나타날까?

*하스켈을 클로저나 엘릭서로 바꿔도 된다
**나는 리액트 공부할 때 처음 봤다

간단히 요약하면, 이 책은 진짜 한 줄 한 줄 코드를 쓰는 개발자가 필요로 하는 테크닉을 담고있다.

그 외에 이 책의 장점

  • 내용이 어렵지 않은데 연습문제까지 있어서 너무 친절하다. 웬만한 개발서적에선 찾아볼 수조차 없는 직관적인 문제들이 너무 좋다. 가끔은 좀 짜친다는 생각이 들지만.

내가 중요하다고 느껴서 색칠한 부분들

을 적당히 가공한 내용:

  • 모든 것은 셋 중 하나다 : 데이터, 계산, 액션

  • 액션은 호출 타이밍과 호출 횟수가 중요한 행위다.

  • 계층형 설계 - 직접 구현 : 함수의 호출그래프를 한 판 그리고 나면, 화살표의 길이가 다양한 것을 보고 추상화 단계가 제멋대로임(= 직접 구현이 잘 안 되었음)을 알 수 있다.

  • 계층형 설계 - 추상화 벽 : 추상화 벽 위에 있는 함수만을 사용해 안팎이 소통해야 한다.

  • 리팩터링 1 - 함수 이름에 인자가 있다면 (코드 스멜) --> 명시적인 인자로 대체

  • 리팩터링 2 - 함수에 동작을 전달해야 한다면 --> 함수를 콜백으로 전달

  • "(고차 함수를 만들면) 마치 복잡한 퍼즐을 풀고 똑똑해진 것 같은 느낌을 받는 것처럼 여러분의 뇌를 자극합니다. 좋은 엔지니어링은 퍼즐을 푸는 것이 아닙니다. 효과적으로 문제를 해결할 수 있어야 합니다."

  • reduce 로 map 이나 filter 를 만들 수 있다. 반대로는 안된다.

  • 변이(변수의 변화) 지역적으로 일어나고 공유되지 않는다면 여전히 계산이다.

  • 체이닝을 명확하게 만들기: 단계에 이름 붙이기 / 콜백에 이름 붙이기* (후자가 재사용에 유리함) *후자는 저수준 함수들을 그대로 드러내는 경향을 보이는 듯 (filter, map, etc)

  • 타임라인 그리기 : 액션만 그린다. 순서대로 일어나면 동일한 타임라인에 넣는다. 동시에 두 액션 이상이 일어나면 타임라인을 분리한다.

  • 좋은 타임라인의 원칙 : 타임라인은 적고 짧을수록 이해하기 쉽다. 공유자원이 적을수록 이해하기 쉽다. 공유자원은 조율해야 한다. 시간*을 일급으로 다룬다. *시간을 다룬다는 말은, 액션들의 불분명한 호출 순서를 완벽히 통제한다는 뜻이다.

  • 반응형 아키텍처*를 사용해야 할 때 : 하나의 원인이 N 개의 결과를 만들 때. *이 파트가 내겐 DDD로 읽혔다

  • 도메인 용어가 아닌 표현이 있다면 도메인 모델이 아니거나 부적절한 모델링의 증거다 : '데이터베이스', 'AJAX' 는 도메인 용어가 아니다.

misc

  • An Intuition for Lisp Syntax (https://stopa.io/post/265) : LISP 문법의 장점을 얘기하는데, 전반적인 분위기나 난이도나 다루는 주제가 본 책과 일맥상통한다. 본 책보다 조금 어려우니 이해 못해도 실망하지 말길.

  • 제목이 좀 유치찬란한 느낌이 있지만... 원제목은 좀 더 낫다.

  • 저자인 에릭 노먼드가 직접 이 주제를 가지고 발표했다. 50분짜리 책 홍보 영상이지만 상당히 도움이 된다. 이 영상을 보고 오! 그렇구나! 하고나서 조금 더 체화하기 위해서 책을 사는 시나리오를 추천한다.

  • 그린랩스가 주최한 컨퍼런스 Dev Dive 2022에서 이 책의 번역자가 하스켈을 주제로 발표했었다. 위에 언급한 영상을 봤을 때는 이 책이 번역된 줄 몰랐다가, 이 날 발표를 듣다가 번역된 걸 알고나서 접하게 된 케이스다. 감사합니다, 은민님!

profile
기능이 아니라 버그예요

0개의 댓글