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

0

기술 면접 준비

목록 보기
6/19
post-thumbnail

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

📝요약

함수형 프로그래밍이란 프로그램의 상태 변경을 최소화하는 것을 목표로 하는 프로그래밍 패러다임 중 하나입니다. 함수 프로그래밍의 특징으로는 순수 함수, 불변성, 고차 함수, 커리, 지연 평가가 있습니다. 함수 프로그래밍은 모듈성과 재사용성이 높고 병렬성과 동시성 처리가 쉽습니다. 그러나 상태 변화가 빈번한 프로그램일 경우 성능 저하의 단점이 있습니다.

📌침고자료

함수형 프로그래밍이란?

  • 프로그래밍 패러다임 중 하나
  • 순수 함수와 불변성을 강조하며, 프로그램의 상태 변경을 최소화하는 것을 목표로 함
  • 함수형 프로그래밍 지원 언어: 하스켈, 클로저, 스칼라, 에릭슨, 등
  • 함수형 프로그래밍 기법 적용 언어: 자바 스크립트, 파이썬, 루비, 등

함수형 프로그래밍이 발전하게 된 배경

  • 부작용과 상태 관리
    • 명령형 프로그래밍 - 상태 변경과 부작용이 빈번하게 발생
    • 함수형 프로그래밍 - 순수 함수와 불변성을 통해 개선
  • 모듈성과 재사용성
    • 명령형 프로그래밍 - 코드 모듈성&재사용성 제한적
    • 함수형 프로그래밍 - 고차 함수와 커링을 통해 개선
  • 병렬성과 동시성
    • 명령형 프로그래밍 - 병렬성과 동시성을 처리하려면 복잡한 동기화 기법 필요
    • 함수형 프로그래밍 - 불변성을 통해 개선

함수형 프로그래밍의 특징

  • 순수 함수(Pure Functions)
    • 동일한 입력에 대해 항상 동일한 출력 반환, 외부 상태에 영향 X
    • 함수 결과 예측 쉬움, 테스트 & 디버깅에 용이
  • 불변성 (Immutability)
    • 데이터의 상태를 변경하는 대신, 변경된 새로운 데이터 생성
    • 상태 변경으로 인한 버그 가능성 줄임
  • 고차 함수(Higher-order functiond)
    • 함수를 인자로 받거나 함수를 반환할 수 있는 함수
    • 코드 간결하게 작성 가능, 중복을 줄이고 재사용성 높일 수 있음
  • 커리 (Currying)
    • 여러 개의 인자를 가진 함수를 하나의 인자를 받는 함수로 변환하는 기법
    • 코드 간결하게 작성 가능, 함수 더 유연하게 조합 가능
  • 지연 평가(Lazy evaluation)
    • 표현식이 필요한 시점까지 계산을 미루는 기법
    • 불필요한 계산 줄임, 성능 향성

함수형 프로그래밍의 단점

  • 학습 곡선
  • 높은 추상화: 코드 해석 어려울 수 있음
  • 성능: 메모리 사용량 증가/가비지 컬렉션 비용 증가/스택 오버플로우 발생 가능
  • 최적화 제한: 몇몇 최적화 기법들이 함수형 프로그래밍에는 적용하기 어려움
  • 표현력: 상태 변경이 빈번하게 발생하는 경우, 함수형 프로그래밍으로 표현 어려움
profile
Be able to be vulnerable, in search of truth

0개의 댓글