Abstraction (Low Level Abstraction)
ဟိုတစ်နေ့က YGN CODE က article တစ်ခုဖတ်ရင်းနဲ့ (https://www.ygncode.com/how-does-computer-work/) CS50 က Professor David J. Malan ပြောတဲ့ presentation တစ်ခုနားထောင်နေမိရင်းနဲ့ သဘောကျလို့ ကိုယ်နားလည်သလောက် ဘာသာပြန်ရင်း sharing ပြန်လုပ်ပေးလိုက်ပါတယ်။ ပြောသွားတဲ့ အကြောင်းအရာ ကတော့ Abstraction အကြောင်းကို ပြောသွားတာ။
Abstraction ဆိုတာ က ရှုပ်ထွေးတဲ့ အရာတစ်ခုကနေပြီးတော့ တစ်ဆင့်ခြင်းတစ်ဆင့်ခြင်းလွယ်ကူတဲ့ အခြေအနေတစ်ခု (နားလည်ရလွယ်ကူနိုင်တဲ့ အခြေအနေ) တစ်ခု အဖြစ် ခွဲထုတ်လိုက်တာမျိုးကိုဆိုလိုတာပါ။ ဥပမာ တစ်ခု အနေနဲ့ပြောရမယ်ဆိုရင် ကားတစ်စီး ဘယ်လိုအလုပ်လုပ်လဲဆိုတာ အသေးစိတ် ကျနော်တို့မသိဘူး၊ ဒီကားဘီး ကြီးကို ဘယ်လိုတွေလုပ်ထားလဲ၊ engine ကိုရောဘယ်လိုအစိတ်အပိုင်းတွေနဲ့ ဖွဲ့စည်းထားလဲ၊ ဒီကားတစ်ခုခု ပျက်သွားရင်ရော ဘယ်လိုပြင်မလဲ စသည်ဖြင့် အသေးစိတ်ကို ကျနော်တို့ မသိဘူး။ ဒါပေမဲ့ ဒီကားကို ကျနော်တို့ operate လုပ်တတ်တယ်၊ ဆိုလိုချင်တာ က ကားကို စက်နှိုးတတ်တယ်၊ မောင်းတတ်တယ်၊ ရပ်မယ်ဆို ဘာကို နင်းရမယ်၊ ဒီကားကို energy ဘယ်လို ပြန်ဖြည့်ရမယ်စသည်ဖြင့် ကျနော်တို့ Interfacing ပိုင်းကို ကောင်းကောင်းသိပြီး ကားကို အသုံးပြုနိုင်တယ်။ ဘာကြောင့်လဲ ဆိုတော့ abstract လုပ်လိုက်လို့ပဲ၊ ခက်ခက်ခဲခဲ ပိုင်းတွေကို အသေးစိတ် မစဉ်းစားတော့ ဘဲ ကားတစ်စီး ကို operate လုပ်နိုင်မယ့် Interface အပိုင်းကိုပဲ abstract လုပ်လိုက်တဲ့ အတွက် ကျနော်တို့ ကားကို လွယ်လင့်တစ်ကူ အသုံးပြုလို့ရသွားပါတယ်။
နောက်ထပ် ဥပမာတစ်ခု အနေနဲ့ပြောရရင် what is a country ဆိုပြီး filter လုပ်ကြည့်မယ်ဆို country ဆိုတာ states & divisions တွေစုထားတာ၊ states & divisions တွေဆိုတာ မြို့ နယ်တွေစုထားတာ ၊ မြို့ နယ်တွေ ဆိုတာ ရပ်ကွက်တွေ၊ ရပ်ကွက်တွေဆိုတာ အိမ်တွေစုထားတာ၊ အိမ်ဆိုတာ နံရံတွေပါတယ် အမိုးတွေပါတယ်၊ နံရံတွေဆိုတာ သစ်သားတို့ အုတ်တို့နဲ့ လုပ်ထားတာ စသည်ဖြင့် တစ်ဆင့် ခြင်း ဆီ filter လုပ်သွားလို့ရပါတယ်။ ဒါပေမဲ့ ကျနော်တို့တွေက ဒီလိုတွေ အောက်ခြေ အစကနေ ပြီးတော့ construct လုပ်ထားတဲ့အကြောင်းအရာတွေသိစရာမလိုဘူး။ နိုင်ငံလို့ပြောလိုက်ပြီဆိုလဲ နားလည်တယ်။ ရန်ကုန်တိုင်းလို့ပြောလိုက်ပြီ ဆိုလဲနားလည်ပါတယ်။
ထိုနည်းလည်းကောင်းပဲ computer မှာဆိုလို့ရှိရင်လဲ ကျနော်တို့ resource အနေနဲ့သူ့ကို ပေးရတာ power ပဲ ရှိတယ်။ ကျနော်တို့ ဒီ computer ကို Input အနေနဲ့ electricity တစ်ခုပဲ ပေးရုံနဲ့ နေ့စဉ်ကျနော်တို့လုပ်နေတဲ့ program ရေးတာတို့ design ဆွဲတာတို့ စသည်ဖြင့် complex ဖြစ်တဲ့ task တွေကို ဘယ်လိုလုပ်သွားလဲပေါ့။ ကျနော်တို့သိထားတာ က computer တွေက binary system နဲ့ အလုပ်လုပ်တယ်။ အိုကေ ဒါဆိုရင် Microsoft word, note software တွေမှာ HI ဆိုတဲ့ message ကို ရနိုင်ဖို့ decompose လုပ်မယ်ဆိုရင် binary system အရ အလုပ်လုပ်သွားတာက 01001000, 01001001။ အဲ့ဒါကို decimal system ကို convert လုပ်မယ်ဆို 72, 73 ရတယ်။ ဒီ decimal conversion အရဆိုလို့ရှိရင် Microsoft word တို့ notes တို့ လို software တွေမှာ HI ဆိုတဲ့ message ရတယ်။ Graphic software တွေ browser တွေမှာဆိုရင် 72 က အနီရောင်၊ 73 က အစိမ်းရောင်စသည်ဖြင့် သတ်မှတ်ထားပြီး mapping လုပ်ထားကြတယ်။ ဒါပေမဲ့လည်း ကျနော်တို့ ဒါတွေသိစရာမလိုဘူး HI ကဘယ်လို ဖြစ်လာတာလဲ color တွေဘယ်လိုထွက်လာလဲ စသည်ဖြင့် သိစရာမလိုဘူး။ ကျနော်တို့က တစ်ကယ့် work done ဖြစ်တာကိုပဲလိုချင်တဲ့အတွက် low level abstraction လုပ်ပြီးတော့ အသုံးပြုနေကြတာပါ။
ဆိုတော့ abstraction က ဘယ်လောက်အရေးပါတယ် ဆိုတာတော့ သိလောက်ပြီထင်ပါတယ်။ Abstraction မရှိရင်လဲ ကျနော်တို့ရဲ့ daily operation တွေမှာ တော်တော်အခက်အခဲ တွေ့မှာကျိန်းသေပါတယ်။
ဒါပေမဲ့ လည်း computer science ကို လေ့လာတဲ့သူတွေအတွက် abstraction ဘယ်လိုလုပ်သွားလဲဆိုတာ အရေးပါတဲ့ အကြောင်းကို stage presentation တစ်ခုနဲ့ prove လုပ်ပြသွားတယ်။ ဘာလိုလဲဆိုတော့ stage အောက်က လူတွေကို ကုဗတုံးပုံဆွဲခိုင်းတာ ဒါပေမဲ့ကုဗတုံးလို့ အစက မပြောဘူး၊ မျဉ်း တစ်ကြောင်းဆွဲပါ၊ ပြီးရင် ညာဘက်ကိုဆက်ဆွဲ၊ ဘယ်လို ဘယ်ပုံ ဆိုပြီး တော့ တစ်ဆင့်ခြင်းဆီ instruction ပေးသွားတယ်။ Instruction ပြီးသွားတဲ့ အချိန်မှာ အကုန်လုံးလိုလို က ကုဗတုံးလိုလို ပုံစံတွေထွက်တယ်၊ တစ်ချို့ ဆို ကွက်တိပုံအတိုင်းထွက်တယ်။
ဒီ scenario က ဘာကိုဆိုလိုချင်တာလဲဆိုတော့ ကုဗတုံးတစ်ခုကို ဘယ်လိုဆွဲရမလဲဆိုတဲ့ ဆွဲပုံဆွဲနည်း (high level instruction) ကို မသိဘူးဆိုရင် ကိုယ်က လုံး၀ ground up အစကနေ ဆွဲရမှာဖြစ်ပါတယ်။ အဲ့အတွက်ကြောင့် ကုဗတုံးတစ်ခုကိုဘယ်လို ဆွဲသွားတယ်၊ low level အထိ ဘယ်လို abstract လုပ်သွားလဲ ဆိုတာကို နားလည်သွားလို့ရှိရင် ဆွဲနိုင်သွားမှာဖြစ်ပါတယ်။
ထိုနည်းလည်းကောင်းပဲ computer science major မှာလည်း system တွေက low level abstraction အထိ ဘယ်လိုလုပ်သွားတယ်ဆိုတဲ့ အချက်က သိဖို့လိုအပ်တယ်၊ အရေးကြီးတယ်ဆိုတဲ့ အကြောင်းပြောရင်း conclude လုပ်သွားပါတယ်။

Last updated