ဒီအကြောင်းကိုပြောဖို့အတွက် ကျနော် sequential နဲ့ procedural programming အကြောင်းကိုအရင်ပြောပြမယ်ဗျ။

Sequential programming ဆိုတာကကျ code လိုင်းတွေကို statement တစ်ခုခြင်းဆီ execution လုပ်သွားတာမျိုးကိုပြောတာ၊ ဥပမာ php နဲ့ နမူနာပေးရမယ်ဆို

$a = 1;
$b = 2;
$plus = $a + $b;
echo $plus;
ဒါဆိုလို့ရှိရင် အပေါ်က code block ထဲမှာ abstract data types variables တွေပါတယ်၊ ပြီးတော့ arithmetic + operator ကိုသုံးပြီးတော့ ပေါင်းခြင်းလုပ်သွားတယ်၊ နောက်တစ်ကြောင်းမှာ echo ဆိုပြီးရလဒ်ကို print ထုတ်ပြတယ်။ အခုပြထားတာ sequential programming ရဲ့ နမူနာတစ်ခု၊ ဒီနေရာမှာပြောစရာရှိတာက ပေါင်းရမယ့် number operation နောက်တစ်ကြိမ်ထပ်လုပ်ရမယ်ဆိုလဲ ဒီလိုမျိုး code ထပ်ရေးရဦးမှာပဲ။ ဒီနေရာမှာ procedural programming ဆိုတာက အသုံးဝင်လာတယ်။

Procedural programming ကတော့ sequential ရဲ့ အားနည်းချက်တွေက cover လုပ်ပေးသွားနိုင်တယ်။ sequential နဲ့ရေးလာမယ်ဆို နောက်ပိုင်းမှာ ကိုယ့် project code တွေကတစ်အားရှုပ်လာမယ်။ code line တွေမလိုအပ်ဘဲတစ်အားများလာလိမ့်မယ်။ အဲ့လို ပြသနာတွေကို procedural နဲ့ဖြေရှင်းလို့ရမယ်၊ ဘယ်လိုလဲဆိုတော့ procedural မှာ function ဆိုတာပါလာတယ်၊ function ကို သုံးပြီးတော့ sequence code တွေကိုစုစုစည်းစည်းထားလိုက်မယ်ဆို နောက်တစ်ကြိမ် အလားတူ logic တွေလာပြီဆို function လေးကို reuse လုပ်လိုက်ရုံပဲ၊ မလိုအပ်တဲ့ code တွေလျော့ချနိုင်သလို complexity လည်းနည်းသွားမယ်။ ဥပမာ အပေါ်က sequential ကို procedural အဖြစ်ပြောင်းမယ်ဆို

Function addNum($a,$b)
{
$plus = $a+$b;
echo $plus;
}
ခေါ်သုံးချင်ပြီဆို
addNum(1,2);
နဲ့ခေါ်လိုက်ရုံပဲ၊ ဒါဆိုလို့ရှိရင် နောက် plus operation တွေရှိတိုင်းမှာ sequence မှာတုန်းကလို လိုင်း၄ကြောင်းရေးစရာမလိုတော့ဘဲ တစ်ကြောင်းတည်းနဲ့ ကိစပြတ်သွားလိုက်မယ်။ ဒီနေရာမှာ နောက်တစ်ခုတွေ့မှာက function အနောက်မှာပါလာတဲ့ param လေးတွေပဲ၊ နောက်ပိုင်း calculation လုပ်တဲ့အချိန် မတူညီတဲ့ digit တွေအတွက် addNum လို့ခေါ်တဲ့အချိန်မှာတည်းက တစ်ခါတည်းထည့်ပေးလိုက်လို့ရအောင်လုပ်ပေးထားတယ်။ ဒါကြောင့်မို့လို့ procedural နဲ့ဆိုလို့ရှိရင် sequence မှာကြုံလာရမယ့် spaghetti code တွေကိုရှောင်လို့ရသွားလိုက်မယ်။

Procedural ကမိုက်တယ်ဟ၊ ပြည့်စုံပြီလားဆိုတော့လည်းမဟုတ်သေးဘူး၊ ဘာလို့လဲဆိုတော့ မတူညီတဲ့ logic တွေနဲ့ ဒီထက်ပို complex ဖြစ်တဲ့ logic code တွေရေးရတော့မယ်ဆို function တွေတစ်သီကြီး ဖြစ်လာလိမ့်မယ်၊ အချိန်အတိုင်းအတာတစ်ခုရောက်တဲ့အချိန် spaghetti ဖြစ်လာဦးမှာပဲ။
ဒါကြောင့်မို့လို့ programming paradigm တွေသုံးလာကြတာ၊ paradigm တွေသုံးပြီးတော့ အဲ့လို ပြသနာတွေကို အကောင်းဆုံး handle လုပ်ကြတယ်။ ဥပမာ OOP မှာရှိတဲ့ Class & object ပုံစံလိုမျိုးတွေကို procedural မှာ function တွေသက်သက်ကြီးနဲ့ သွားလုပ်လို့မရဘူး။ ဒီ class မှာ ဒီလိုမျိုး logic တွေနဲ့ code တွေထားမယ်၊ ဘယ်ကောင်ကို visibility ဘယ်လိုပေးမယ်၊ ဘယ်လို interface ထုတ်လိုက်မယ် စသည်ဖြင့် ဒါမျိုးတွေကို procedural နဲ့အဆင်ပြေမပြေတော့ဘူး။ paradigm တွေမှာပဲဒီထက်ပိုကောင်းတဲ့ ပုံစံတွေကိုသုံးနိုင်မယ်။

အင်တာနက်ပေါ်မှာတွေ့ရတဲ့ meme လေးတစ်ခုရှိတယ်၊ ဒီ code ကအလုပ်လုပ်ပြီဆိုသွားမထိပါနဲ့ဆိုတာ။ အဲ့တာကြီးကိုကမမိုက်တာ၊ အလုပ်လုပ်နေပေမယ့် စည်းစနစ်မကျတဲ့ code တွေဖြစ်နေမှာကိုတော့ စိုးရိမ်စိတ်ဝင်ရမယ်၊ စိုးရိမ်စိတ်ကနေမှတစ်ဆင့် သွားကလိကြည့်လာမယ်၊ အဲ့ကနေမှတစ်ဆင့် အရင် version ထက်ပိုကောင်းတဲ့ code တွေရလာလိမ့်မယ်။ နောက်ပိုင်းဒီ project ကိုရေးရတာလည်း သက်သာလာသလို ပိုလည်း effective ဖြစ်သွားလိမ့်မယ်။ ဥပမာတစ်ခုပြောရရင် Yangon to mandalay သွားတယ်ဆိုပါစို့၊ လမ်းလျှောက်သွားမရောက်ဘူးလား၊ ရောက်တာပဲ၊ bus car စီးမလား၊ လေယဉ်နဲ့သွားမလား၊ ကိုယ်ပိုင် Jet နဲ့ပါသွားဗျာ ကြာတယ် :3 ပြောချင်တာရောက်မယ့် goal ကတော့တူတူပဲ၊ သွားတဲ့ပုံစံမူတည်ပြီး smart ကျမကျလဲကွာသွားလိမ့်မယ်။ ကဲဒါပါပဲ ၊ ဒါကြောင့် programming paradigm တွေကိုလေ့လာဖို့လိုအပ်ပါကြောင်း။