1. 선언형과 함수형 프로그래밍

2024. 12. 10. 00:36·CS/프로그래밍 패러다임
선언형 프로그래밍(declarative programming)이란?
선언형 프로그래밍이란 '무엇을' 풀어내는가에 직중하는 패러다임이며, '프로그램은 함수로 이루어진 것이다.'라는 명제가 담겨 있는 패러다임이기도 하다.
함수형 프로그래밍(functional programming)은 선언형 패러다임의 일종이다.

예를 들어 자연수로 이루어진 배열에서 최댓값을 찾으라고 한다면 다음과 같이 로직을 구성한다.

const list = [1, 2, 3, 4, 5, 11, 12]
const ret = list.reduce((max, num) => num > max ? num : max, 0)
console.log(ret) // 12

앞의 코드에서 reduce()는 '배열'만 받아서 누적한 결괏값을 반환하는 순수 함수이다.

 

함수형 프로그래밍은 이와 같은 작은 '순수 함수'들을 블록처럼 쌓아 로직을 구현하고 '고차 함수'를 통해 재사용성을 높인 프로그래밍 패러다임이다.

 

자바스크립트는 단순하고 유연한 언어이며, 함수가 일급 객체이기 때문에 객체지향 프로그래밍보다는 함수형 프로그래밍 방식이 선호된다.

순수 함수

출력이 입력에만 의존하는 것을 의미한다.

const pure = (a, b) => {
  return a + b
}

pure 함수는 들어오는 a, b에만 영향을 받는다.

만약 a, b 말고 다른 전역 변수 c 등이 이 출력에 영향을 주면 순수 함수가 아니다.

고차 함수

고차 함수란 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것을 말한다.

 

일급 객체

이때 고차 함수를 쓰기 위해서는 해당 언어가 일급 객체라는 특징을 가져야 하며 그 특징은 다음과 같다.

  • 변수나 메서드에 함수를 할당할 수 있다.
  • 함수 안에 함수를 매개변수로 담을 수 있다.
  • 함수가 함수를 반환할 수 있다.

참고로 함수형 프로그래밍은 이외에더 커링, 불변성 등 많은 특징이 있다.

커링 : 여러 매개변수를 받는 함수를 쪼개어 하나씩 받는 함수의 연속으로 표현

'CS > 프로그래밍 패러다임' 카테고리의 다른 글

3. 절차형 프로그래밍과 패러다임의 혼합  (0) 2024.12.27
2. 객체지향 프로그래밍  (2) 2024.12.27
0. 프로그래밍 패러다임  (0) 2024.12.10
'CS/프로그래밍 패러다임' 카테고리의 다른 글
  • 3. 절차형 프로그래밍과 패러다임의 혼합
  • 2. 객체지향 프로그래밍
  • 0. 프로그래밍 패러다임
seong-morning
seong-morning
seong-morning 님의 블로그 입니다.
  • seong-morning
    MilleZoo
    seong-morning
  • 전체
    오늘
    어제
    • 분류 전체보기 (87)
      • 백엔드 (17)
        • NestJS (17)
      • 인프라 (2)
        • Docker & Kubernetes (2)
      • CS (25)
        • 디자인 패턴 (9)
        • 프로그래밍 패러다임 (4)
        • 네트워크의 기초 (6)
        • TCP IP 4계층 모델 (2)
        • 네트워크 기기 (4)
      • 정보처리기사 (43)
        • [1과목] 1. 소프트웨어 설계 (10)
        • [1과목] 2. 화면 설계 (5)
        • [1과목] 3. 애플리케이션 설계 (8)
        • [1과목] 4. 인터페이스 설계 (4)
        • [2과목] 1. 데이터 입출력 구현 (6)
        • [2과목] 2. 통합 구현 (3)
        • [2과목] 3. 제품 소프트웨어 패키징 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    면접을 위한 cs 전공지식 노트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
seong-morning
1. 선언형과 함수형 프로그래밍
상단으로

티스토리툴바