프로그래밍의 패러다임
프로그래밍 패러다임은 프로그래밍 할때 프로그래밍을 어떻게 할 것인가인데, 특히 어떤 사고 방식을 말한다. 새로운 패러다임을 접할 때 중요한 것은 새로운 방식으로 생각하는 법이다.

함수형 프로그래밍
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이 이 글자에서 비롯됐다.

람다식 (Lambda Expression)

메서드를 간단한 '식(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. 메서드의 이름과 반환타입을 제거하고 ->를 추가한다.
  2. 반환값이 있으면 return을 지우고 세미콜론도 지운다.
  3. 매개변수의 타입이 추론 가능하면 생략가능하다. (대부분 생략가능)

자바에서 람다식을 수용한 이유
컬렉션 요소(대용량 데이터)를 필터링 또는 매핑해서 쉽게 집계할 수 있기 때문이다. (공부 필요)

1급 시민 (First-class citizen)

특징은 아래와 같다.

  1. 변수에 할당이 가능해야 한다.
  2. 파라미터로 전달 할 수 있어야 한다.
  3. 리턴 값으로 전달 할 수 있다.

자바에서 숫자나 문자는 1급 시민의 조건을 충족한다는 표현을 사용한다.
1급 시민? 왜 이런 개념이 필요한가?

이해하기 위해 필요한 개념

  1. 고차 함수(high order function)
    • 예제: Map, Reduce, Filter
  2. 클로져(closure)
  3. 자바8 람다가 생기기 전에 자바7에서는 어떻게 함수에서 함수를 넘겨줬는지 알아보아야 함.
profile
TIL 남기는 공간입니다

0개의 댓글