함수형 프로그래밍

김민영·2023년 1월 13일
0

CS 스터디

목록 보기
2/32

함수형 프로그래밍

  • 프로그래밍 패러다임
    • 명령형 프로그램
      • 절차적 프로그래밍
      • 객체 지향 프로그래밍
    • 선언형 프로그래밍
      • 함수형 프로그래밍

특징

  • 함수형 프로그래밍

    • ex) SQL, Scala, Clojure

    • 과정Process보다 결과Result 중심.

    • 어떻게How 보다 무엇What을 할 것인가를 표현

    • 데이터는 불변immutable

    • 문제를 함수로 분해Decompose

    • 수학적 함수의 개념에 기반

    • 조건문, 반복문 x

관련 용어

  • 불변하는 데이터 Immutable Data

    • 데이터를 함수 밖에서 변형modify 하지 않음. 함수 반환값Return Value으로 함수 내에서 수행된 작업 반영

    • 부수효과side effect 방지

      • 부수효과: 함수 내의 동작으로 함수 외부가 영향을 받는 것. ex) 함수 내의 동작으로 함수 밖 변수 변경, 예외 오류 발생해서 실행 중단.
  • 클로저

    • 부모 함수가 실행되었더라도 부모 함수의 변수에 접근할 수 있는 내부 함수inner function
  • 순수 함수 Pure function

    • 함수형 프로그래밍의 이상ideal

    • 입력 파라미터에만 의존, 부수효과를 일으키지 않는 함수.

    • 이를 통해 불변하는 데이터의 특징을 가짐. 단순함.

    • 인수arguments와 반환값으로만 환원

    • 정의된 API를 통해서만 외부 시스템과 상호작용하여 결과를 만들어냄.

    • 정해진 입력값을 주면 정해진 반환값을 줌. 부수효과 없음.

  • 일급 객체 함수

    • 실제로는 일급 객체 함수에 의존. 유연하고 유용하게 사용.

      • 변수나 데이터 구조 안에 담을 수 있음

      • 파라미터로 전달 가능

      • 반환 값으로 사용 가능

      • 할당에 사용한 이름과 관계없이 고유한 구별 가능

      • 동적으로 property 할당 가능

  • 유지 관리 가능성

    • 부수 효과가 없으므로 프로그램 유지관리 용이
  • 모듈화

    • 생산성 증가. 작은 모듈 빠르게 작성 가능, 재사용 용이.

    • 프로그램 개발 속도 높임. 모듈은 분리하여 테스트하기도 유용. 디버깅, 테스트 시간 감소

  • 참조 투명성

    • 함수는 항상 같은 동작 진행. 결과 예측 가능. 동일 인자 동일 결과 반환

장점

  • 헷갈리는 문제, 오류 피함
  • 테스트, 디버깅 용이
  • 개선된 모듈화, 짧은 코드
  • 개발 생산성 높음
  • 가독성 좋은 코드
  • 부수효과 제거
  • 함수 단위 코드 재사용
  • 프로그램 동작 예측 용이

한계

  • 함수가 많아지면 파악, 유지관리 어려움
  • 광범위한 환경 설정 필요할 수 있음
  • 함수 많아질수록 조합하기 복잡, 꾸준한 리팩토링 필요할 수 있음
profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글