-
[JAVA] 함수형 프로그래밍CS/Java 2021. 8. 7. 18:31
📝 함수형 프로그래밍
💻 명령형 프로그래밍(절차지향, 객체지향)
✔ 어떻게 할지 표현한다. 알고리즘을 명시하고, 목표는 명시하지 않는다.
🔧 명령형 프로그래밍의 특징
- 어플리케이션의 상태가 공유되고, 객체의 메서드와 함께 배치된다.
- 상태와 상태를 변경시키는 관점에서 연산을 설명한다.
🔧 간단한 명령형 프로그램을 작성해 보자. with JAVA
for(int i = 0; i < 10; i++) { System.out.println(list.get(i); }
- i를 출력하기 위한 로직은 명시되어 있지만, 위 로직이 출력만을 위한 로직이라고 할 수는 없다.
- 이 과정에서 i라는 변수에 대한 값이 변경된다.
💻 선언형 프로그래밍(함수형)
✔ 어떻게 보다는 무엇을 하는지 설명하는 방식이다. 알고리즘을 명시하지 않고 목표만 명시한다.
🔧 함수형 프로그래밍의 특징
- 부수효과(변수 값 변경, 예외 발생, 자료구조 수정 등)가 없는 순수 함수를 사용하여 Thread에 안전성을 보장 받을 수 있다.
- 병렬 처리를 동기화 없이 진행할 수 있다.
🔧 간단한 함수형 프로그램을 작성해 보자. with JAVA
list.stream().forEach(System.out::println);
- 명령형 프로그래밍 코드와 비교해 보면, 어떻게 동작하는지에 대한 로직이나 알고리즘이 겉으로 드러나지 않는다.
- 변수값도 사용하고 있지 않다.
- 위 코드는 출력을 하기 위한 목표를 가진 프로그램이라는 것이 명확함을 알 수 있다.
🔧 JAVA 8버전 이상에서는 람다식, Stream API 등이 추가되며 함수형 프로그래밍이 가능해 졌다.
- 람다함수: 익명함수 라고도 하며, 함수형 인터페이스를 사용한다. (파라미터) -> {몸체}로 표현한다.
- Stream API: 컬렉션과 같은 저장 요소를 반복적으로 처리할 수 있는 기능이다.
REFERENCE
'CS > Java' 카테고리의 다른 글
[JAVA] Garbage Collector (2) 2021.07.17 JAVA - 프레임워크, 라이브러리 (0) 2021.03.01 JAVA - 디자인 패턴 (0) 2021.03.01 JAVA - 데이터 타입, 변수 (0) 2021.02.28 JAVA - Servlet (0) 2021.02.28