객체지향 프로그래밍은 움직이는 부분을 캡슐화하여 코드 이해를 돕고, 함수형 프로그래밍은 움직이는 부분을 최소화하여 코드 이해를 돕는다 - 함수형 사고

  • 함수형 프로그래밍이란
    • 함수를 하나의 변수로 만드는 것
    • 순수함수를 작성하는 것, 숨겨진 입력이나 출력을 최대한 제거하여 가능한 코드를 입력과 츌력의 관계를 기술하게끔 한다.
    • 부작용을 최소화하고 복잡성을 낮춘다.

    • 메소드들을 레고처럼 사용?
  • 특징
    • 입출력이 순수해야 한다(순수함수)
      • 하나 이상의 인자를 받고, 받은 인자를 처리하여 반드시 결과물을 둘려주어야한다. 받은 인자만으로 결과물을 내어야한다.
    • 부작용(부산물, side effect)이 없어야힌다.
      • 함수의 실행이 외부에 영향을 끼치지 않는 함수를 뜻한다. 스레드는 안전하고 병렬적 계산가능, 코드가 간결
    • 함수와 데이터를 중점으로 생각한다.
  • 장점
    • 코드의 동작을 추론하기 쉽다.
    • 쓰레드간에 객체를 안전하게 공유할 수 있다.
    • 모듈성과 재사용률을 높일 수 있다.
    • 테스트하기 쉽다.
  • 단점
    • 기본적으로 추상화 단계가 지나치게 높아져서 읽기 어렵다.
    • 기존의 자료구조를 상당히 들어엎어야 한다.
    • 함수형 언어의 장점인 병렬/분산 프로그래밍 또한 실제로는 기존 명령형 언어들의 기능을 가지고도 구현할 수 있다
  • 요약

함수를 하나의 변수로 만드는 것, 부작용을 최소화하고 복잡성을 낮춘다 코드의 동작을 추론하기 쉽고 쓰레드간에 객체를 안전하게 공유할 수 있으며 모듈성과 재사용률을 높일 수 있다. 하지만 기본적으로 추상화 단계가 지나치게 높아져서 읽기 어렵다.