CS/디자인 패턴과 프로그래밍 패러다임

프로그래밍 패러다임

calendar2 2024. 6. 24. 17:43

프로그래밍 패러다임이란?

프로그래머에게 프로그래밍의 관점을 갖게 해주는 개발 방법론

패러다임의 분류

  • 선언형 프로그래밍
    • 함수형 프로그래밍
  • 명령형 프로그래밍
    • 객체지향형 프로그래밍
    • 절차지향형 프로그래밍

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

선언형 프로그래밍(declarative 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

 

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

순수 함수

  • 출력이 입력에만 의존하는 함수
  • 출력 결과가 매겨변수 이외의 변수로부터 영향을 받을 경우 순수 함수가 아님

예시 코드

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

고차 함수

  • 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 함수
  • 고차 함수를 쓰기 위해서는 해당 언어가 일급 객체라는 특징을 가져야 함

일급 객체

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

자바스크립트와 함수형 프로그래밍

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

절차지향 프로그래밍

절차지향 프로그래밍은 명령형 프로그래밍의 하위 단위이며, 로직이 수행되어야 할 연속적인 계산 과정으로 이뤄져 있다.

장점

  • 코드의 가독성이 좋다
  • 실행 속도가 빠르다

단점

  • 모듈화가 어렵다
  • 유지 보수성이 떨어진다

사용 예시

위 특징들로 인해 절차지향 프로그래밍 방식은 계산이 많은 작업에 쓰인다. 위에 작성한 배열의 최댓값을 찾는 예제를 절차지향적인 방식으로 작성하면 다음과 같다.

const ret = [1, 2, 3, 4, 5, 11, 12]
let a = 0
for (let i = 0; i < ret.length; i++) {
  a = Math.max(ret[i], a)
}
console.log(a) // 12

객체지향 프로그래밍

객체지향 프로그래밍은 내용이 많기에 포스트를 따로 올린다.

2024.06.24 - [CS/디자인 패턴과 프로그래밍 패러다임] - 객체지향 프로그래밍

 

객체지향 프로그래밍

객체지향 프로그래밍이란?객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식 영어로 Object-Oriented Programming으로 작성

calendar2.tistory.com

참고자료

  • 면접을 위한 CS 전공지식 노트