DEV Community

Aung Myat Moe
Aung Myat Moe

Posted on • Originally published at aungmyatmoe.me on

What really are declarative and imperative?

Declarative နဲ့ Imperative ကိုရှင်းတာဘာ‌‌ တွေ ခက်နေတယ်မသိဘူး။ Code တွေအတောင့်လိုက်ရေးပြပြီတော့ရှင်းမှဘယ်လိုလုပ်နားလည်မှာလဲ။ ဒါကဒါကြီးဆိုပြီးပဲအလွတ်မှတ်သွားမှာပဲ။ ဒီနိုင်ငံမှာက ဒါကျက်ဒါဖြေအကျင့်ကြီးနဲ့ဆိုတော့။ အဲ့တော့အပေါ်ကနှစ်ကောင်ကိုရှင်းချင်ရင် Conceptually အရရှင်းရုံပဲ။ ကိုယ်ကကော်ဖီသောက်ချင်တယ်ဆိုပါစို့။ အဲ့တာဆိုကော်ဖီရအောင်ဘယ်လိုလုပ်မလဲ။ ဒါကို Declarative and Imperative Approach နဲ့သွားပြမယ်။

ညီလေးရေကော်ဖီတစ်ခွက်ချပေးပါ။ နွားနို့လေးပါထည့်နော်။

ဒါက Declarative ပုံစံ။ Focus on Result ဖြစ်သွားပြီ။ သူ့ဘာသာကော်ဖီဘယ်လိုဖျော်ဖျော်စိတ်မဝင်စားဘူး။ နွားနို့ကိုသူ့ဘာသာ သွားညှစ်ညှစ်၊ Ready Made ပဲထည့်ထည့် ကော်ဖီထဲနွားနို့ပါလာရင်ပြီးတာပဲ။ ဒါဆိုရင် Declarative Approach ပဲ။

အဲ့တော့ ဒီတစ်ခါနောက်တစ်နည်းနဲ့သွားမယ်။

  • ဈေးဆိုင်သွားမယ်။
  • ကော်ဖီတစ်ထုပ်ဝယ်မယ်။
  • နို့ဆီတစ်ထုပ်ဝယ်မယ်။
  • အိမ်ရောက်ပါပြီတဲ့။
  • ရေနွေးအိုးတည်မယ်။
  • ရေနွေးဆူတာနဲ့ ကော်ဖီခွက်ယူမယ်။
  • ကော်ဖီထုပ်ဖောက်မယ်၊ ခွက်ထဲထည့်။
  • ရေနွေးထည့်။ နို့ဆီဖောက်ထည့်။ ဒါမှပြီးတာ။

အစအဆုံး **step by step **သွားတာမျိုးကို Imperative လို့ခေါ်တယ်။

အဲ့တာကို JavaScript နဲ့ပြလို့ရတယ်။ ဒါပေမဲ့ Declarative Approach ကို SQL နဲ့ပြတာကပိုလွယ်တယ်။

SELECT * FROM users;

Enter fullscreen mode Exit fullscreen mode

Users Table ထဲက အကုန်ထုတ်ပြလို့ပြောလိုက်တာ။ ဒါကကော်ဖီတစ်ခွက်ချလို့ပြောတာနဲ့တူတူပဲ။ နောက်တစ်ခုက Imperative ပုံစံ။ Sum of numbers ကိုချင်တယ်ဆိုပါစို့။ ဒါကို Imperatives ပုံစံနဲ့သွားရင်ဒီလိုဖြစ်မယ်။

const numbers = [1, 2, 3, 4, 5]
let total = 0
const length = numbers.length
for(let i =0; i < length; i++){
    total+= numbers [i]
}

Enter fullscreen mode Exit fullscreen mode

ဒါဆိုရင် Sum of numbers ရဖို့ အစအဆုံးကိုယ့်ဘာသာ အကုန်ရေးရတာမျိုးကို Imperative Approach နဲ့သွားတယ်ပြောတာ။ React တို့၊ Vue တို့လည်း အဲ့ပုံစံပဲသွားတာ။ ကိုယ်က Components တွေရေးရုံပဲ။ ကျန်တဲ့ DOM နဲ့ပတ်သက်တာတွေက Framework တွေကလုပ်ပေးသွားမှာ။ ဒါမျိုးတွေကိုပြောတာ။

Top comments (0)