ကုဒ်ဒါနှင့် ပေပါ

Kaung Myat Lwin
2 min readOct 19, 2023

--

Programming Language တွေ လေ့လာတယ်၊ Tools တွေ လေ့လာတယ်၊ Scalable ဖြစ်အောင်လည်း code ရေးတတ်ပြီ၊ FP, OO ဘာ paradigm လာလာ ဒေါင်းတတ်ပြီ၊ code adaptation လည်း လုပ်တတ်ပြီဆိုရင် နောက်တစ်ဆင့်က ဘာလဲ?

ဒါတွေကို ကျနော်အရင်က အတော်စဥ်းစားဖူးပါတယ်။ ကျနော့် line of work က Software Engineer လည်းဖြစ်တယ်ဆိုပေမယ့် Web Developer ဘက်ကို ပိုသွားပါတယ်။ သို့သော် React သုံးပြီး Web App ရေးတာ၊ ​Node သုံးပြီး Backend ရေးတာ ကျေနပ်ကြပါသလား? ကြာလာရင်တော့ အနည်းနဲ့ အများ ပျင်းလာကြတာပါပဲ။

ဒီမှာ သမိုင်းနည်းနည်း ပြောချင်ပါတယ်။ ကျနော် သိပ်အားကျရတဲ့ Programmer တစ်ယောက်ဖြစ်တဲ့ John Carmack (Meta Quest ရဲ့ CTO ဟောင်း၊ iD Tech ရဲ့ Lead Engineer၊ original DOOM ဂိမ်းအင်ဂျင်ကို ရေးခဲ့သူ) ဟာ ကွန်ပြူတာတွေမှာ 3D မပြောနဲ့ 2D တောင် “အ”ထစ် “အ”ထစ် ဖြစ်နေတဲ့ အချိန်ကတည်းက Binary Space Partition algorithm ကို အသုံးချပြီး DOOM game ထဲက elevation၊ level node တွေကို ပိုင်းတာတွေ လုပ်ခဲ့ပါတယ်။ ဒါတွေက သူ့ဆီမှာ Comp Sci paper တွေ ဖတ်နိုင်လောက်တဲ့ skill ရှိပြီး ဘယ် paper ကို ဘယ်လို အသုံးချရင် ရမယ်ဆိုတဲ့ အမြင်ရှိလို့ပါ။ အချိန်ရရင် သူ့အကြောင်း လေ့လာကြည့်ပါ။ Inspiration လိုချင်ရင် Masters of DOOM စာအုပ် ဖတ်ကြည့်ပါ။

အဲ့ဒါနဲ့ သူ့အားကျတော့ အပျင်းပြေ shader code တွေ လေ့လာရင်း ဘာသွားတွေ့လည်းဆိုတော့ သူက Maths အရမ်းပါတယ်။ Vector component တွေ တွက်ချက်နည်း၊ Matrix မြှောက် (တနည်းအားဖြင့် linear algebra ပါပဲ) တာတွေနဲ့ ရူးလောက်အောင် လည်ထွက်သွားတယ်။ အဲ့ဒါနဲ့ ငါ သင်္ချာ အားနည်းသေးတာပဲဆိုပြီး ဟိုး ၁၀ တန်း သင်္ချာကို ပြန်သိအောင် စာဖတ်ရပါတယ်။ Wiki တွေကော စာအုပ်တွေကော စုံလို့ပေါ့။ ကိုယ့်ကိုကိုယ် သတိထားမိတာကတော့ ငါ overwhelm ဖြစ်နေသေးတယ်၊ သို့သော် အရင်နှစ်တွေထက် စာရင်တော့ Mathematical Notation တွေကို ဖတ်တတ်လာတာကို သွားတွေ့ရတယ်။ အများကြီးတော့ မဟုတ်ပေမယ့် improvement လေးနည်းနည်း ရှိလာတဲ့အခါ စိတ်သက်သာရာရလာတယ်။

ခင်ဗျားက Frontend ရေးတယ်၊ Backend ရေးတယ်၊ ဘာနဲ့ ရေးရေး ဘာလုပ်လုပ် အမြင့်ဆုံး Engineer level က Scientific Paper တွေ ဖတ်တတ်ဖို့ပဲဆိုတာကို စဥ်းစားမိတယ်။ “ဘာလို့လဲ? ဘာလို့ ငါက ဒါတွေ ဖတ်တတ်ရမှာလဲ?” ဆိုပြီး မေးခွန်းထုတ်မိရင် Web Engineering မှာ သိပ်သုံးတဲ့ React ကို စဥ်းစားကြည့်ပါ။ React ရဲ့ Reconciliation Algorithm တို့၊ အခု React 18 မှာ ပါလာတဲ့ concurrency rendering တို့ဆိုတာ သူ့ဟာနဲ့ သူဖြစ်လာတာ မဟုတ်ပါဘူး။ နောက်တခု Bitcoin ကို ကြည့်ပါ။ ဒီဟာတွေက အနောက်မှာ ဒီလို implementation ထွက်လာဖို့အတွက် White Paper တွေ အများကြီး ရှိပါတယ်။ ဒီ White Paper တွေကို Engineer တွေက ဖတ်ပြီး code ရေးကြပါတယ်။ ဒီဟာတွေကို ကျနော်တို့က လွယ်လင့်တကူ ယူသုံးနေတာပါ။ အဲ့ဒီတော့ ဒါတွေကို implementation level မရောက်ရင်တောင်မှ အကျွမ်းတဝင်ရှိအောင် လေ့လာထားရင် နောင်တခါ unique problem တွေ ရှင်းတဲ့အခါ paper ပေါင်းသိန်းချီ ထဲကနေပြီး ကိုယ့် ပြဿနာအတွက် paper ရှာပြီး ဖြေရှင်းချက် ထုတ်နိုင်မှာဖြစ်ပါတယ်။

ဘယ်ကစရမလဲဆိုရင် အောက်က website တွေမှာ paper တွေ ကြည့်လို့ရပါတယ်။

သင်္ချာ notation သိဖို့က https://www.youtube.com/@3blue1brown ကို ညွှန်းပါတယ်။ တလက်စတည်း notation reference တွေအတွက် https://en.wikipedia.org/wiki/Glossary_of_mathematical_symbols ကိုညွှန်းပါတယ်။

အားလုံး ပညာအရည်အသွေး တိုးတက်ကြပါစေ။

--

--