Select Page

Language ရွေးချယ်ခြင်း

ဒီရက်ပိုင်းဘယ်လိုဖြစ်တယ်မသိဘူး.. Chat Box နဲ့ ဖုန်းနဲ့ စသည်ဖြင့် လာလာမေးကြလွန်းလို့ပါ.. ထုံးစံအတိုင်းပဲ Java ကပိုကောင်းတယ်ဆို C# ကပိုကောင်းတာဆိုတာမျိုးတွေပါပဲ.. အစ်ကိုပဲ တစ်ခုရွေးပေးလိုက်တော့ ဆိုတာကပါသေးတယ်…

၁။ အဲ့တော့ကား ကျွန်တော် နားလည်သလောက်ပြောရရင် JavaEE ဆိုပိုကောင်းတယ် ဘာညာဆိုတာက ဈေးကွက်ပေါ်မူတည်ပြီးပြောကြတာမျိုးပါ..အလုပ်အကိုင်ရှာရလွယ်တယ်ပေါ့.. ကျွန်တော်သိသလောက် အကောင်းဆုံး Programming Language ဆိုတာမရှိပါဘူး.. ဈေးကွက်ပေါ်မူတည်ပြီး နှစ်စဉ်နဲ့ အမျှ ရေးပန်စားတဲ့ Language ရယ်လို့တော့ရှိပါတယ်.. ဒါပေမဲ့ ဒီနှစ် တော့ Java ကရေပန်းစားနေလို့ Java ပဲသင်လို့တော့ ကျွန်တော် အပြတ်မပြောပေးနိုင်ပါဘူး.. လေ့လာတဲ့လူကိုယ်တိုင်တက်တဲ့ အချိန်မှာ ရေပန်းစားတာ က တခြားနောက်တစ်ခု ဖြစ်ချင်ဖြစ်နေမှာကိုး.. ဖြစ်ဖို့လည်း ရာခိုင်နှုန်းများပါတယ်.. နောက်တစ်ခုက Programming Language တစ်ခုခုကိုလေ့လာတဲ့ဆီမှာ ဈေးကွက်ထဲမှာ PHP developer ကအလုပ်အကိုင်ပေါလို့.. Mobile Developer တွေက လစာကောင်းလို့ဆိုပြီး အဲ့နောက်လိုက်စရာမလိုပါဘူး .. တကယ်တက်ရင် ဘာ Language ဖြစ်ဖြစ် ကိုယ့်အရည်အချင်းနဲ့ ကိုက်တဲ့ အလုပ်တစ်ခု ရဖို့ မရှားပါဘူး.. ဒါ့ကြောင့် ဘာစသင်ရမလဲဆိုတဲ့ ကိစ္စကို လျှောက်စဉ်းစားမနေပါနဲ့ အချိန်ကုန်ပါတယ်..

၂။ အဲ့တော့ Programming ကိုစလေ့လာမယ်ဆိုရင် ကိုယ်အဆင်ပြေမယ်ထင်တဲ့ Language တစ်ခုခုသာကောက်လေ့လာလိုက်ပါ.. ဥပမာ ကိုယ့်လက်ထဲ Python စာအုပ်တစ်အုပ်ရှိပြီး ကိုယ်လည်း ဖတ်လို့နားလည်တယ်.. သဘောကျတယ် အဆင်ပြေတယ်ဆို အလျဉ်းသင့်တဲ့ဟာသာ စလေ့လာလိုက်ပါ.. ဘာဖြစ်လို့လဲဆိုတော့ Programming ရဲ့ အခြေခံ concept တွေဖြစ်တဲ့.. branching, looping စတာတွေရဲ့သဘောတရားတွေက အတူတူပါပဲ.. language တစ်ခုနဲ့ နားလည်ပြီးပြီဆို နောက် Language တစ်ခုအတွက်ဆိုပြီး သီးသန့်ပြန်လေ့လာနေစရာမလိုပါဘူး.. ဘာသင်တန်းမှ မတက်တောင် အခြေခံကိစ္စတွေက နှစ်လလောက်လေ့လာမယ်ဆိုရင် ရပါတယ်..

၃။ အဲ့နောက်မှာတော့ ကိုယ်လေ့လာတဲ့ Language ပေါ်မူတည်ပြီး လေ့လာရမယ့်ဟာတွေ နည်းနည်းကွဲလာပါလိမ့်မယ်.. Java လို static type OOP language တွေနဲ့ Javascript လို first class language မျိုးဆို လေ့လာရမယ့်ဟာတွေက တော်တော်ကွာခြားပါလိမ့်မယ်.. အဲ့တော့ ဒီနေရာမှာ အရမ်း နက်နက်နဲနဲ ဝင်မသွားဘဲ ခဏလောက်ရပ်ပြီး ကိုယ်လေ့လာနေတဲ့ Language ရဲ့ နာမည်ကြီးတဲ့ နယ်ပယ်ကို လေ့လာသင့်ပါတယ်.. ပြီးရင်တော့ တခြား Language တွေရဲ့နာမည်ကြီးတဲ့ နယ်ပယ်တွေကိုလေ့လာသင့်ပါတယ်.. ပြောချင်တာက ဥပမာ Java ဆို enterprise level မှာ နာမည်ကြီးတယ်.. Android မှာ နာမည်ကြီးတယ် .. NodeJS က IO များတဲ့ Server App တွေမှာ first tier လောက်မှာ သုံးကြတယ်.. ဂိမ်းရေးတဲ့လူတွေက c++/c# စတာတွေကိုအသုံးများတယ် (နာမည်ကြီး Game Engine တွေဖြစ်တဲ့ Unity, Unreal, Cryစတာတွေက c++/c# စတာတွေ သုံးကြတာကိုး.. တခြား scripting language တွေလည်းရှိသေးပေမဲ့ ကျွန်တော်သိသလောက် c++ က Game Industry မှာပိုအသုံးများတယ်) .. AI/ML, Data Analysis စတာတွေနဲ့ ပတ်သတ်လာရင် Python ဟာ မပါမဖြစ်သလောက်ပဲ စသည်ဖြင့် နည်းနည်းပါးပါး တီးမိခေါက်မိရှိအောင် လေ့လာသင့်တယ်.. ဘာကြောင့်လဲဆိုတော့ game developer လုပ်ချင်တဲ့ လူတစ်ယောက်အတွက် Java သင်နေတာဟာ လက်တွေ့မှာ အလုပ်ဖြစ်ဖို့ အရမ်းလမ်းနည်းသလို ဖြစ်နေလို့ပါပဲ.. Java နဲ့ဂိမ်းရေးလို့မရဘူးလားဆိုရပါတယ်.. ဒါပေမဲ့ ဒီနေ့အထိ နာမည်ကြီး AAA ဂိမ်းတွေမှာတော့ Java နဲ့ ရေးထားတာ ကျွန်တော် သတိမထားမိသေးပါဘူး… အဲ့တော့ ကိုယ်က Programming အခြေခံလောက်ကိုလေ့လာပြီးပြီဆိုရင် ကိုယ်စိတ်ဝင်စားတဲ့ နယ်ပယ်ပေါ်မူတည်ပြီး Language ကိုရွေးပါ..

၄။ အပေါ်ဆုံးမှာ အကောင်းဆုံး Programming Language ဆိုတာမရှိဘူးလို့ ပြောခဲ့တာဟာအဲ့ဒါကြောင့်ပါပဲ.. သူ့နေရာနဲ့ သူအသုံးရှိတဲ့အတွက် ကိုယ်သွားချင်တဲ့ လမ်းကြောင်းပေါ်မူတည်ပြီးမှ language ကို ရွေးချယ်တာက အကောင်းဆုံးဖြစ်မယ်လို့ပဲယူဆပါတယ်..

၅။ နောက်ဆက်တွဲကတော့ Programming Language တစ်ခုခုနဲ့ Platform တစ်ခုခုမှာ အထိုက်အလျောက်လုပ်နိုင်လာလို့ ကိုယ့်ဘာသာ Programmer ကြီးဖြစ်ပြီလို့ မထင်ပါနဲ့.. မဖြစ်ဘူးလားဆိုရင်ဖြစ်တော့ဖြစ်ပါတယ်.. ဒါပေမဲ့ Bjarne Stroustrup ပြောသလိုပါပဲ.. Programmer တစ်ယောက်ဟာ သဘောသဘာဝချင်းမတူတဲ့ Language ငါးခုလောက်ကိုလေ့လာထားသင့်ပါတယ်..အကြောင်းကတော့ အင်္ဂလိပ်စာရော မြန်မာစာရော မသင်ဖူးမချင်း သူတို့နှစ်ခုကြားက ကွာခြားချက်ကို ပြတ်ပြတ်သားသားမမြင်နိုင်သလိုပါပဲ.. တချို့ကိစ္စတွေက တခြား Language တွေနဲ့ ယှဉ်ကြည့်မှ ပိုပြီး ထင်ရှားလာတာမျိုးတွေရှိပါတယ်..သူ့အင်တာဗျူးမှာတော့ ဆရာသမားက ပြောရင်းနဲ့ အားပါလာတော့ ခုနစ်ခု လောက်အထိတောင် တက်သွားပါတယ်.. လုပ်နိုင်ရင်တော့ ကောင်းတာပါပဲ ကျွန်တော်ကတော့ သူ့အဆိုကို လုံးဝသဘောတူပြီး အားလည်းကျတဲ့အတွက် သဘာဝချင်းမတူတဲ့ Language ငါးခုခြောက်ခုလောက်ကို အချိန်ရတိုင်းလေ့လာပါတယ်.. (ဝါသနာအရ လေ့လာတာသာဖြစ်ပြီး အားလုံးကို ကျွမ်းကျင်တယ်လို့ မဆိုလိုပါဘူး)

၆။ Language လေးငါးခုလောက်ကိုလေ့လာပါလို့ပြောတဲ့အတွက် ရေလိုက်လွဲမှာစိုးလို့ နည်းနည်းဖြည့်ပါဦးမယ်.. Language လေးငါးခုလောက်လေ့လာဆိုတဲ့အတွက် အားလုံးကို အရမ်းကာရော လျောက်လေ့လာစရာမလိုပါဘူး.. ပထမဆုံးအဆင့်မှာ ကိုယ်ရွေးချယ်ထားတဲ့ တစ်ခုကိုပဲ သေချာလေ့လာပါ.. သေချာဆိုတဲ့နေရာမှာ Language တစ်ခုရဲ့ core features တွေကိုဆိုလိုပါတယ်… ပြောရရင် ကျွန်တော်တို့ နေ့စဉ်သုံးနေတဲ့ ဘာသာစကားမှာ သဒ္ဒါကို နားလည်သလို.. ဝါကျအထားအသိုကို နားလည်သလို သူ့ရဲ့ အထားအသိုကို နားလည်ဖို့ပဲ လေ့လာဖို့ အကြံပေးတာပါ.. အဘိဓါန်ကို ထိုင်ကျက်တာနဲ့တူတဲ့ ဒီ Language မှာ Package က ဘယ်နှစ်ခု.. Class ကဘယ်နှစ်ခု. Function ကဘယ်နှစ်ခုဆိုတာမျိုးတွေ လေ့လာဖို့မဟုတ်ပါဘူး… အဲ့ဒါတွေကိုက အတွေ့အကြုံကသင်သွားပါလိမ့်မယ်.. ကိုယ်ပထမဆုံးလေ့လာတဲ့ Language ရဲ့ core feature တွေကို နားလည်ပြီဆို design patterns တွေကိုလေ့လာပါ.. သိပ်အရေးကြီးပါတယ် design patterns တွေဟာ.. ဒါကတော့ decorator ပဲ.. ဒါကတော့ singleton ပဲ ပြောလိုက်တာနဲ့ သိတဲ့ developer နဲ့ မသိတဲ့ developer ကြားက ကွာခြားချက်ဟာ Project ကြီးလာတာနဲ့ အမျှ လုပ်ငန်းခွင်မှာ စွမ်းဆောင်နိုင်ရည်ချင်း အရမ်းသိသာပါတယ်.. ဥပမာအားဖြင့် server configuration အတွက် class တစ်ခုကို singleton pattern နဲ့ မဟုတ်ဘဲ ရိုးရိုး class ကိုရေးသလိုရေးထားတဲ့ source code လိုမျိုးဟာ အလုပ်လုပ်တာမှန်ပေတဲ့ senior developer တွေကို မျက်စိစပါးမွေးစူးစေပါတယ်… အခန့်မသင့်ရင် အကောပါခံရနိုင်ပါတယ်… စူးဆို သူတို့ ပြန်ပြင်ရေးရတာကိုး 😝😝😝…

အချုပ်ကတော့ ဘယ် Language ကအကောင်းဆုံး အလေ့လာသင့်ဆုံး .. ဒါကြီးကိုပဲလေ့လာဆိုတာလိုမျိုး ကျွန်တော်မပြောတက်ပါဘူး.. အားလုံးမှာ အားသန်ရာနေရာတွေရှိတဲ့အတွက် နာမည်ကြီး Language တွေဖြစ်နေတာပါ.. ကျားတစ်ကောင်ကို ရင်ဆိုဖို့ အကောင်းဆုံး လက်နက်က အမဲပစ် သေနတ်ဆိုပေမဲ့ ကိုယ့်အခန်းထဲက ခြင်တွေနဲ့ စစ်ခင်းဖို့က ပိုးသတ်ဆေးဘူး ကောင်းကောင်းတစ်ဘူးပါပဲ.. ဘာလာလာ သေနတ်နဲ့ ပစ်ဖို့ချည်းကြံနေရင်တော့ အလားအလာမကောင်းပါဘူး.. နောက်တစ်ခုကတော့ Design Pattern တွေကိုလေ့လာပါ.. Programming Language တွေကို တစ်ခုထက်ပိုရေးနိုင်အောင်အားထုတ်ပါ.. ကိုယ်က ကိုယ်အားသန်တဲ့ Language/Platform မှာ အရမ်းကြီး ချွန်ထွက်နေတာမျိုးမဟုတ်ရင် language တစ်ခုပဲ ရေးတက်တဲ့ developer ဆိုတာ ထမင်းဆုပ်ထက်မပိုပါဘူး..