# Declarative Programming VS Imperative Programming

Declarative Programming ဆိုတာ ကတော့ ဗျာ ဟိုလိုမျိုး ပေါ့ Program ကဘာလုပ်လဲ (What) ကို describe တော့လုပ်ထားတယ် ဗျ ဒါပေမယ့် အဲ Program မှာ အလုပ်လုပ်တဲ့ control flow ကိုတော့အသေးအစိတ်အတိအကျကြီး ကြိုတင်သတ်မှတ် မထား ဘူးပေါ့ဗျာ

Imperative Programming ဆိုကတော့ Program ကဘယ်လိုအလုပ်လုပ်မလဲ (How) ဆိုတာကို အသေးစိတ် တစ်ခုချင်း step by step ကို ကြိုတင်သတ်မှတ် ထားတာပေါ့ဗျာ

ဆိုပါစို့ Boss က သူ့ဝန်ထမ်း ကို အလုပ်တစ်ခု ခိုင်းလိုက်တယ်ပေါ့ဗျာ Declarative ကကျတော့ လိုချင် Result ထွက်ရင်ရပြီ ဆိုတာနဲ့ တူပြီး Imperative ကကျတော့ လိုချင်တဲ့ Result ကို သတ်မှတ်ထားတဲ့ Step အတိုင်း လုပ်ရမယ်ဆိုပြီး ပြောတာနဲ့ တူတယ်ဗျ

ပိုပြီး မြင်သာ သွားအောင် ဉပမာလေးတစ်ခု ပေးမယ် ဗျာ

ကျွန်တော်က သူငယ်ချင်း တစ်ယောက်ကို ထမင်းချက် ခိုင်းတယ် ဆိုပါစို့ Declarative နည်းနဲ့ ဆို "သားရီး ထမင်း သွားချက်ကွာ" ပေါ့ဗျာ Imperative နည်းနဲ့ ဆို "သားရီး ထမင်း အိုးထဲ ရေထည့် ဆန် ထည့်၊ ဆန်ကို ရေ သေချာ ဆေး၊ ပြီး ရင် ချက်" ဆိုပြီးပြောမှာ ပေါ့၊ လုပ်ရမယ့် flow ကို အတိအကျကြီး ပြောလိုက်တာ ဗျ Imperative မှာကျတော့

ဒီလို ပြောလည်း ရမယ် ဗျ Declarative Programming က Imperative Programming ရဲ့ အပေါ်က abstract layer လေးတစ်ခုပေါ့ ဗျာ

Declarative က တကယ်တော့ အသစ် တော့မဟုတ်ဘူး ဗျ Facebook ရဲ့ React မှာသုံးနေတာကြာပါပြီ အခုမှ Android တို့ iOS တို့ ကလည်း သူ့နောက် ကမှ လိုက်လုပ်လာကြတာ Android Jetpack Compose, Swift Compose UI ဆိုပြီး

ကျတော်က Android background ကနေလာတာဆိုတော့ Android ကိုပဲဉပမာထားပြီးပြောပါမယ်ခင်ဗျ

Imperative နဲ့ Android App ရေးမယ်ဆို xml layout file တွေ၊ code file တွေရေးရမှာပေါ့ဗျာ Item တွေကို list အလိုက်ပြမယ့် ဟာရေးမယ်ဆို အဲလို ရေးနေရမှာပေါ့

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1674149633152/169d6334-93b4-48a2-94ab-fc175bbc1aa5.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1674149670111/dbf3fee2-e832-4166-aa33-a56dc4bfca11.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1674149692352/e8e053b5-8f8b-4cee-b619-44c2c7a33ca6.png align="center")

ဒီလို UI လေးပေါ်ဖို့အတွက်ကိုအဲလောက်ရေးရမှာဗျ

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1674149800406/7ef38d51-ac1a-425c-9f0d-10f2c3a4340e.png align="center")

Declarative နဲ့ ဆို အဲလို List ပြတဲ့ screen လေးတစ်ခုကို အဲလောက်ပဲ ရေးရတယ်

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1674150029556/fef70db5-184b-49f6-bed3-9fe0bec305c3.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1674150221025/223ec318-61d5-4270-a9b3-04f8dc50d26d.png align="center")

ဆက်လက်လေ့လာချင်ရင် အောက်က link တွေကနေဆက်လက်ဖတ်ရှုလို့ရပါတယ်ဗျ

[https://developer.android.com/jetpack/compose](https://developer.android.com/jetpack/compose?gclid=Cj0KCQiA8aOeBhCWARIsANRFrQExYeu-NWT7jfGbLpCjFTi0qAVraLSufNQ8-n5WGZZ_5M6-fEgCYjAaAn1YEALw_wcB&gclsrc=aw.ds)

[https://developer.apple.com/xcode/swiftui/](https://developer.apple.com/xcode/swiftui/)

[https://reactjs.org](https://reactjs.org)

Author - Ko Zaw Moe Htike
