함수형 프로그래밍?
- 기존 프로그래밍: 작업을 어떻게 수행할 것인지, 데이터를 "어떻게(HOW)" 처리하는 지에 집중!
- 함수형 프로그래밍: 구체적인 작업 방식은 라이브러리가 결정. "무엇(WHAT)"을 수행하는지에 집중
- side-effect가 없음!
- 대입문이 없어, 변수에 값 할당되면 절대 못바꿈
- 변수의 변형이 없음!
- 각 함수들은 인자를 받고, 그에 따른 결과를 반환한다. 내부적으로 어떤 상태 X
- 오로지 함수에서 input과 return 값이 중요!
- 문제를 작은 단위로 쪼개는 방법을 익히기!
장점
- 멀티코어와 동시성 제어
- Java 8에서 간결한 코드, 멀티코어 프로세서의 쉬운 활동을 보장할 수 있음
- stream().parallel()
- Immutable value를 활용하자
- 값이 변경되는 객체는 멀티 스레드에서 위험!
- 불변을 보장해 버그를 줄이자!
- 함수형 프로그래밍에서는 함수가 "1급 시민"
- 함수를 인자로, 반환값으로, 자료구조에 저장하는 방식으로 사용할 수 있다!
Lambda 표현식
- 메서드로 전달할 수 있는 익명함수
- 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트 등 가짐