[기술면접] 함수형 프로그래밍

한재창·2023년 5월 23일
0
post-thumbnail

함수형 프로그래밍

함수형 프로그래밍은 선언형 프로그래밍의 특징을 갖고 있다. 어떻게 할 것인가 보다는 무엇을 할 것인가를 표현한다. 거의 모든 것을 순수 함수로 나누어 조합하여 문제를 해결하는 기법으로, 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해준다. 같은 입력값에 대해서 항상 같은 값을 반환하고, side effect를 발생시키지 않는 것이 함수형 프로그래밍의 핵심이다.

함수형 프로그래밍 특징

  • 과정보다 결과에 관심이 많다.
  • 무엇이 실행될 지를 강조한다.
  • 데이터는 불변하다.
  • 문제를 함수로 분해한다.
  • 수학적 함수의 개념에 기반한다.
  • if-else와 같은 조건문 혹은 반복문을 지원하지 않는다.

관련 용어 및 개념

  1. 불변하는 데이터
    함수형 프로그래밍의 원칙 중 하나는 데이터를 함수 밖에서 변형하지 않는 것이다. 이것은 부수효과(Side Effect)를 방지할 수 있는 방법이며 함수의 영향에 대해 추론하는 것을 더 쉽게 만들어준다.

    💡 부수효과 : 함수 내의 동작으로 인해 함수 외부가 영향을 받는 것을 의미한다.

  2. 클로저
    부모 함수가 실행되었더라도 부모 함수의 변수에 접근할 수 있는 내부 함수를 뜻한다.

  3. 순수 함수
    순수 함수는 입력 파라미터에만 의존하며, 부수효과를 일으키지 않는 함수를 뜻한다. 함수형 프로그래밍은 순수 함수를 통해 불변하는 데이터의 특징을 가질 수 있다.

    바로 이점이 객체 지향 프로그래밍과 다른 점이다. OOP는 객체의 메서드가 객체의 상태와 상호작용하며 외부 상태가 함수 내에서 조작되고는 한다.

  4. 일급 객체 함수
    실제로 함수형 프로그래밍은 일급 객체 함수에 의존한다. 일급 객체 함수는 다음과 같은 특징을 가진 객체를 뜻한다.

    변수나 데이터 구조 안에 담을 수 있다.
    파라미터로 전달 할 수 있다.
    반환 값으로 사용할 수 있다.
    할당에 사용된 이름과 관계없이 교유한 구별이 가능하다.
    동적으로 property 할당이 가능하다.

    함수형 프로그래밍에서 함수는 일급 객체로 취급된다. 따라서 일급 객체 함수란 일급 객체로 취급되는 함수를 뜻한다.

    이러한 일급 객체 함수는 사용에 제한이 없기 때문에 프로그램 내 어디서든 사용할 수 있어 유연하고 유용하다.

  5. 유지 관리 가능성
    함수 밖에서 의도치 않게 어떠한 것이 바뀌지 않으므로 프로그램을 유지 관리하기 용이하다는 뜻이다.

  6. 모듈화
    모듈화는 생산성을 증가시킨다. 작은 모듈은 빠르게 작성할 수 있으며 재사용하기 용이하여 프로그램 개발 속도를 높일 수 있다. 또한 모듈은 분리하여 테스트하기에도 유용하여 디버깅과 테스트 시간을 줄일 수 있다.

  7. 참조 투명성
    함수형 프로그래밍에서 함수는 항상 같은 동작을 진행한다. 따라서 프로그래머는 함수의 실행으로 인해 어떠한 결과를 반환할지 예측할 수 있다. 동일한 인자에 대해서는 항상 동일한 결과를 반환한다는 뜻으로 해석해도 된다.

profile
취준 개발자

0개의 댓글