16/11/2022
Coding နဲ့ Programming ဘာကွာသလဲ
ပြီးခဲ့တဲ့ နှစ်အနည်းငယ်ထဲက software developer community တွေထဲမှာ coding နဲ့ programming ကွာ၊ မကွာ ငြင်းခုံမှုတွေများများလာတယ်။ ဒီ post မှာတော့ အဲ့ ၂ ခုကို ကွဲကွဲပြားပြားနားလည်ထားဖို့ရှင်းပေးထားပါတယ်။ ဒါမှလဲ ခုမှစလေ့လာမဲ့သူတွေ အတွက်အကြိုးရှိပါမယ်။
၂၀၀၈ ခုနှစ်မှာ Bill Gates ရဲ့ ဖေါင်ဒေးရှင်းက ဦးစီးဦးဆောင်ပြုပြီး အထက်တန်း (သူတို့ဆီမှာတော့ ၁၂ တန်း K12) ကျောင်းသားတွေကို အခြေခံ computer science သင်ကြားပေးဖို့ ဆိုပြီး Code.org ကိုစတင်တည်ထောင်ခဲ့တယ်။ အဲ့ကစပြီး computer science ဘာသာရပ်တွေဟာ အတန်းတော်တော်များများကို ဆင်းလာကြတယ်။ အဲ့မှာပဲ သာမန်လူတွေကြားမှာ ကိုယ်ပိုင် အဓိပ္ပါယ်ဖွင့်မှုတွေနဲ့ အတူ ဒီ Coding vs Programming ပြသနာ ကြီးထွားလာခဲ့တာပါ။ ဥပမာပြောရရင် သူတို့ဟာ Coding ဆိုတာနဲ့ Programming ဆိုတဲ့စကားလုံး ကို လွယ်လွယ်နဲ့ အစားထိုးသုံးလာတာပါပဲ။
Software companies တွေမှာ Coding နဲ့ Programming ဆိုပြီး အဓိက လုပ်ငန်း ၂ ခု ရှိကြတယ်။ Coding လုပ်သူတွေကို Coders လို့ခေါ်ပြီး Programming လုပ်သူတွေကိုတော့ Programmers လို့ ခေါ်နိုင်တာပေါ့။ Coding ဆိုတာကတော့ language တစ်ခုကနေ တစ်ခြားတစ်ခု ကို ပြောင်းလဲရေးသားခြင်းကို ဆိုလိုတာပါ။ ဥပမာ - Photoshop နဲ့ ဆွဲထားတဲ့ layout တစ်ခုကို HTML အဖြစ် ပြောင်းရေးတာမျိုးပေါ့။ နောက် ဥပမာ ကတော့ Flow Chart တစ်ခုကို JavaScript နဲ့ function အဖြစ် ပြောင်းရေးပေးတာမျိုး။ အဲ့တော့ Coding ကို Programming ရဲ့ တစ်စိပ်တစ်ပိုင်း (subset) လို့ပြောလို့ရတာပေါ့။ ဘာလို့လဲဆို Coding ဆိုတာ language တစ်ခုနဲ့ code တွေရေးသားခြင်းဖြစ်နေလို့ပဲ။
Programming ဆိုတာကတော့ computer တစ်ခုမှာ run လို့ရမဲ့ program ကို အနဲဆုံး language တစ်ခု သုံးပြီး ရေးသားခြင်းလို့ဆိုကြပါတယ်။ အဲ့ဒီတော့ ဘာကွာသလဲ? အောက်မှာ ဆက်ဖတ်ကြည့်ပါ။
Coding က ပေးထားချက်ကနေ language တစ်ခု သုံးပြီး ကွန်ပြူတာနားလည်အောင်ရေးပေးရပြီး Programming ကတော့ ဆော့ဝဲ တစ်ခုလုံး ကို အစကနေ စပြီး ကွန်ပြူတာမှာ run လို့ရတဲ့ အထိ တည်ဆောက်ရတဲ့ လုပ်ငန်းပါ။
Coding က code တွေပဲရေးနေရတာများတော့ သိပ်အပန်းမကြီးဘူးပေါ့။ Programming ကတော့ computer ကို တိုက်ရိုက် instruction ပေး ပြီး control လုပ်ရတာဆိုတော့ ပိုဂရုစိုက်ရပါတယ်။
Coders တွေက ဆော့ဝဲ အတွက် ပေးထားတဲ့လိုအပ်ချက် နဲ့ logic တွေကို computer နားလည်မဲ့ code အဖြစ်ရေးပေးရတယ်။ Programers တွေကတော့ ဒီ ဆော့ဝဲအတွက် analyze လုပ်ရ ရေးရ ပြီး ဒီ ဆော့ဝဲနဲ့ တခြား လိုအပ်မဲ့ system တွေ (ဥပမာ Database server, messenging server, စသည်) နဲ့ ချိတ်ဖို့လုပ်ရတာတွေပါ အားလုံးပါဝင်ပါတယ်။
ဒီတော့ ဒီ software or web development တွေဘက်ကို စိတ်ဝင်တစား လေ့လာတော့မယ်ဆိုရင် beginner level အနေနဲ့ Coding အပိုင်းကို HTML, CSS, JavaScript တို့နဲ့ စ ရင်းနှီးအောင်လုပ်သင့်တာပေ့ါ။ အဲ့ဒီကနေမှ တဆင့် တခြား programming language တွေနဲ့ algorithms တွေ logic တွေ data structure တွေဘက်လိုက်ရမှာပါ။ အဲ့အဆင့်မှာပဲ မရှိမဖြစ်လိုလာမှာက database တွေပေ့ါ။ SQL or NoSQL စသည်ဖြင့်လေ့လာရတော့မယ်။
Database တွေသုံးပြီး application တွေရေးတတ်လာပြီးတဲ့နောက် နောက်တဆင့်ထပ်တက်ရမှာက Design Pattern တွေအကြောင်းပေ့ါ။ Repository Pattern, Inversion of Control, RESTFul API, တွေကစပြီး Clean Architecture နဲ့ Micro services တွေအကြောင်း၊ ဒါတွေတွေ့ရမှပဲ။ Learning is life-long process ဆိုတာ software သမားတွေအတွက် ပိုမှန်တယ်လေ။