적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

컴퓨터시스템

[Programming Paradigm] declarative(선언형) vs. imperative(명령형) programming

hongssup_ 2021. 4. 1. 13:52
반응형

명령형 imparative

: 어떤 방법으로 어떻게 하려고 하는가

writing sequence of introductions that the program follows (uses statements that change a program’s state?)

- 실행될 알고리즘을 명시하고 목표는 명시하지 않음

- 객체지향 프로그래밍(Swift UIKit, Java 등), 절차적 프로그래밍 등이 명령형

 

선언형 declarative

: 무엇을 하려고 하는가

expresses the logic of a computation without describing its control flow. don’t specify how to achive

- 목표를 명시하고 알고리즘을 명시하지 않음. 

- 함수형 프로그래밍(SwiftUI), 논리형 프로그래밍 등의 경우 선언형을 사용. 

 

SwiftUI에서 

이 카드의 폰트를 설정하기 위해 이 함수를 쓴다 (x)

이 함수는 view를 변경한다 이 폰트를 사용해서 draw 하도록 (o)

선언형 - 이 폰트는 이 View를 그리기 위해 사용되었다. at any moment in time ( time insensitive)

명령형 - 언제 어떻게 그려라. 

var body: some View 는 내가 부르는 게 아니라 system이 부르는 거. 

*** 그러면 UIKit에서는 viewController lifecycle 안에서 언제 생성되고 언제 없어질지 알려주니깐 명령형이고 SwiftUI에서 view 생성할 때는 내가 직접 명령하는게 아니라 system 알아서 언제든지 해주니깐 선언형인것인가? 

728x90
반응형