CS 면접 바이블: Chapter 1.2

정지인·2026년 8월 21일
post-thumbnail

프로그래밍 패러다임

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

프로그래머가 프로그램을 바라보고 설계하는 관점과 개발 방식

같은 문제를 해결하더라도 어떤 패러다임을 사용하느냐에 따라 코드를 구성하고 문제를 해결하는 방식이 달라짐

예시:

  • 객체지향 프로그래밍 → 프로그램을 상호작용하는 객체들의 집합으로 표현
  • 함수형 프로그래밍 → 프로그램을 상태 변경을 최소화한 함수들의 조합으로 표현

프로그래밍 패러다임의 분류

선언형 프로그래밍

  • 무엇을(What) 할 것인지 중심으로 작성
  • 원하는 결과를 선언하고 구체적인 처리 과정은 상대적으로 감추는 방식

함수형 프로그래밍

  • 선언형 프로그래밍의 한 종류
  • 상태 변경과 부작용을 최소화하고 함수의 조합을 통해 프로그램 구성
  • 대표 언어: Haskell
  • Java는 JDK 8부터 람다식, 메서드 참조, 생성자 참조, Stream API 등을 지원하면서 함수형 프로그래밍 방식 활용 가능

명령형 프로그래밍

  • 어떻게(How) 처리할 것인지 중심으로 작성
  • 명령문의 순서와 상태 변화를 통해 프로그램의 동작을 표현

절차지향 프로그래밍

  • 프로그램의 처리 과정을 절차와 함수의 실행 순서를 중심으로 구성
  • 대표 언어: C

객체지향 프로그래밍

  • 프로그램을 상태와 행동을 가진 객체들의 상호작용으로 구성
  • 대표 언어: Java, C++

여러 패러다임을 지원하는 언어

  • 하나의 언어가 반드시 하나의 프로그래밍 패러다임만 지원하는 것은 아님
  • C++, Python, JavaScript 등은 여러 프로그래밍 패러다임을 지원
  • Java는 JDK 8 이전에는 객체지향 프로그래밍을 중심으로 사용되었으며, JDK 8부터 함수형 프로그래밍을 위한 기능이 추가
  • 따라서 Java는 순수 함수형 언어가 아니라 객체지향을 중심으로 함수형 프로그래밍도 지원하는 다중 패러다임 언어

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

선언형 프로그래밍 (declarative programming)이란 '무엇을' 풀어내는가에 집중하는 패러다임

"프로그램은 함수로 이루어진 것이다."

함수형 프로그래밍 (functional programming) 선언형 패러다임의 일종

ex) 자연수로 이루어진 배열에서 최댓값을 찾기

const list = [1, 2, 3, 4, 5, 11, 12]
const ret = list.reduce((max,num) => num > max ? num : max, 0)
console.log(ret)
  • reduce()는 배열만 받아서 누적한 결괏값을 반환하는 순수 함수

함수형 프로그래밍은 이와 같은 작은 '순수 함수'들을 블록처럼 쌓아 로직을 구현하고 '고차 함수'를 통해 재사용성을 높인 프로그래밍 패러다임입니다. 자바스크립트는 단순하고 유연한 언어이며, 함수가 일급 객체이기 때문에 객체지향 프로그래밍보다는 함수형 프로그래밍 방식이 선호

순수 함수

  • 출력값이 입력값에만 의존하는 함수
  • 같은 입력값을 넣으면 항상 같은 결과를 반환
  • 함수 외부의 상태를 변경하거나 외부 상태에 의존하지 않음
const pure = (a, b) => {
  return a + b
}

pure 함수의 결과는 매개변수 a, b에만 영향을 받음.

만약 a, b 이외의 전역 변수 c 등이 결과에 영향을 준다면 순수 함수가 아님.


고차 함수

  • 함수를 매개변수로 받거나 함수를 반환하는 함수
  • 함수를 하나의 값처럼 활용하여 로직을 구성하는 방식

일급 객체

고차 함수를 사용하려면 함수를 일급 객체로 다룰 수 있어야 함

함수가 일급 객체라는 것은 다음 조건을 만족한다는 의미.

  • 함수를 변수에 할당 가능
  • 함수를 다른 함수의 매개변수로 전달 가능
  • 함수에서 다른 함수를 반환 가능

함수형 프로그래밍은 순수 함수와 고차 함수 외에도 불변성(Immutability), 커링(Currying), 함수 합성(Function Composition) 등의 특징을 가짐.

profile
인천대학교 멋쟁이사자 13기 백엔드 & 14기 백엔트 파트장 및 부회장

0개의 댓글