이것저것 공부한 기록

[Kotlin] 함수형 프로그래밍, 순수 함수, 1급 시민 함수 본문

Study/Kotlin&Android

[Kotlin] 함수형 프로그래밍, 순수 함수, 1급 시민 함수

블랜디 2021. 8. 5. 22:05

함수형 프로그래밍 (Functional Programming)

- 선언형 프로그래밍( Declarative Programming )의 한 갈래

- 자료 처리를 수학적 함수의 계산으로 취급하고, 상태와 가변 데이터의 개념을 멀리하는 프로그래밍 패러다임.

- 상태를 바꾸는 것을 최대한 배제하고, 구현에 있어 함수를 응용할 것을 강조한다.

- 최소 단위 함수로 구성하고, 모든 함수가 같은 인자에 대해 한결같은 결과값을 출력하도록 하여 프로그램의 동작을 쉽게 이해하고 예측할 수 있게 하는 개발 방법.

- 장점 : 코드가 간결하다. 멀티스레드 환경에서도 안전하다. 테스트하기 쉽다.

 

 

순수 함수 (Pure function)

- 함수의 실행이 외부에 영향을 끼치지 않는 함수

- 함수에 동일한 인자를 주었을 때 항상 같은 값을 리턴하는 함수

- 좀 더 자세히 적자면... 입출력 코드를 가지고 있지 않음/ 매개변수 변경이 일어나지 않음/ 결과를 즉시 반환함/ 비동기적 동작이 없음/ 전역변수나 정적변수를 사용하지 않음/ 예외를 발생시키지 않음/ 콜백 함수로 구현되었거나 콜백 함수를 사용하는 코드가 없음

 

 

 

1급 시민 (First-class citizen)

- 프로그래밍의 변수에서 1급 시민의 조건

1. 변수에 담을 수 있다.

2. 함수(혹은 메소드)의 인자(매개변수, Parameter)로 전달할 수 있다.

3. 함수(혹은 메소드)의 반환값(return)으로 전달할 수 있다.

- 대부분의 프로그래밍 언어에서 숫자형/문자형 등은 1급 시민의 조건을 충족한다.

 

 

 

1급 함수 (First-class function)

- Kotlin의 함수는 1급 함수, 즉 1급 객체이다.

- 이 말은... Kotlin에서는 함수를 변수에 할당이 가능하고, 인자 또는 반환값으로 사용할 수 있다는 것이다.

- Kotlin은 함수형 프로그래밍을 지원한다. ( 명령형 프로그래밍으로, 또는 둘을 섞어서 프로그래밍할 수도 있다! )

 

 

 

 

 

 

 

처음에는 1급 시민 개념이 왜 자꾸 나오는지 몰랐는데, 함수형 프로그래밍을 이해하려면 필요한 개념인걸 오늘 세미나를 통해 알았다... 으아악..................