Sunday, July 7, 2013

ကွန်ပျူတာသိပ္ပံ နှင့် ကိုင်းကွဲပညာရပ်များ

မိတ်ဆက်နိဒါန်း
ကမ္ဘာ့ပထမဦးဆုံး ကွန်ပြူတာသိပ္ပံပညာရပ်ဆိုင်ရာဘွဲ  ဒီဂရီဖြစ်တဲ့ Cambridge Diploma in Computer Science ကို အင်္ဂလန်နိုင်ငံ ကင်းဘရစ်ချ်တက္ကသိုလ်ရဲ့ ကွန်ပြူတာလက်တွေ စမ်းသပ်ခန်း (University of Cambridge, Computer Laboratory) က ၁၉၅၃ ခုနှစ်မှာ စတင်သင်ကြားပေးအပ်ခဲ့ပါတယ်။ အမေရိကန်နိုင်ငံမှာတော့ ၁၉၆၂ ခုနှစ်ရောက်မှ ပါဂျူးတက္ကသိုလ် (Purdue University)က ကွန်ပြူတာသိပ္ပံ ဘွဲ  သင်တန်းကို စတင်ခဲ့ပါတယ်။ ဒီပညာရပ်ရဲ့ သက်တမ်းဟာ နှစ်ပေါင်း ၆၀-၇၀ ကျာ်ရှိလာပြီပေါ့။ ဒါကြောင့်လည်း ကွန်ပြူတာသိပ္ပံပညာရပ်ဟာ အတိုင်းအတာတရပ်အထိ ရင့်ကျက်တည်ငြိမ်မှုရှိနေပါပြီ။ ဒီပညာရပ် ဖွံ ဖိုးလာတာနဲ အမျှ သူနဲ ဆက်စပ်နှီးနွယ်တဲ့ ပညာရပ်ကိုင်းကွဲတွေပါ အမြောက်အများ ပါ်ထွက်လာခဲ့ပြီး ခုထက်ထိလည်း  ပါ်ထွက်လာနေဆဲပဲ ဖစ်ပါတယ်။ ဒီတော့ ပထမဆုံးအနေနဲ  ကွန်ပြူတာသိပ္ပံဆိုတာဘာလဲ ဆိုတာကိုသာ အရင်ဆုံး စတင်လေ့လာကြည့်ကြပါစို ။
ကွန်ပြူတာသိပ္ပံပညာဆိုတာ ကြီးကျယ်ခမ်းနားတဲ့ ဂရိုဂရမ်ရေးနည်းတွေကို လ့လာတာမဟုတ်ပါဘူး။ ကွန်ပြူတာသိပ္ပံလောကအတွက် နိုဘယ်လ်(Nobel) ဆုလိုပဲ ဂုဏ်သိက္ခာမြင့်မားလှတဲ့ တားရင်းဆု(Turing Award)ရှင် တရောက်ဖြစ်ပြီး ကွန်ပြူတာသီအိုရီ သဘောတရားရေးရာမှာ အလွန်ကြွယ်၀သူတရောက်ဖြစ်တဲ့ အက်ဒ်စ်ဂါ ဒဂျစ်ခ်စထြာ (Edsger Dijkstra) ရဲ့ ထင်ရှားတဲ့ ခိုင်းနှိုင်းချက် စကားတခွန်းရှိပါတယ်။ အဲဒါကတော့
 “နက္ခတ္တဗေဒပညာရပ် (Astronomy) မှာ နက္ခတာရာကြည့်မှန်ပြောင်း (Telecscope) ကို အသုံးချပြီး လုပ်စရာ လ့လာစရာတွေ တပုံတပင်ရှိသလိုပဲ၊ ကွန်ပြူတာသိပ္ပံပညာရပ်မှာလည်း ကွန်ပြူတာကို အသုံးချပြီး လုပ်စရာ ကိုင်စရာ လ့လာစရာတွေ တပုံတပင်ရှိနေပါတယ်”
 ဆိုတဲ့စကားပါ။
တကယ်တော့ ကွန်ပြူတာသိပ္ပံပညာရပ်ဆိုတာ ဘယ်လိုစနစ်မျိုးကိုမဆို နားလည်သဘောပေါက်အောင် လ့လာဖို ၊ သင်္ချာပညာရပ်ဆိုင်ရာ အသုံးချ ကရိယာတန်ဆာပလာတွေ နဲ  အတွေးအခေါ်အယူအဆ တွကို ပါင်းထားတာဖြစ်ပါတယ်။ ကွန်ပြူတာသိပ္ပံပညာရပ်ကိုအသုံးပြုပြီး လူ ဦးဏှောက်စနစ်၊ စကြာ်၀ဠာစနစ်၊ သက်ရှိစနစ် နဲ  ကွန်ပြူတာစနစ်တွေပါ အပါအ၀င် တခြားစနစ်မျိုးစုံကို လ့လာနိုင်ပါတယ်။
ဒီနေရာမှာ မိတ်ဆွေတို ဖက်က မးကောင်းမေးနိုင်တာက “ဥပမာဆိုရင်ဗျာ စကြာ်၀ဠာအကြောင်းနားလည်ဖို  အသင့်တော်ဆုံး အကောင်းဆုံး ပညာရေးလမ်းကြောင်းက ရူပဗေဒ မဟုတ်ဘူးလားဗျ။ ရူပဗေဒကို တိုက်ရိုက်မလေ့လာပဲ ကွန်ပြူတာသိပ္ပံပညာရပ်ကိုသုံးပြီး စင်္ကြာ၀ဠာကြီးအကြောင်း လ့လာမယ်ဆိုတာ ဖာင့်ဖြောင့်သွားလို ရတဲ့လမ်းကို ရှည်လျားအောင် ရှုပ်ထွေးအောင် တမင်ကွေ ၀ိုက်သွားနေသလို ဖစ်မနေဘူးလားဗျ” ဆိုတာပါပဲ။ အဲဒီမေးခွန်းရဲ့ အဖြေနဲ ပတ်သက်ပြီး MIT က သီအိုရီကွန်ပြူတာသိပ္ပံပညာရှင် ပါမောက္ခ စကော့ အာရွန်ဆွန် (Scott Aronson) က အခုလို ရှင်းပြပါတယ်။
 “တကယ်တော့ ရူပဗေဒပညာရှင်တွေ လ့တာတဲ့နည်းက အပေါ်ကနေ အာက်ကို တဖြည်းဖြည်း ချဉ်းကပ်လေ့လာတဲ့ပုံစံ ( top-down approach) မျိုးနဲ သွားတာဗျ။ ပုံစံတကျဖြစ်နေတဲ့ မင်တွေ နကျ ပုံမှန်အဖြစ်အပျက်တွေကို လိုက်လံရှာဖွေတယ်။ အဲဒီအဖြစ်အပျက် ကနေ အချက်အလက်တွေကို ထုတ်ယူ ပီး ယဘုယျ ဥပဒေသတွေ အဖြစ် ဖန်တီးတည်ဆောက်လိုက်တယ်။ ပီးတော့မှတခြားအချက်အလက်တွေနဲ ပါင်းစည်းဆက်စပ်ပေးနိုင်မယ့်၊ ပိုမို ကျယ်ပြန် နက်ရှိုင်း တဲ့ ဥပဒေသတွေ ထွက်ပေါ်လာတဲ့အထိ ဖွင့်ဆိုရှင်းပြကြတယ်။ ကွန်ပြူတာသိပ္ပံကတော့ အဲဒီရဲ့ ပာင်းပြန်လမ်းကြောင်းအတိုင်း အလုပ်လုပ်တယ်လို  တွးထင်မှတ်ယူလိုက်ဗျာ။ ကွန်ပြူတာသိပ္ပံပညာရှင်တွေက ဘယ်လိုလက်တွေ  စမ်းသပ်ဆောင်ရွက်ချက်တွေနဲ မှ သက်သေပြနေဖို မလိုပဲ မှန်ကန်ကြောင်း အလွယ်တကူလက်ခံထားပြီးဖြစ်တဲ့ စည်းမျဉ်းစည်းကမ်း ဥပဒေသတွေကို အသုံးပြုပြီးတော့ အဖြစ်နိုင်ဆုံး အရိုးရှင်းဆုံးစနစ်တခုနဲ  စ’ လိုက်တာပဲ။ ပီးတော့မှ ‘ဘယ်လောက်အထိ ရှုပ်ထွေးတဲ့ စနစ်မျိုးကို တို  တည်ဆောက်နိုင်မလဲ။ ဒါမှဟုတ် အဲဒီလောက်ထိ ရှုပ်ထွေးတဲ့စနစ်မျိုးကို တို  တည်ဆောက်လို ရပါမလား’ ဆိုပြီး ကိုယ့်ကိုကိုယ် မးမြန်းတဲ့ ပုံစံမျိုးနဲ သွားတာပါ”
လို ဆိုပါတယ်။ ဒါကြောင့် “တူညီတဲ့အကြောင်းအရာတစ်ခုတည်းကိုပဲ မတူညီနဲ ပညာရပ် (computer science) ကိုသုံးပြီး မတူညီတဲ လမ်းကြောင်းအသီးသီးကနေ ကွဲပြားခြားနားတဲ့ ပုံသဏ္ဍန်နဲ  ချဉ်းကပ်လေ့လာတာပါ” လို ပဲ ဆိုပါရစေ။
“ကဲကဲ..ဒါဆိုလည်း ကာင်းပါပြီဗျာ။ ပိုရှင်းသွားအောင် ကွန်ပြူတာသိပ္ပံဆိုတာ ဘာလဲ ဆိုတာကိုသာ တိတိကျကျ ပာစမ်းပါ” လို ဆိုရင် မိတ်ဆွေကို အရင်ဆုံး တခုတော့ တင်ပြချင်ပါရစေ။ ကွန်ပြူတာသိပ္ပံပညာရပ်နဲ ပတ်သက်တဲ့ ဖွင့်ဆိုရှင်းလင်းချက်တွေ အဓိပ္ပါယ်သတ်မှတ်ချက်တွေဟာ ပညာရှင်တွေပေါ်မူတည်ပြီး အမျိုးမျိုးအထွေထွေရှိနေပါတယ်။ ဒါကြောင့် ကျွန်တော် ဒီဆောင်းပါးမှာ တင်ပြမယ့်အချက်ဟာ မိတ်ဆွေ ဖတ်ဖူး မှတ်ဖူးတာနဲ  တူချင်မှ တူမှာပါ။ ဒါပေမယ့် သဘောတရားကတော့ အတူတူပဲဖြစ်ပါလိမ့်မယ်။ အဲဒီသဘောတရား အနှစ်သာရကတော့ ကွန်ပြူတာသိပ္ပံဆိုတာ တွက်ချက်မှုပညာရပ် (computing) နဲ  နှီးနွယ်ဆက်စပ်နေတဲ့ သီအိုရီသဘောတရားပိုင်း နဲ  လက်တွေ အသုံးချမှုပိုင်းဆိုင်ရာ ပညာရပ်ပေါင်းစုံကို ပါင်းစည်းဆက်စပ်လေ့လာတဲ့ ပညာရပ်ဖြစ်တယ် ဆိုတာပါပဲ။

ကွန်ပြူတာသိပ္ပံပညာအတွက် ဖွင့်ဆိုချက်များ
အမေရိကန်နိုင်ငံ၊ ကွန်ယက်နဲ သတင်းအချက်အလက်နည်းပညာအတွက် သုတေသနနဲ  ဖွံ ဖိုးရေးလုပ်ငန်းဆိုင်ရာ အမျိုးသားအဆင့် ပူးပေါင်းဆောင်ရွက်မှုဌာန (The US National Coordination Office for Networking and Information Technology Research and Development - NITRD) က ဖွင့်ဆိုတဲ့ computer science အတွက် အဓိပ္ပါယ်သတ်မှတ်ချက်က ဒီလိုပါ။
“the systematic study of computing systems and computation. The body of knowledge resulting from this discipline contains theories for understanding computing systems and methods; design methodology, algorithms, and tools; methods for the testing of concepts; methods of analysis and verification; and knowledge representation and implementation.” (http://www.nitrd.gov/pubs/bluebooks/1995/section.5.html)
ကွန်ပြူတာသိပ္ပံဆိုတာ တွက်ချက်မှုစနစ်တွေနဲ  တွက်ချက်မှုပညာရပ်အကြောင်းကို စနစ်တကျလေ့လာတဲ့ ပညာရပ်ဖြစ်တယ်။ ဒီပညာရပ်မှာ
• တွက်ချက်မှုစနစ်တွေ နဲ  နည်းလမ်းတွေ ကို နားလည်သဘောပေါက်နိုင်ဖို  လိုအပ်တဲ့ သီအိုရီတွေ၊
• ဒီဇိုင်းပြုပုံ၊ ပဿနာဖြေရှင်းပုံ နဲ  ကရိယာတန်ဆာပလာတွေ၊
• တွးခေါ်ယူဆချက်တွေ မှန် မမှန် စစ်ဆေးစမ်းသပ်နိုင်မယ့် နည်းနာနိဿယတွေ
• သရုပ်ခွဲဆန်းစစ်လေ့လာမှုနဲ အဲဒီလေ့လာမှုကရတဲ့ အချက်တွေကို ၀ဖန်ပိုင်းခြားမှု
• လူ အသိပညာကို ဘယ်လိုပုံစံနဲ  (ကွန်ပြူတာပေါ်မှာ) ဖါ်ပြမလဲ ဘယ်လိုတည်ဆောက်ယူမလဲ
ဆိုတဲ့ ပညာရပ် တွပါ၀င်တယ်။
Association for Computing Machinery (ACM) ရဲ့ ပိုမိုကျစ်လျစ်တဲ့ ဖွင့်ဆိုချက် နာက်တမျိုးကတော့ “study of computers and algorithmic processes, including their principles, their hardware and software design, their applications, and their impact on society.”
“ကွန်ပြူတာသိပ္ပံဆိုတာ ကွန်ပြူတာတွေနဲ ပဿနာဖြေရှင်းပုံနည်းလမ်းအဆင့်ဆင့်၊ စည်းမျဉ်းစည်းကမ်းနည်းလမ်း၊ လိုအပ်တဲ့ hardware နဲ  software တွရဲ့ ဒီဇိုင်း တည်ဆောက်ပုံ၊ လက်တွေ အသုံးချပုံ နဲ ကွန်ပြူတာတွေက လူ အဖွဲ အစည်းအပေါ် ဘယ်လို အကျိုးသက်ရောက်မှုတွေရှိသလဲဆိုတာ လ့လာတဲ့ပညာ” ဆိုပြီး ဖစ်ပါတယ်။
နောက်ထပ် အလွန်ထင်ရှားတဲ့ လိုရင်းတိုရှင်း ဖွင့်ဆိုချက်တခုကတော့ ကွန်ပြူတာသိပ္ပံနယ်ပယ်ရဲ့ ထိပ်တန်းပညာရှင်နှစ်ဦးဖြစ်တဲ့ Gibbs နဲ  Tucker တို ရဲ့ ဖွင့်ဆိုချက်ပါ။ “ကွန်ပြူတာသိပ္ပံဆိုတာ algorithm တွနဲ  သူတို ကို ဘယ်လို ဖွဲ စည်းတည်ဆောက်ထားသလဲ ဆိုတာကို အသေးစိပ် သရုပ်ခွဲ ဆန်းစစ်လေ့လာတဲ့ပညာ […algorithm development and analysis as the central focus of computer science ]” (Gibbs and Tucker, “A Model Curriculum for a Liberal Arts Degree in Computer Science,” Comm. of the ACM, vol. 29, no. 3, March 1986) လို  ဆိုပါတယ်။
ဘယ်လိုပဲ အဓိပ္ပါယ်သတ်မှတ်ချက်တွေကွဲပြားပေမယ့်၊ အားလုံးသောဖွင့်ဆိုချက်တွေက တညီတညွတ်တည်း ရည်ညွှန်းတဲ့ နယ်ပယ်ကတော့ “Algorithms” တွကို လ့လာတဲ့ ပညာရပ်ဖြစ်ကြောင်းတွေ ရမှာပါ။ မှန်ပါတယ်။ ဒီ algorithms ဟာ ပုံစံတမျိုးမဟုတ် တမျိုးနဲ  ကွန်ပြူတာသိပ္ပံပညာရပ်မှာ အဓိကဗဟိုချက် အဖြစ်ပါ၀င်နေပါတယ်။ “အလုပ်တခုလုပ်ဖို ၊ ပဿနာတခုဖြေရှင်းဖို ၊ စတာတွေအတွက် တိကျရှင်းလင်းတဲ့ လုပ်ထုံးလုပ်နည်းအဆင့်ဆင့်ကို အစီအစဉ်တကျ ဖါ်ပြထားတဲ့ လမ်းညွှန်ချက်၊ ညွှန်ကြားချက်” တွဟာ algorithm ပဲပေါ့။
ဥပမာ ကျွန်တော်တို  ငယ်ငယ်ကတည်းက ရင်းနှီးခဲ့ပြီးဖြစ်တဲ့ ကိန်းနှစ်ခုအတွက် အကြီးဆုံးဘုံဆခွဲကိန်း (Greatest Common Divisor – GCD) ဘယ်လိုရှာမလဲဆိုတဲ့ အကြောင်းကို algorithm တစ်ခု တည်ဆောက်ကြည့်ရင်
• There must be two positive integers: a and b.
• If b is zero, then the GCD of a and b is a. Algorithm ends.
• Set r to be the remainder obtained from the integer division of a by b.
• Repeat this process using b and r, until remainder becomes zero.
ဆိုပြီးဖြစ်မှာပေါ့။ မှန် မမှန် တာ့ မိတ်ဆွေတို ဘာသာပဲ ဆန်းစစ်ကြည့်ပါတော့။ တကယ်တော့ ကွန်ပြူတာ ပရိုဂရမ်ဆိုတာ အဲဒီ algorithm တွကို ကွန်ပြူတာနားလည်မယ့် electronic ပုံစံနဲ ကိုယ်စားပြုထားတဲ့ instruction sets (ညွှန်ကြားချက် အစုအေ၀း) တွပဲမဟုတ်ပါလား။ တကယ်လို  ကျွန်တော်တို ဟာ ပဿနာတစ်ခုကို ဖရှင်းပုံ algorithm ကိုသာ မတည်ဆောက်နိုင်ရင် programming လည်း ရးနိုင်မှာမဟုတ်ပါဘူး။
သင်္ချာ ကွန်ပြူတာ နှင့် ၀ိဇ္ဇာ သိပ္ပံ
ဒီနေရာမှာ မးစရာမေးခွန်းတစ်ခုက အသေအချာရှိနေပါတယ်။ အဲဒါကတော့ “ ကွန်ပြူတာသိပ္ပံ ပညာရပ်ဟာ ဘယ်လိုကြောင့် သိပ္ပံပညာရပ်ဖြစ်ရတာလဲ ဆိုလိုတာက ဘာကြောင့် သိပ္ပံပညာရပ်လို ပာနိုင်ရတာလဲ” ဆိုတဲ့ မးခွန်းပါ။ ဘာလို လဲဆိုတော့ တခြားသိပ္ပံပညာရပ်တွေဖြစ်တဲ့ ရူပဗေဒ၊ ဇီ၀ဗေဒ၊ ဓာတုဗေဒ စတဲ့ ပညာရပ်အသီးသီးဟာ လက်တွေ သဘာ၀လောကကြီးရဲ့ အဖြစ်အပျက် ဒပ်၀တ္တု စတာ တွကို အခြေခံပြီး လ့လာတာတဲ့ ပညာရပ်တွေဖြစ်ပြီး၊ ကွန်ပြူတာသိပ္ပံကတော့ အဲဒါတွေအပေါ်မှာ အခြေခံ လ့လာတာမှ မဟုတ်တာကိုး။ ကွန်ပြူတာသိပ္ပံပညာရပ်ဟာ ထင်ရှားတဲ့ သိပ္ပံပညာတွေနဲ စာရင်၊ သင်္ချာပညာရပ်နဲ သာပိုပြီး ဆင်တူနေပါတယ်။ ဒီနေရာမှာ မိတ်ဆွေတို စိတ်ထဲမှာ ချက်ခြင်းပေါ်လာမယ့် မးခွန်းက “သင်္ချာဆိုတာလည်း သိပ္ပံပညာရပ်ပဲမဟုတ်လားဗျ” ဆိုတာပဲဖြစ်ပါတယ်။ ဒီကိစ္စကတော့ အလွန်ရှုပ်ထွေးရှည်လျားတဲ့ သင်္ချာပညာရပ်ရဲ့ သမိုင်းကြောင်းနဲ  သဘောသဘာ၀တွေကို အရင်ဆုံးရှင်းပြရမှာဖြစ်တဲ့အတွက် ချန်လှပ်ခဲ့ပါရစေတော့။ ကွန်ပြူတာသိပ္ပံဆိုတာဘာလဲပြောနေရင်း သင်္ချာသည် ၀ိဇ္ဇာပညာရပ်လား သိပ္ပံပညာရပ်လားဆိုတဲ့ ဆွးနွေးငြင်းခုံမှုကို ရာက်သွားမှာစိုးလို ပါ။ အတိုချုပ်အဖြေကတော့ “သင်္ချာပညာရပ်ရဲ့ တကယ့်အနှစ်သာရဟာ အတွေးအခေါ် အယူအဆ သဘောတရား နဲ ၊ လက်တွေ စမ်းသပ်ဆောင်ရွက်မှုတွေကို၊ ယုတ္တိနည်းကျ ကြာင်းကျိုးဆက်စပ် ဆင်ခြင်စဉ်းစားတဲ့နည်းနဲ  ၊ ပါင်းစည်းပေးတဲ့ ပညာရပ်ဖြစ်တယ်။ ဒါကြောင့် တစ်ချိန်တုန်းက ရန်ကုန်တက္ကသိုလ်အပါအ၀င် ကမ္ဘာ့ထိပ်တန်းတက္ကသိုလ်ကြီးတွေမှာ သင်္ချာပညာရပ်အတွက်ဘွဲ ဒီဂရီပေးအပ်တဲ့အခါ ၀ိဇ္ဇာဘွဲ  (B.A) အနေနဲ  ပးအပ်ခဲ့တာပေါ့” လို ဆိုပါရစေ။

ဒါကြောင့် တချို သာပညာရှင်အုပ်စုတွေက computer art (ကွန်ပြူတာ၀ိဇ္ဇာပညာရပ်) လို  ပာဆိုကြပြီး၊ တချို ပညာရှင်အုပ်စုတွေကလည်း ကွန်ပြူတာသိပ္ပံပညာရပ်ကို သင်္ချာဘာသာရဲ့ ကိုင်းကွဲတခုအဖြစ် သတ်မှတ်ပါတယ်။ ကျွန်တော့ရဲ့ယူဆချက်ကတော့ နှစ်ဖွဲ လုံးမှန်ပါတယ်။ ဘာလို လဲဆိုတော့ သင်္ချာမှာသုံးတဲ့ “သိပြီးသား အချက်အလက်တွေအပေါ် အခြေခံပြီး  ကြာင်းကျိုး ဆက်စပ် ဆင်ခြင် စဉ်းစားတဲ့နည်း deductive reasoning” ဟာ သီအိုရီကွန်ပြူတာသိပ္ပံမှာ ယဘုယျအားဖြင့် မကြာခဏ တွ နမြင်နေကျ အချက်ဖြစ်နေလို ပါပဲ။ ပီးတော့လည်း ဒီပညာရပ်အပေါ် အများကြီး သြဇာလွှမ်းမိုးခဲ့တဲ့ ကွန်ပြူတာသိပ္ပံပညာရပ်ရဲ့ ဖခင်ကြီး ထားရင်း Alan M. Turing ၊ သီအိုရီကွန်ပြူတာသိပ္ပံပညာရပ်ရဲ့ ဖခင်ကြီး ဂါဒ်ဒဲလ် Kurt Gödel၊ ဒီကနေ ခတ်ကွန်ပြူတာတွေရဲ့ ရှ ဆာင် ဗွန်နွိုင်းမဲင်းန် John von Neumann တို ဟာ ဒိပ်ဒိပ်ကြဲသင်္ချာပညာရှင်တွေကိုး။ ပီးတော့လည်း ကွန်ပြူတာသိပ္ပံပညာရပ်ကို ထဲထဲ၀င်၀င် တတ်ကျွမ်းနားလည်ဖို ဆိုတာ သင်္ချာစစ် (pure maths) သီအိုရီသင်္ချာ(theoretical mathematics) အသုံးချသင်္ချာ(applied mathematics) တို ရဲ့ အဆင့်မြင့်သင်္ချာပညာကိုင်းကွဲတွေ လိုအပ်ပါတယ်။
တခြားရှုဒေါင့်ကကြည့်ပြန်ရင်တော့လည်း ကွန်ပြူတာ(သိပ္ပံ)ပညာရှင်တွေဟာ အသစ်အသစ်သော တွးခေါ်ယူဆချက်တွေကို အဆိုပြုတင်ပြဖို နဲ  အဲဒီအဆိုတွေ မှန် မမှန် လက်တွေ စမ်းသပ်ဖို အတွက် သိပ္ပံနည်းစနစ် (scientific methods) တွကိုပဲသုံးကြတာဖြစ်တဲ့အတွက် computer science လို ဆိုရင်လည်း မှန်တာပါပဲ။ ဒါကြောင့် ဘယ်ပညာရပ်ကိုမဆို ပညာရှင်ဆန်ဆန် လ့လာမယ်ဆိုရင်တော့ ဘယ်နေရာမှာမှ “လှေနံဒါးထစ်၊ အသေမှတ် အလွတ်ကျက်” မလုပ်မိဖို ကျွန်တော်တို  အထူးဂရုပြုသင့်ပါတယ်။
ကွန်ပြူတာသိပ္ပံ၏ ကိုင်းကွဲပညာရပ်နယ်ပယ်များ
Association for Computing Machinery (ACM) နဲ  IEEE-Computer Society (IEEE-CS) တို က ကိုယ်စားတွေ ပါ၀င်ဖွဲ စည်းထားတဲ့ “တွက်ချက်မှုသိပ္ပံပညာရပ် အသိအမှတ်ပြု အဖွဲ ” [Computing Sciences Accreditation Board - CSAB] က
1. theory of computation - တွက်ချက်မှုသီအိုရီ
2. algorithms and data structures - ပဿနာဖြေရှင်းပုံနည်းလမ်းအဆင့်တွေနဲ  အချက်အလက်ဖွဲ စည်းတည်ဆောက်ပုံ
3. programming methodology and languages - ပရိုဂရမ် ဘာသာစကားနဲ  ရးသားနည်း
4. computer elements and architecture ကွန်ပြူတာမှာ ပါ၀င်တဲ့အစိပ်အပိုင်းတွေ (hardware + software) ရဲ့ ဗိသုကာတည်ဆောက်ပုံ
စတဲ့ ပညာရပ် နယ်ပယ်လေးခုကို ကွန်ပြူတာသိပ္ပံရဲ့ အဓိက အရေးအကြီးဆုံး နယ်ပယ်တွေအဖြစ် သတ်မှတ်ခဲ့ပါတယ်။ အဲဒါတွေအပြင် CSAB က software engineering, artificial intelligence, computer networking and communication, database systems, parallel computation, distributed computation, computer-human interaction, computer graphics, operating systems, နဲ  numerical and symbolic computation စတဲ့ ပညာရပ်တွေကိုလည်း ကွန်ပြူတာသိပ္ပံရဲ့ အခြားအရေးကြီးတဲ့ နယ်ပယ်တွေအဖြစ် သတ်မှတ်ထားပါတယ်။
ACM ကပညာရှင်ပေါင်းများစွာ ပါ၀င်ရေးသားထားတဲ့ Allen B. Tucker ရဲ့ “Computer Science Handbook, second edition (2004)” မှာတော့ အာက်ပါပညာရပ် ၁၁ မျိုးကို ကွန်ပြူတာသိပ္ပံရဲ့ ကိုင်းကွဲ ဘာသာရပ်တွေအဖြစ် တိတိကျကျ သတ်မှတ်ထားပါတယ်။
1. Algorithms and Complexity - ပဿနာဖြေရှင်းပုံအဆင့်ဆင့် နဲ  သူရဲ့ ရှုပ်ထွေးမှုအတိုင်းအဆကို လ့လာတဲ့ပညာရပ်။
2. Architecture - မှန်မှန်ကန်ကန်နဲ  စွမ်းရည်မြင့်မြင့် လုပ်ပေးနိုင်မယ့် ကွန်ပြူတာ Hardware တွကို ဘယ်လို ဒီဇိုင်းပြု တည်ဆောက်မလဲဆိုတဲ့ ပညာ။
3. Computational science - သိပ္ပံဆိုင်ရာရှာဖွေတွေ ရှိမှုတွေရဲ့ အခြေခံအကျဆုံး အုတ်မြစ်သုံးခုဖြစ်တဲ့ သီအိုရီပိုင်း တွက်ချက်မှုပိုင်း နဲ  လက်တွေ  စမ်းသပ်လုပ်ဆောင်တဲ့အပိုင်း တွကို ပါင်းစည်းထားတဲ့ပညာရပ်။
4. Graphics - တကယ့်ရုပ်၀တ္တု (physical object)တွေနဲ  စိတ်ကူးပုံသဏ္ဌန် (conceptual object) တွကို ကွန်ပြူတာပေါ်မှာ ဘယ်လို ဖါ်ပြမလဲဆိုတာကို လ့လာတဲ့ပညာ။
5. Human-computer interaction - လူနဲ ကွန်ပြူတာရဲ့ အချင်းချင်းအပြန်အလှန် ဆက်သွယ်ပုံကို အထူးပြုလေ့လာတာ
6. Information management - အလွန်များပြားလှတဲ့ အချက်အလက်တွေကို သိုလှောင်သိမ်းဆည်း ရာမှာ ကြုံတွေ ရတဲ့ ပဿနာတွေနဲ  ဖရှင်းပုံနည်းလမ်းတွေကို လ့လာတာ
7. Intelligent systems - လူရဲ့ အချက်အလက်ပေါ်မူတည်ပြီး စဉ်းစားတွေးတောနိုင်စွမ်းကို ကွန်ပြူတာတွေပေါ်မှာ ပုံစံပြုလုပ်ဆောင် (simulate) နိုင်ဖို  လ့လာတဲ့ပညာရပ်။ ဒါကို တုပအသိညာဏ် (Artificial Intelligence) လို လဲခေါ်တယ်။
8. Net-centric computing - စနစ်တခုရဲ့ လုပ်ဆောင်နိုင်စွမ်းကို ကွန်ယက်တလျောက် ဖန် ကျက် တိုးချဲ့ ပီး လုပ်နိုင်ဖို  အတွက် လ့လာတဲ့ပညာရပ်
9. Operating systems - ကွန်ပြူတာ hardware တွနဲ  အသုံးချဆော့ဖ်၀ဲတွေကို ကြားခံဆက်သွယ်ဆောင်ရွက်ပေးတဲ့ စနစ်ကို လ့လာတဲ့တာ
10. Programming languages - ပရိုဂရမ်တွေ ဆာ့ဖ်၀ဲတွေ သတင်းအချက်အလက်စနစ်တွေ ရးသားတည်ဆောက်ဖို လိုအပ်တဲ့ ကွန်ပြူတာသုံးဘာသာစကားတွေနဲ ပတ်သက်ပြီး လ့လာတဲ့ပညာရပ်
11. Software engineering - ပရိုဂရမ်တွေ ဆာ့ဖ်၀ဲတွေ သတင်းအချက်အလက်စနစ်တွေ ရးသားတည်ဆောက်ရာမှာ လိုအပ်တဲ့ ဗိသုကာပိုင်း ဒီဇိုင်းပိုုင်း လက်တွေ တည်ဆောက်မှုအပိုင်း စမ်းသပ်စစ်ဆေးတဲ့အပိုင်း စီမံခန် ခွဲအုပ်ချုပ်တဲ့အပိုင်း သရုပ်ခွဲဆန်းစစ်လေ့လာတဲ့အပိုင်း စတာတွေကို လ့လာတဲ့ပညာရပ်။
နိဂုံးအမှာ
မိတ်ဆွေတို မင်တဲ့အတိုင်းပဲ ကွန်ပြူတာသိပ္ပံပညာဆိုတာဟာ ကွန်ပြူတာအတွက် ပရိုဂရမ်ရေးတဲ့အလုပ်ထက် အများကြီး ပိုပါတယ်။ ဒီဆောင်းပါးမှာတော့ ကိုင်းကွဲ ပညာရပ် ၁၁-မျိုးနဲ ပတ်သက်လို  စာရင်းချပြရုံအဆင့်လောက်ပဲ တင်ပြနိုင်ခဲ့ပြီး ဘာသာရပ်တခုခြင်းစီကိုက အများကြီးကျယ်ပြန်  နက်ရှိုင်းလေတော့ သက်ဆိုင်ရာထပ်ဆင့်ကိုင်းကွဲ ဘာသာရပ်တွေရဲ့ အမည်ကိုတောင်မှ မတင်ပြနိုင်ခဲ့ပါဘူး။ စကားစပ်ပြီးပြောရရင် မိတ်ဆွေတို  သိထားသင့်တဲ့ အကြောင်းအရာတခုကတော့ ပညာရပ်တခုကို သင်ကြားတဲ့အခါ တက္ကသိုလ် ကာလိပ်တွေရဲ့ သင်ရိုးညွှန်းတမ်းတွေဟာ လ့လာနည်းပုံစံနှစ်မျိုးထဲက တစ်မျိုးမျိုးနဲ  ချဉ်းကပ်ထားလေ့ရှိတယ်ဆိုတဲ့ အကြောင်းပါ။ ပထမ တခုက “breadth-first” approach လို ခါ်ပါတယ်။ ဆိုလိုတာက ပထမဦးဆုံးအနေနဲ  ပညာရပ်တခုနဲ ပတ်သက်ပြီး တတ်နိုင်သမျှ ကျယ်ကျယ်ပြန် ပန် လ့လာစေတာ၊ နှီးနွယ်ဆက်စပ်ရာပညာရပ်တွေကို အခြေခံအဆင့်ထိ နားလည်သဘောပေါက်အောင် လ့လာစေတာ၊ ပီးမှ ကျာင်းသူကျောင်းသား အားသန်တဲ့ စိတ်၀င်စားတဲ့ နယ်ပယ်တစ်ခုကိုကိုပဲ အထူးပြုပြီး၊ အသေးစိပ် နက်နက်ရှိုင်းရှိုင်း ထဲထဲ၀င်၀င် ခခြေမြစ်မြစ် ဆရာတဆူအဆင့်ထိရောက်အောင် လ့လာစေတဲ့ ပုံစံကိုပြောတာ။  နာက် ဒုတိယတခုကတော့ “depth-first” approach ဖစ်ပါတယ်။ အဓိပ္ပါယ်က တချို ဘာသာရပ်သင်ရိုးတွေမှာ ပညာရပ်တခု အကြောင်းကိုပဲ ဇာင်းပေးပြီး အသေးစိပ်လေ့လာသင်ယူစေတယ်။ တခြားဘာသာရပ်တွေလည်း အနည်းအကျဉ်း ပါတော့ ပါတာပေါ့။ ဒါပေမယ့် ခပ်ပါးပါးလောက်ပဲမိတ်ဆက်ထားပြီး ခုနက target ထားတဲ့ ပညာရပ်ကိုသာ လုံး၀ကျွမ်းကျင်သွားတဲ့ အဆင့်ထိရောက်အောင် သင်ကြားပေးလိုက်တယ်။ ပီးမှ နှီးနွယ်ဆက်စပ်ရာ ပညာရပ်တွေကို ဖည်းဖြည်းချင်းလေ့လာသွားဆိုတဲ့ သဘောပေါ့။
အဲဒီနှစ်ခုလုံးမှာ အားနည်းချက် အားသာချက်တွေ ကိုယ်စီရှိပါတယ်။ ဥပမာ breadth-first approach ပုံစံနဲ လ့လာခဲ့ရင် ဘွဲ ကြိုတန်းအဆင့် (graduate level) လာက်မှာတော့ ဟိုစပ်စပ် ဒီစပ်စပ် တာ်တော်များများ သိထား တတ်ထားပေမယ့် ဘာမှ မယ်မယ်ရရ ခခြေမြစ်မြစ် ကျွမ်းကျင်မှုမရှိသေးပဲ လုပ်ငန်းခွင်၀င်ဖို  အခက်အခဲကြုံရနိုင်ပါတယ်။ (ကျောင်းတက်နေရင်းနဲ ပဲ တပြိုင်တည်းမှာ ကိုယ်စိတ်၀င်စားတဲ့ ပညာရပ်ကို ကျွမ်းကျွမ်းကျင်ကျင်ဖြစ်အောင် နက်နက်ရှိုင်းရှိုင်း လ့လာသွားသူတွေကတော့ ချွင်းချက်ဖြစ်ပါတယ်။) ဒါဟာ ကျာင်းသူကျောင်းသား တာ်တော်များများ အဓိကရင်ဆိုင်ရတဲ့ အခက်အခဲပါ။ အဲဒီအခါမှာ ကိုယ်တကယ် စိတ်၀င်စားတဲ့လိုင်း အတွက် academic ပိုင်းအရ ဘွဲ လွန်အဆင့် (post graduate level / master level) ဆက်တက်ချင်တက်၊ ဒါမှမဟုတ်လည်း ပင်ပသင်တန်းတွေနဲ ပဲဖြစ်ဖြစ် ကိုယ်တိုင်လေ့လာမှုနဲ ပဲဖြစ်ဖြစ် ပညာတခုကို (ဥပမာ - database administrator, network engineer, software developer, etc) ဇာက်ချပြီး အထူးပြုလေ့လာလိုက်ရင် အချိန်အတိုင်းအတာတခု ရာက်တဲ့အခါ အဖက်ဖက်မှာ knowledge ပည့်၀တဲ့ ဒါင်ဒေါင်မြည် ပညာရှင်တွေ ဖစ်လာနိုင်ပါတယ်။
Depth-first approach ရဲ့ အားသာတဲ့အချက်ကတော့ ဘွဲ ကြိုအဆင့်လောက်နဲ တင် လုပ်ငန်းခွင်၀င်နိုင်တဲ့ အချက်ပဲဖြစ်ပါတယ်။ ဒါပေမယ့် ခက်တာက သူ မှာ ကန် သတ်အမြင် [limited vision - ကိုယ်သိထားတာ ကျွမ်းကျင်တာနဲ ပဲ ဘာင်ခတ်ပြီး စဉ်းစားလေ့ရှိတဲ့အကျင့်] ပဲရှိနေနိုင်ပြီး၊ တခြားနှီးနွယ်ဆက်စပ်ရာ ပညာရပ်တွေကို မသိရှိတာ၊ ချိတ်ဆက်ပေါင်းစည်းပြီး မလုပ်နိုင်တာ စတဲ့ အားနည်းချက်တွေ ရှိနေနိုင်ပါတယ်။ ချွင်းချက်အနေနဲ ကတော့ အထက်မှာ တင်ပြခဲ့သလိုပဲ ကျာင်းတက်နေရင်းနဲ  တပြိုင်တည်းမှာ ကိုယ်အထူးပြုလေ့လာနေတဲ့့ ဘာသာရပ်နဲ  ပတ်သက်ဆက်နွယ်နေတဲ့ ပညာရပ်တွေကိုပါ ကျယ်ကျယ်ပြန် ပန် လ့လာသွားသူတွေကတော့ အမြင်ကျယ် အမြော်အမြင်ကြီးတဲ့ ပညာရှင်တွေ ဖစ်လာနိုင်ပါတယ်။
ကွန်ပြူတာသိပ္ပံလို ကျယ်ပြန် နက်ရှိုင်းတဲ့ ပညာရပ်မျိုးကျတော့ breadth-first ပဲဖြစ်ဖြစ်၊ depth-first နဲ ပဲဖြစ်ဖြစ် ဘယ်နည်းနဲ  လ့လာ လ့လာ၊ သင်ရိုးညွှန်းတမ်းတွေက ဘယ်လိုပဲရှိရှိ အဓိက ပုဂ္ဂိုလ်ကတော့ မိတ်ဆွေကိုယ်တိုင်ပါပဲ။ ကွန်ပြူတာသိပ္ပံပညာရှင် လို ပာနိုင်ဖို  ကွန်ပြူတာသိပ္ပံပညာရှင်အဖြစ် ရပ်တည်နိုင်ဖို ဆိုရင် အဲဒီ ဘာသာရပ်ခွဲတွေကို ထဲထဲ၀င်၀င် ကျွမ်းကျွမ်းကျင်ကျင် နားလည်သဘောပေါက်ထားဖို လိုအပ်ပါတယ်။  ကျာင်းပညာရေးက မိတ်ဆွေကို ကျယ်ကျယ်ပြန် ပန်  သိရှိအောင် သင်ကြားပေးလိုက်ရင် နက်နက်ရှိုင်းရှိုင်းသိဖို ကမိတ်ဆွေရဲ့ တာ၀န်ပါ။ တခါ ကျာင်းပညာရေးက တခုခုနဲ  ပတ်သက်ပြီး နက်နက်ရှိုင်းရှိုင်း သင်ကြားပေးလိုက်ရင် အဲဒီပညာရပ်နဲ  ဆက်နွယ်တာတွေကို ကျယ်ကျယ်ပြန် ပန်  သိအောင်လုပ်ဖို ကလည်း မိတ်ဆွေရဲ့တာ၀န်ပါပဲ။ “နေစမ်းပါဦး..ကွန်ပြူတာသိပ္ပံပညာနဲ ပတ်သက်ပြီး အဲဒါတွေ အကုန်လုံးကို နားလည်တော့ရော လက်ရှိအချိန် ဒီနိုင်ငံမှာ ဘယ်လိုအစိုးရအဖွဲ အစည်း ဘယ်လိုကုမ္မဏီမျိုးက ကျုပ်တို ကို လစာထိုက်ထိုက်တန်တန်ပေးပြီး၊ ကွန်ပြူတာသိပ္ပံပညာရှင် ဆိုတဲ့ ရာထူးမျိုးနဲ  အလုပ်ခန် မှာမို လို တုန်းဗျ” မိတ်ဆွေကမေးလာရင်တော့ “အေးဗျာ ဒါကတော့ တိုင်းပြည်ရဲ့ အင်ဖရာ စထရပ်ခြာ (ingrastructure) တွ၊ R&D တွ (သုတေသနနဲ  ဖွဲ ဖိုးရေး လုပ်ငန်းတွေ) အားကောင်းလာရင်တော့ ဖစ်လာမှာပါ..အခုတော့ အင်း ..အဲ..” လို ပဲ ယာင်၀ါး၀ါး လုံးချရတော့မှာပဲမိတ်ဆွေရေ။

ရွှင်လန်းချမ်းမြေ့ပါစေ။
infoTherapy(2013)
မှတ်ချက်။ ၂၀၁၃ ဂျူလိုင်လထုတ် ကွန်ပြူတာဂျာနယ်တွင် ဖါ်ပြပြီးသောဆောင်းပါးဖြစ်ပါသည်။