Classical Computing 3: Encoding
စက် (Machine) က နားလည်တဲ့ ဘာသာစကားက Binary digit တွေ ဖြစ်တဲ့ 0 နှင့် 1 နှစ်လုံးပဲ နားလည်ပါတယ်။ ဒါပေမဲ့ စက်ကို instruction (အမိန့်) ပေးခိုင်းစေရမှာက လူ (humanity...
စက် (Machine) က နားလည်တဲ့ ဘာသာစကားက Binary digit တွေ ဖြစ်တဲ့ 0 နှင့် 1 နှစ်လုံးပဲ နားလည်ပါတယ်။ ဒါပေမဲ့ စက်ကို instruction (အမိန့်) ပေးခိုင်းစေရမှာက လူ (humanity) တွေပါ။ အဲ့လို ခိုင်းစေနိုင်ဖို့ အတွက် လူနားလည်တဲ့ ဘာသာစကားကို စက်နားလည်တဲ့ ဘာသာစကားအဖြစ် ပြောင်းခိုင်းပြီး စက်က လုပ်ဆောင်ချက် မှန်၊ မမှန် စစ်ဆေးဖို့ အတွက် စက်နားလည်တဲ့ ဘာသာစကားကနေ လူနားလည်တဲ့ ဘာသာစကားကို ပြန်ပြောင်းပြခိုင်းတဲ့ interpretation တွေ လိုအပ်လာပါတယ်။ ဒီလို interpretation ကို Computer representation (သို့မဟုတ်) Encoding လို့ ခေါ်ပါတယ်။

Encoding အကြောင်းကို အခြေခံကနေ တဆင့်ချင်း လေ့လာကြည့်ပါမယ်။ ကျွန်တော်တို့ဆီမှာ ဒင်္ဂါးပြား (Coin) တစ်ခုရှိမယ် ဆိုပါစို့။ ဒင်္ဂါးပြား တစ်ခုမှာ ခေါင်းနှင့်ပန်း ဆိုပြီး state နှစ်ခုပါ ပါမယ်။ အကယ်လို့ အဲ့ ဒင်္ဂါးပြားကို ကျွန်တော်တို့ ဘောလုံးပွဲတစ်ပွဲမှာ ပွဲမစခင် ဒိုင်လူကြီးက အသင်း ၂ သင်းစီက အသင်းခေါင်းဆောင်တွေရှေ့မှာ ကွင်းယူမလား? ဘောလုံးယူမလား? ဆိုပြီး ဆုံးဖြတ်ခိုင်းတဲ့နေရာမှာ သုံးကြမယ်ဆိုပါစို့။ သေချာစဉ်းစားကြည့်ပါ။ ကွင်းယူမယ်၊ ဘောလုံးယူမယ်ဆိုတဲ့ state တွေဟာ ဒင်္ဂါးပြားမှာ မပါပါဘူး။ ဒင်္ဂါးပြားမှာ ခေါင်းနှင့်ပန်း ၂ ခုပဲပါပါတယ်။ ဒီနေရာမှာ ဒိုင်လူကြီးက ဒင်္ဂါးပြားရဲ့ ခေါင်းဘက်အခြမ်းကို ကွင်းယူမယ်၊ ပန်းဘက်ခြမ်းကို ဘောလုံးယူမယ်လို့ သတ်မှတ်လိုက်ပြီး ဒင်္ဂါးပြားကို လေထဲကို မြှောက်ချလိုက်တဲ့အခါ ပြန်ကျလာတဲ့ ဒင်္ဂါးပြား state အတိုင်း ဘောလုံးကို ကစားရပါတယ်။ ပြန်ကျလာတဲ့ ဒင်္ဂါးပြားမှာ ကွင်းယူမယ်၊ ဘောလုံးယူမယ်လို့ မပါဝင်သလို ရေးလဲမထားပါဘူး။ ခေါင်းနှင့် ပန်းသာ ပါပါတယ်။ ဒါဆို ဘယ်လိုဆုံးဖြတ်လိုက်တာလဲ? ခုနက ပြောသွားတဲ့အထဲမှာ ကွင်းယူမယ်၊ ဘောလုံးယူမယ်ဆိုတဲ့ state ၂ ခုကို ဒင်္ဂါးပြားမှာ ရှိတဲ့ ခေါင်းနဲ့ပန်း ဆိုတဲ့ state ၂ ခုနဲ့ အစားထိုး သတ်မှတ်လိုက်ပါတယ်။ ဒါဟာ Encoding ပါ။ state 2 ခုကို သတ်မှတ်တဲ့အတွက် Binary Representation လို့လဲ ခေါ်ပါတယ်။ ကွင်းယူမယ်၊ ဘောလုံးယူမယ်ဆိုတဲ့ state ၂ ခုကို ဒင်္ဂါးပြားရဲ့ ခေါင်းနှင့်ပန်း အပေါ်မှာ Encoding လုပ်လိုက်တာဖြစ်တဲ့အတွက် ကျလာတဲ့ အဖြေပေါ်မူတည်ပြီး ခေါင်းနဲ့ပန်းရဲ့ state ဟာ ကွင်းယူမယ်၊ ဘောလုံးယူမယ်ရဲ့ state အပေါ် အစားထိုးပြီး အဆုံးအဖြတ်ပေးသွားတာပါ။
တဆင့်ထပ်တက်ကြည့်ပါမယ်။ မီးပွိုင့် (Traffic Light) မှာ ရှိတဲ့ အနီ၊ အဝါ၊ အစိမ်း ဆိုတဲ့ အရောင်တွေကို ကျွန်တော်တို့ ယာဉ်စည်းကမ်း၊ လမ်းစည်းကမ်းဆိုင်ရာ ဥပဒေသမှာ ရပ်၊ ကြည့်၊ သွား ဆိုပြီး encoding လုပ်လိုက်ပါတယ်။ မီးပွိုင့်မှာ ရပ်၊ ကြည့်၊ သွား ဆိုတဲ့ စာ မရေးထားပေမဲ့ (ကပ်သီးကပ်သပ်နဲ့ တချို့မီးပွိုင့်တွေမှာ ရေးထားတာလဲ ရှိတယ်လို့ ဆိုနိုင်ပေမဲ့၊ များသောအားဖြင့် ရေးမထားကြပါဘူး။) ပေါ်လာတဲ့ အရောင်ကို မြင်တာနဲ့ ကျွန်တော်တို့ ဦးနှောက်တွေက ရပ်နေရမလား၊ ဘေးဘယ်ညာကြည့်ရမလား၊ သွားရမလားဆိုတာကို တန်း interpret လုပ်ပါတယ်။ ဒါဟာလဲ encoding ရဲ့ သဘောတရားတစ်ခုပါ။ တစ်ခု သတိထားရမှာက ဒီမှာ state ၃ မျိုး ဖြစ်သွားပါပြီ။ ခုနကထက် ပိုများလာပါတယ်။
အံစာတုံးကို ကြည့်ရအောင်။ အံစာတုံး တစ်တုံးမှာ မျက်နှာပြင် ၆ ဖက်ပါဝင်ပါတယ်။ (စာကြွင်းအနေနဲ့ မျက်နှာပြင် ၆ဖက်ထက် ပိုတဲ့ အခြားအံစာတုံး အမျိုးအစားများစွာလဲ ရှိပါသေးတယ်။) ကျွန်တော််တို့ Board Game ဆော့တဲ့အခါ အံစာခေါက်လိုက်ပြီး ကျလာတဲ့ နံပါတ်အပေါ်မူတည်ပြီး အကွက်ကို ရွှေ့ပါတယ်။ ဂဏန်းများလေ ဝေးဝေးနဲ့ ရှေ့ဆုံးကို ရောက်လေပါ။ တချို့ Board Game တွေမှာဆို ဂဏန်းများလေ character ရဲ့ power ကြီးလေပါ။ ဒါဟာ အံစာတုံးရဲ့ မျက်နှာပြင်ပေါ်မှာ ရှိတဲ့ ဂဏန်းတွေကို encoding လုပ်ပြီး အံစာခေါက်လို့ ကျလာတဲ့ result အပေါ်မှာ ကျွန်တော်တို့ ဆုံးဖြတ်ပြီး ကစားပွဲတွေကို ကစားခဲ့ကြပါတယ်။
ဒီဥပမာ ၃ ခုမှာ သတိပြုရမဲ့ အရာ တစ်ခုရှိပါတယ်။ အဲ့တာက state နည်းလေ Information Density လို့ခေါ်တဲ့ သတင်းအချက်အလက် ဆံ့ဝင်နိုင်စွမ်းအားနည်းပါတယ်။ အပြန်အလှန်အားဖြင့် state များလေ Information Density များလေပါ။ ဒင်္ဂါးပြားသည် state 2 ခုပဲရှိတာကြောင့် information 2 ခုပဲ representation လုပ်လို့ရပါတယ်။ မီးပွိုင့်ကျတော့ state 3 ခုရှိတာကြောင့် ဒင်္ဂါးပြားထက်စာရင် Information Density ပိုမြင့်လာပါတယ်။ ၆ဖက် အံစာတုံးကျတော့ ခုနက ဒင်္ဂါးပြားထက်ကော၊ မီးပွိုင့်ထက် စာရင် Information Density ပိုများပြီး ပိုဆံ့ပါတယ်။ ဒီတော့ Information Density များများနဲ့ အချက်အလက်များများ သိမ်းချင်ရင် ပိုများတဲ့ state representation တွေကို ကျွန်တော်တို့လိုအပ်ပါတယ်။
အခု Classical Computing မှာရှိတဲ့ Encoding တွေကို ကျွန်တော်တို့ပြန်သွားကြည့်ပါမယ်။ ခေတ်အဆက်ဆက်မှာ သုံးခဲ့တဲ့ Encoding နည်းစနစ်တွေကတော့ -
- Baudot Code (5-bit)
- BCD (4-bit)
- BCDIC (6-bit)
- FIELDATA (6-bit)
- EBCDIC (8-bit)
- ASCII-7 (7-bit)
- ASCII-8 (8-bit)
- Unicode
တို့ပဲ ဖြစ်ပါတယ်။