해당 포스트는
쏙쏙 들어오는 함수형 코딩
을 학습하며 필요한 내용을 정리한 포스트입니다.
🌈 19. 함수형 프로그래밍 여행에 앞서
이번 장에서 살펴볼 내용
- 직장 상사의 심기를 건드리지 않고 새로운 기술을 적용하거나 학습하는 방법
- 함수형 기능에 심취하기 위해 함수형 프로그래밍 언어 한두 개를 골라 본다.
- 함수형 프로그래밍의 수학적인 관점으로 깊이 들어가 본다.
- 함수형 프로그래밍을 더 배우기 위한 책을 알아 본다.
💻 전문가의 기술을 배웠다.
🍳 파트 1 : 액션과 계산, 데이터
코드에서 액션과 계산, 데이터를 구분해 가장 문제되는 부분을 찾음
액션에서 계산을 빼내 재사용하기 좋고 테스트하기 쉬운 코드를 만듦
암묵적인 입력과 출력을 명시적인 것으로 바꿔 액션의 설계를 개선
불변성을 구현해 데이터 읽기를 계산으로 만듦
계층형 설계로 코드를 구성하고 개선
💻 파트 2 : 일급 추상
언어의 문법을 일급으로 만들어 코드를 추상화
함수형 반복과 함수형 도구를 사용해 고차원으로 추론
함수형 도구를 연결해 데이터 변환 파이프라인을 만듦
타임라인 다이어그램을 통해 동시성 분산 시스템을 이해
버그를 없애기 위해 타임라인을 활용
고차 함수로 안전하게 상태를 변경
반응형 아키텍처를 사용해 원인과 효과의 결합을 줄임
세상과 상호작용하기 위해 어니언 아키텍처 설계를 서비스에 적용
💻 꼭 기억해야 할 것
🍳 어떤 경우에는 액션에 계산이 숨어있다.
계산을 찾아서 빼내는건 귀찮지만 가치있는 일
계산은 액션보다 재사용하기 좋고, 테스트하거나 이해하기 쉽다.
액션과 계산, 데이터를 구분하는 것은 함수형 프로그래밍 기술의 기본
🍳 고차 함수를 사용하면 추상화에 대한 개념이 넓어진다.
🍳 코드에서 시간의 의미는 마음대로 바꿀 수 있다.
타임라인 다이어그램으로 시간 흐름에 따라 코드가 어떻게 실행되는지 시각화할 수 있다.
액션은 실행 시점(순서)와 실행 횟수(반복)가 중요
💻 샌드박스 : 사이드프로젝트를 시작해라
처음에는 작은 프로젝트로 시작
재미로 하는 사이드 프로젝트를 만들어라
익숙한 기술과 새로운 기술을 함께 사용해라
언제든지 기능을 추가해볼 수 있는 프로젝트를 준비해라
💻 샌드박스 : 연습 문제로 훈련하기
**💻 제품 **
🍳 오늘 당장 버그를 없애 보자
변경 가능한 전역변수를 하나씩 줄인다. (3장 ~ 5장)
타임라인을 하나씩 줄인다. (15장 ~ 17장)
🍳 설계를 하나씩 개선하자
액션에서 계산을 빼내자
암묵적 입력과 출력을 명시적으로 바꿔보자
반복문을 바꿔보자 (12장 ~ 14장)
💻 인기 있는 함수형 프로그래밍 언어
💻 수학적 지식
- 람다 대수
- 콤비네이터
- 타입이론
- 카테고리 이론
- 이펙트 시스템
💻 요점 정리
이 책에서 중요한 기술을 많이 배웠다.
- 기술을 마스터하기 위해 계획을 세워 보면 좋다.
기술을 잘 쓸 수 잇는 준비가 되지 않았지만 열정이 넘칠 수 있다.
- 실험하고 연습할 수 있는 안전한 장소를 찾자
함수형 프로그래밍으로 더 좋은 제품 코드를 만들 수 있다.
- 제품 코드에 사용하면서 생기는 부담은 기술을 연마하는 데 도움이 되기도 한다.
사이드 프로젝트나 실제 제품에 사용할 수 있는 실용적인 함수형 프로그래밍 언어가 많이 있다.
- 사이드 프로젝트나 실제 제품에 적용하는 것은 함수형 프로그래밍 분야에서 경험을 쌓기 좋은 환경이다.
함수형 프로그래밍에는 수학적 개념이 사용되기도 한다.
📚 레퍼런스
Normand, 김은민, and Normand, Eric. (쏙쏙 들어오는) 함수형 코딩 : 심플한 코드로 복잡한 소프트웨어 길들이기 / 에릭 노먼드 지음 ; 김은민 옮김 (2022). Print.