기록

[GPT가 알려주는] 명령형 vs 선언형 본문

잡동사니/GPT가 알려주는

[GPT가 알려주는] 명령형 vs 선언형

heylo 2025. 10. 22. 15:58

명령형: kt + xml
선언형: kt (Jetpack Compose)

 

좋아, “선언형 vs 명령형” 차이점…
초등학생도 이해할 수 있게!
라면 끓이기 예시로 알려줄게 🍜


🍜 명령형 프로그래밍 (Imperative)

"하나하나 내가 직접 시켜야 해"

예시:

water.boil()
noodles.putIn()
wait(3분)
soupPowder.putIn()
stir()

➡️ 라면 끓이는 모든 과정을 내가 순서대로 말해야 해.
➡️ “물을 끓여!”, “면을 넣어!”, “3분 기다려!” … 다 일일이 알려줘야 함.

💬 View/XML도 이런 방식

  • button.setText("시작")
  • view.visibility = View.GONE
  • adapter.notifyDataSetChanged()

➡️ 개발자가 직접 시키는 방식이라서 귀찮고 실수도 많음.


🧙 선언형 프로그래밍 (Declarative)

"결과만 말하면, 알아서 해줘"

예시:

라면 상태 = { 물이 끓었고, 면이 들어가 있고, 스프도 넣어짐 }

➡️ 나는 "이 상태가 되게 해줘!" 라고 말만 해.
➡️ 그럼 컴퓨터가 알아서 라면을 끓여주는 거야.

💬 Jetpack Compose는 선언형

Text("버튼을 $count 번 눌렀어요")

➡️ count 값만 바뀌면, Text가 알아서 바뀜.
➡️ 내가 "바꿔!"라고 말할 필요가 없음.


🔍 표로 다시 비교해볼게!

구분 명령형 (View/XML) 선언형 (Compose)

말투 "이거 해!", "저거 바꿔!" "이렇게 보여줘!"
예시 button.setText("시작") Text("시작")
코드량 많고 복잡함 적고 간단함
실수 많음 (누락, 순서 틀림 등) 적음 (상태만 관리)
자동 반응 ❌ 없음 (수동 처리) ✅ 있음 (자동 갱신)

✨ 결론 요약!

질문 답

선언형이 뭐야? "이렇게 보여줘!" 결과만 말하는 방식
명령형이 뭐야? "이거 해!" 순서를 직접 말하는 방식
어떤 게 더 편해? 👉 실시간 변화 많을수록 선언형(Compose) 이 최고야

궁금하면 라면 대신 다른 예로도 설명해줄게! 😄
(예: 옷 고르기, 그림 그리기, 피아노 연주 등 비유 무한 가능)