[JAVA]함수형 프로그래밍 (1)

Date:     Updated:

카테고리:

태그:

[27] 함수형 프로그래밍 (1)

27.1. 프로그래밍 방법론

  • 절차식 프로그래밍
    • 순차적인 명령을 수행하고 간단한 분기만 가능
  • 구조적 프로그래밍
    • 특정 변수를 묶어 구조화하고 이를 통해 프로그래밍 효율 높임.
  • 객체지향 프로그래밍
    • 객체를 기반으로 프로그래밍 되며 클래스, 속성, 기능들의 현실 세계 모델을 반영함.
  • 함수형 프로그래밍
    • 객체의 형태를 벗어나 함수형을 확장해 함수를 변수처럼 사용 가능.

27.2. 명령형 프로그래밍 vs 선언형 프로그래밍

  • Imperative Programming
    • OOP 객체 지향 프로그래밍
    • 어떻게 하여야 하는가? (How)
      예) 이메일을 담을 리스트 선언
          루프
          검증되지 않았는지 체크
          않았다면 변수에 이메일 추출
          이메일 리스트에 넣기
      
  • Declarative Programming
    • Functional Programming
    • 무엇을 하여야 하는가? (What)
      예) 유저리스트에서
          검증되지 않은 유저만 골라내서
          이메일을 추출해서
          리스트로 받기
      

27.3. First-Class Citizen (1급 시민) 조건

  • 함수/메서드의 매개변수(parameter)로서 전달할 수 있는가
  • 함수/메서드의 반환값(return)이 될 수 있는가
  • 변수에 담을 수 있는가

27.4. OOP (Object Oriented Programming)

vs f(x) (Functional Programming)

27.5. 함수형 프로그래밍과 람다식(Lambda expression)

  • 자바는 객체 지향 프로그래밍
    • 기능을 수행하기 위해서는 객체를 만들고 그 객체 내부에 멤버 변수를 선언하고 기능을 수행하는 메서드를 구현
  • 자바 8부터 함수형 프로그래밍 방식을 지원하고 이를 람다식이라 함.
    • 함수의 구현과 호출만으로 프로그래밍이 수행되는 방식
  • 함수형 프로그래밍 (Functional Programming: FP)
    • 순수함수(pure function)를 구현하고 호출함으로써 외부 자료에 부수적인 영향(side effect)를 주지 않도록 구현하는 방식임.
    • 순수함수
      • 매개변수만을 사용하는 만드는 함수임.
      • 함수 내부에서 함수 외부에 있는 변수를 사용하지 않음.
      • 함수가 수행되더라도 외부에 영향을 주지 않음.
    • 함수를 기반으로 하는 프로그래밍
      • 입력받는 자료 이외에 외부 자료를 사용하지 않음
      • 여러 자료가 동시에 수행되는 병렬처리가 가능.
      • 동일한 자료에 대해 동일한 결과를 보장함.

JAVA 카테고리 내 다른 글 보러가기

댓글 남기기