프로그래밍의 패러다임
프로그래밍 패러다임은 프로그래밍 할때 프로그래밍을 어떻게 할 것인가인데, 특히 어떤 사고 방식을 말한다. 새로운 패러다임을 접할 때 중요한 것은 새로운 방식으로 생각하는 법이다.
함수형 프로그래밍
f(x) = y 형태의 함수로 구성된 프로그래밍 기법이다. f(x) = y 에서 추론할 수 있듯이, 데이터를 매개값으로 전달하고 결과를 받는 코드들로 구성되어 있다.
함수형 프로그래밍 VS 객체지향 프로그래밍
대용량 데이터의 처리시에 함수형 프로그래밍이 유리하다. 객체지향에서는 데이터의 보호를 위해서 여러가지 장치를 통해 포장이 되어있다. 포장된 것을 처리하는 것보다 데이터를 바로 처리하는 것이 속도에 유리하다.
OO makes code understandable by encapsulating moving parts. FP makes code understandable by minimizing moving parts.
마이클 페더스 - '레커시 코드 활용 전략' 저자
함수형 프로그래밍에서 중요한 키워드
1. 일급 시민 (First class citizen)
2. 람다 (Lambda)
Λ, λ는 그리스 문자 중의 11번째 글자이다. 그리스 숫자로는 30을 뜻한다. 로마 자 L이 이 글자에서 비롯됐다.
메서드를 간단한 '식(expression)'으로 표현하는 방법
// 예시 메서드
int max(int a, int b) {
return a > b ? a : b;
}
// 예시 람다식
(a, b) -> a > b ? a : b
위 예시를 보면 변수 타입과 이름이 없어진다.
그래서 람다식을 익명 함수(anonymous function)라고도 한다.
//예시 익명 함수
new Object() {
int max(int a, int b) {
return a > b ? a : b;
}
}
자바에서 람다식을 수용한 이유
컬렉션 요소(대용량 데이터)를 필터링 또는 매핑해서 쉽게 집계할 수 있기 때문이다. (공부 필요)
특징은 아래와 같다.
자바에서 숫자나 문자는 1급 시민의 조건을 충족한다는 표현을 사용한다.
1급 시민? 왜 이런 개념이 필요한가?
이해하기 위해 필요한 개념