본문 바로가기

Swift

Imperative(명령형) vs. Declarative(선언형) Programming

Combine을 공부하려는데 두 개의 용어가 빈번하게 등장하니 간단히 개념을 잡고 넘어가자.

Imperative Programming

Wikipedia 에 따르면, imperative programming를 다음과 같이 정의한다.

  • In computer science, imperative programming is a programming paradigm that uses statements that change a program's state. In much the same way that the imperative mood in natural languages expresses commands, an imperative program consists of commands for the computer to perform. Imperative programming focuses on describing how a program operates.

요약하자면, 어떠한 것들을 수행할 지 명령어를 나열하는 방식을 말한다. 많이 들어본 procedural(절차적) programming 이 imperative programming에 속한 하나의 유형이다.

 

코드로 표현하면 아래와 같다. 정수가 저장된 배열에서 짝수인 요소만 선별하여 output을 만들고 싶을 때, 반복문과 조건문을 활용해서 할 수가 있다.

let arr = [1,2,3,4,5]

var output = [Int]()
for num in arr where num % 2 == 0{
    output.append(num)
}
print(output) // 2, 4

 

Declarative Programming

Wikipedia 에 따르면, declarative(선언적) programming를 다음과 같이 정의한다.

  • In computer science, declarative programming is a programming paradigm—a style of building the structure and elements of computer programs—that expresses the logic of a computation without describing its control flow.

imperative programming 과 대조적으로, declarative programming은 원하는 것에만 초점을 두어 내부 흐름은 알 필요가 없는 구조를 만드는 것이다.

 

위 예제는 declarative programming 방식으로는 아래와 같이 작성할 수 있다.

let output = arr.filter { $0 % 2 == 0 }