오예 !!!

[프로그래밍 패러다임] 1. 선언형과 함수형 프로그래밍 본문

🌟취준/[CS STUDY] 프로그래밍 패러다임

[프로그래밍 패러다임] 1. 선언형과 함수형 프로그래밍

당도최고치악산복숭아 2023. 3. 14. 20:33

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

  • 선언형 프로그래밍
    • '무엇을' 풀어내는가에 집중
    • "프로그램은 함수로 이루어진 것이다"라는 명제가 담겨 있음
  • 함수형 프로그래밍
    • 선언형 패러다임의 일종
    • 작은 순수함수들을 블록처럼 쌓아 로직을 구현하고, 고차함수를 통해 재사용성을 높임
    • 자바스크립트는 단순 & 유연한 언어이고, 함수가 일급 객체 ➡️ 객체지향 보다 함수지향 프로그래밍 선호
    • 예시
      • reduce()는 '배열'만 받아서 누적한 결괏값을 반환하는 순수 함수
const ret = [1, 2, 3, 4, 5, 11, 12]
.reduce((max, num) => num > max ? num : max, 0)
console.log(ret) // 12
  • 순수 함수
    • 출력이 입력에만 의존하는 것
    • 아래의 pure 함수는 매개변수 a, b에만 영향 받음
    • a, b 외의 다른 전역 변수 등이 출력에 영향을 주면 순수 함수가 아님
const pure = (a, b) => {
  return a + b
}
  • 고차 함수
    • 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것
    • 고차 함수를 쓰기 위해서는 해당 언어가 일급 객체라는 특징을 가져야 함
  • 일급 객체
    • 변수나 메서드에 함수를 할당할 수 있음
    • 함수 안에 함수를 매개변수로 담을 수 있음
    • 함수가 함수를 반환할 수 있음
  • 함수형 프로그래밍은 이외에도 커링, 불변성 등 많은 특징 존재
Comments