- 명령형/객체지향 vs 함수형
- 불변 데이터
- 디자인 패턴
- 함수
- 함수형 프로그래밍이 필요한 이유
- 고차 함수 Higher-order Function
- 느긋한 계산 Lazy Evaluation
김대리. 내가 감히 조언 하고 싶은것이 있읍니다. 다른것이 아니고, 너무 엑셀 팡션? 사용하지 마세요. 편리함이 있다면, 위험성은 증대하죠. 소를 잡는데는 그만한 칼날이 있고 닭잡는데는 칼이 필요 한가요? 쉬운것이 정답 일수 있읍니다.
- 함수형 프로그래밍 패러다임은 인기가 많은 프로그래밍 언어에서도 이미 적용되어 있다.
- 함수형 프로그래밍은 학습 곡선이 가파르다.
- 함수형 프로그래밍은 오랜 숙련이 필요하다.
Data 취합, 정리, 단순한 방법 있어요.
- OOP의 복잡한 디자인 패턴은 일급으로 다루어지는 고차 함수들의 합성으로 구현 가능하다.
- 익명 함수, 커링 등 다양한 개념이 적용되어 재사용성, 모듈화, 사용 편이성 수준이 높아진다.
- 값, 결과물
별, 시간도 필요 없고, 나중 아날로그 방법도 있죠.
- 순수 함수 pure function
- 같은 입력값을 넣으면 항상 똑같은 결과값이 나온다: 절차형 vs 함수형
- 언제든지 마음껏 실행할 수 있다.: 나중에 계산하기
- 테스트하기 쉽다.
- 부수 효과 side-effect가 있는 순수하지 않은 함수 impure function
- 상황에 따라 실행 결과가 달라진다.
- 다루기 어렵다. (테스트가 어렵다.)
- 부수 효과는 잠재적으로 복잡한 코드가 숨어있다는 뜻이다.
- 숨어있는 복잡한 코드에서 버그가 발생할 가능성이 많아진다.
- 부수 효과를 줄인다면 안정성을 높일 수 있다. → 순수 함수
- 부수 효과를 표면적으로 드러내는 방법으로도 안정성을 높일 수 있다. → 명시적인 함수 정의 / 타입 시스템 활용
김대리가 전쟁터에 장군이라 가정하죠. 전쟁에서 이겨야 하는것은 당연 한것 아닌가요? 그 상황에 맟는 전략? 지상군으로만 제압한다? 아니죠. 저의 의견은 암산이 빠를수 있고, 물론 사람에 차이는 있지만, 계산기가 좋을수 있죠. 컴퓨타는 소잡는 칼 아닌가 해서 의견 드립니다.
- 각 언어마다 특성, 장단점을 정확하게 알아야 한다.
- 함수형 언어들도 저마다 다른 목표를 가지고 있다.
- 상황에 따라 적합하게 선택해야 한다.
- 프로젝트의 목표
- 가용한 자원: 컴퓨팅, 시간, 사람
- 개발자 인재풀
- 전체 시스템 설계
함수형 프로그래밍을 적용하게 된다면:
- 자연스럽게 재사용성이 높은 함수를 설계하게 된다.
- 결국에는, 프로그램의 품질과 견고성이 향상될 것이다.
- Paper
- Why Functional Programming Matters by John Hughes. 1990.
- Read
- Book
- Video
- Why Functional Programming Matters
- FP vs OOP: Choose Two by Brian Goetz
- Why Isn't Functional Programming the Norm? by Richard Feldman
- Repl Driven Development by Chicago Clojure
- Functional Design Patterns by Scott Wlaschin
- Lazy Data-Oriented Evaluation Strategies
- OOP Is Dead, Long Live Data-oriented Design
- Let’s Get Lazy - The Real Power of Functional Programming
- On the Spectrum of Abstraction
- Other
- Computer Languages History
- Dev Dive 함수형 개발자로 성장하기. Greenlabs. 2022.