သင့်ကလေးကို Computer Programming နဲ့ ဘယ်လို မိတ်ဆက်မလဲ? အပိုင်း (၁)

date_range 05 July 2017

သင့်ကလေးကို Computer Programming နဲ့ ဘယ်လို မိတ်ဆက်မလဲ? အပိုင်း (၁)

visibility 19160 Views

နိဒါန်း 

               Computer Programming လို့ ပြောလိုက်ရင် ကွန်ပျူတာနဲ့ အသက်မွေးဝမ်းကျောင်းပြုမယ့်သူတွေပဲ သက်ဆိုင်လိမ့်မယ်လို့ ထင်စရာ ရှိပါတယ်။ တကယ်တော့ Computer Programming ကို ကလေးတိုင်းနဲ့ မိတ်ဆက်ပေးသင့်ပါတယ်။  Computer Programming ဆိုတာ ကလေးတွေရဲ့ စိတ်ကူးဉာဏ်ကို နှိုးဆွနိုင်ဖို့ အကောင်းဆုံး နည်းလမ်းပါ။ 

                အခုခေတ်မှာ သင့်ကလေးကို Computer Programming နဲ့ မိတ်ဆက်ပေးဖို့ နည်းလမ်းပေါင်းစုံ ရှိနေပါပြီ။ အမေရိကန် သမ္မတဟောင်း အိုဘားမားတို့ ကလေးတွေနဲ့ အတူဆော့နေတဲ့ code.org လို နေရာတွေဟာ သင်ကလေးကို ကွန်ပျူတာ Programming နဲ့ မိတ်ဆက်ပေးဖို့ အကောင်းဆုံး နေရာတွေပါပဲ။ အဲဒီအပြင် MIT က ဖန်တီးထားတဲ့ Scratch ဟာလဲ သင်ကလေးကို Computer Programming နဲ့ မိတ်ဆက်ပေးဖို့ နေရာကောင်းပါပဲ။ ကျွန်တော်ကတော့ ဒီဆောင်းပါးမှာ MIT က Scratch ကို နမူနာထားပြီး ပြောသွားမှာ ဖြစ်ပါတယ်။

Computer Programming ဆိုတာ

Computer Programming မှာ

  1. Computational Thinking (ကွန်ပျူတာနဲ့ သက်ဆိုင်တဲ့ တီထွင်ဖန်တီးခြင်းဆိုင်ရာ အတွေးအခေါ်)
  2. Computer Programming (ကွန်ပျူတာကို ခိုင်းစေညွှန်ကြားခြင်းဆိုင်ရာ အစီအစဉ်များ)

ဆိုပြီးနှစ်ပိုင်းရှိပါတယ်။ ကျွန်တော်တို့ အရင်ဆုံး Computational Thinking အပိုင်းကို အရင်လေ့လာကြည့်ရအောင် …

Computational Thinking

Computation Thinking ကို ကဏ္ဍအလိုက် ခွဲခြားကြည့်မယ်ဆိုရင် 

  1. Computational Concepts
  2. Computational Practices
  3. Computational Perspective

ဆိုပြီး သုံးပိုင်းရှိပါတယ်။

Computational Concepts

Computational Concepts ကို ခွဲခြမ်းစိတ်ဖြာကြည့်မယ်ဆိုရင် …

Concept: Sequences

                Sequence ဆိုတာကို နားလည်အောင် အလွယ်တကူ ပြောရမယ်ဆိုရင် အစီအစဉ်ပါပဲ။ ဘယ်လို အစီအစဉ်တွေလဲဆိုရင် ဘာပြီးရင်ဘာလုပ်မယ်၊ ဘယ်ဟာပြီးရင် ဘယ်ဟာဆက်သွားရမယ်၊ စသည်ဖြင့် ကွန်ပျူတာကို အဆင့်ဆင့် ခိုင်းစေသွားတဲ့ ပုံစံ ဖြစ်ပါတယ်။ MIT က ထုတ်ထားတဲ့ Scratch မှာ ကလေးတွေကို Concept:Sequences ကို အလွယ်တကူ လေ့ကျင့်ပေးလို့ရပါတယ်။


                အပေါ်မှာ ပြထားတဲ့ Program ကို လေ့လာကြည့်မယ်ဆိုရင် အလံလေးကို ကလစ်ခေါက်လိုက်တဲ့အချိန်မှာ ပထမအဆင့်အနေနဲ့ Repeat 4 လေးကြိမ် ထပ်လုပ်မယ်လို့ စပြောမယ်။ အဲဒီ လေးကြိမ်ထဲမှာမှ အရင်ဆုံး၊ ရှေ့ကို (၁၀) လှမ်းရွေ့မယ်။ ပြီးရင် (၁) စက္ကန့်စောင့်မယ်။ ဒုတိယအဆင့်အနေနဲ့ (၄) ကြိမ်ကြော့လို့ပြီးရင် ကြောင်လေးကို Hello လို့ ပြောခိုင်းပါမယ်။

                အဲဒီလို ရေးခြင်းအားဖြင့် Computational Thinking အပိုင်းရဲ့ Sequences အပိုင်းကို ကလေးတွေအတွက် သင်ပေးနိုင်ပါတယ်။ Program ကို Hard Code (Code တွေ အတုံးလိုက် အတစ်လိုက်) ရေးစရာမလိုပဲ အတုံးလေးတွေ ဆက်ခိုင်းတာဆိုတော့ ကလေးတွေအတွက်လဲ သင်ရလွယ်ကူစေပါတယ်။ အဲဒီလို သူတို့လိုချင်တာ ခိုင်းစေရင်း နောက်ကွယ်ကနေ Computational Thinking ကို ပေးသွားပါလိမ့်မယ်။

Concept:Loop 

                ကျွန်တော်တို့ Computer Programming တွေမှာ ရှေ့ကိုပြန်သွားခွင့် ရှိပါတယ်။ အပေါ်က Program လေးမှာတင် Repeat 4 ဆိုပြီး ပါပါတယ်။ အဲဒီလို ပြန်ပတ်လုပ်ဆောင်တာကို Loop လို့ ခေါ်ပါတယ်။


                ဒီ Program က အပေါ်က Program ရဲ့ အဆက်လို့ ဆိုနိုင်ပါတယ်။ ကြောင်လေးကလဲ သူ့အစီအစဉ်အတိုင်းလုပ်၊ ငမန်းကလဲ သူ့အစီအစဉ်အတိုင်းလုပ်၊ လုပ်ရင်းနဲ့ပဲနောက်ဆုံး ဆုံကြပြီး Hello လို့ ပြောကြပါတယ်။ Repeat 4 ဆိုတာ Loop ပါပဲ။ အဲဒီလို Loop ပေါင်းများစွာဖန်တီးရင်း အကြိမ်ကြိမ်အထပ်ထပ်ရေးရမယ့် အပိုင်းတွေကို လျော့ချပြီးသား ဖြစ်သွားစေပါတယ်။ ကလေးတွေကို Computational Thinking ရဲ့ အဓိကကျတဲ့ အပိုင်းဖြစ်တဲ့ Loop အပိုင်းကို အလွယ်တကူ သင်ပေးသွားပါလိမ့်မယ်။ 

Concept: Events 

                Event ဆိုတာ ကြောင်းကျိုးဆက်စပ်မှုကို သင်ပေးတာပါ။ တစ်ခုခုကြောင့် တစ်ခုခုဖြစ်သွားတယ်ဆိုတဲ့ သက်ရောက်မှု သဘောဆောင်ပါတယ်။ ခလုပ်ပေးနှိပ်လိုက်လို့ မီးလင်းသွားတယ်၊ ခလုပ်နှိပ်လိုက်တဲ့ Event ကြောင့် ဘောလုံးလေး ခုန်သွားတယ်၊ စသည်ဖြင့်ပေါ့။


                အပေါ်မှာရေးထားတဲ့ Program ကို လေ့လာကြည့်မယ်ဆိုရင် အလံလေးကို ကလစ်ခေါက်မှ ကြောင်လေးရော ငမန်းလေးပါ သူလုပ်ဆောင်ရမယ့် လုပ်ငန်းဆောင်တာတွေ လုပ်ကြရပါတယ်။ 

                အပေါ်က ကျွန်တော်တို့ ရေးနေတဲ့ Program လေးမှာ ဘောလုံးလေး တစ်လုံးထပ်တိုးထားပါတယ်။ ကြောင်လေးနဲ့ ငမန်းလေးတို့ ကြားမှာ ဘောလုံးတစ်လုံး ပြုတ်ကျလာအောင် လုပ်ထားတာပါ။ Event တွေက ဒီထက်အများကြီး ပိုတဲ့ အစီအစဉ်တွေ ဖန်တီးလို့ရပါတယ်။ ကြောင်လေးက ဆယ်လှမ်းလျှောက်ပြီးတဲ့ အချိန်မှ ဘောလုံးပြုတ်ကျတာလဲ ဖြစ်နိုင်ပါတယ်။ ကလေးတွေကို လွတ်လွတ်လပ်လပ် စိတ်ကူးဉာဏ်ကွန့်မြူးပြီး Computational Thinking အပိုင်းက Event တွေအကြောင်း သင်ပေးသွားပါလိမ့်မယ်။

Concept:Parallelism  

                Parallelism ဆိုတာ Sequence (သို့) Event တွေ တစ်ခုထက်ပိုပြီး တစ်ပြိုင်တည်း ဖြစ်နေတာတွေကို ပြောတာပါ။ ဥပမာ - ပန်ကာကလဲ လည်နေမယ်၊ အဲဒီအချိန်မှာ မီးကလဲလင်းနေမယ်၊ စသည်ဖြင့် တစ်ပြိုင်တည်း ဖြစ်နေတာတွေကို သိနားလည်အောင် လုပ်ပေးတာပါ။ 

                ကျွန်တော်တို့ အပေါ်မှာရေးထားတဲ့ Project မှာဆိုရင် ဇာတ်ကောင်တွေက သူ့အလုပ်နဲ့သူ အပြိုင်လုပ်နေကြပါတယ်။ ကြောင်ကလေးကလဲ သူ့အတွက် သတ်မှတ်ထားတဲ့ အစီအစဉ်အတိုင်း၊ ငါးမန်းကလဲ သူ့အစီအစဉ်အတိုင်း၊ ဘောလုံးကလဲ သူ့အစီအစဉ်အတိုင်း၊ အပြိုင်လုပ်ဆောင်ကြရပါတယ်။ အဲဒီလို တည်ဆောက်စေပြီး အပြိုင်ဖြစ်နေတဲ့ အရာတွေကို အလွယ်တကူ လေ့ကျင့်ပေးသွားပါလိမ့်မယ်။

Concept:Conditionals 

                ဒါကတော့ အခြေအနေတွေပါ။ ဘယ်လိုတိကျတဲ့အခြေအနေမှာ၊ ဘယ်လိုဆောင်ရွက်မယ်၊ စသည်ဖြင့် သတ်မှတ်နိုင်ပါတယ်။ Computer Programming မှာတော့ if ဆိုတာနဲ့ သုံးလေ့ရှိပါတယ်။


                အပေါ်က Program ကို လေ့လာကြည့်မယ်ဆိုရင် if ဆိုတဲ့ အခြေအနေကို ဖော်ပြတဲ့ပုံစံတွေ ပါလာပါတယ်။ Direction ဆိုတဲ့တန်ဖိုးက 0 ထက် ကြီးမယ်ဆိုရင် တစ်ခုလုပ်မယ်၊ အဲဒီလိုမှမဟုတ်ဘူးဆိုရင် တစ်ခုလုပ်မယ်၊ စသည်ဖြင့် အခြေအနေတွေ ပါလာပါတယ်။ နောက်တစ်ခုမှာလဲ အစွန်းတွေကိုထိရင် ခုန်မယ်ဆိုတဲ့ အခြေအနေတွေ ပါလာပါတယ်။ အဲဒီလို Computational Thinking အတွက် အရေးပါတဲ့ Conditionals ဆိုတာတွေကို သင်ပေးနိုင်ပါတယ်။

Concept: Operators 

                ဒါကတော့ Programming မှာ မရှိမဖြစ်လို့ ဆိုနိုင်မယ့် ပေါင်း၊ နှုတ်၊ မြှောက်၊ စား၊ စတဲ့အပိုင်းတွေ ဖြစ်ပါတယ်။ အဲဒီလို ပေါင်း၊ နှုတ်၊​မြှောက်၊ စား ဆိုတဲ့ နေရာမှာ Numeric လို့ ခေါ်တဲ့ ကဏ္ဍန်းတွေအပြင် String လို့ ခေါ်တဲ့ စာတွေပါ ပါဝင်ပါတယ်။

                ကျွန်တော်တို့ အပေါ်မှာ ရေးခဲ့တဲ့ Program မှာ Operator တွေ ပါဝင်ပြီးသားပါ။ Operators တွေကို ခွဲခြားကြည့်မယ်ဆိုရင် နှစ်မျိုးရှိပါတယ်။

  1. ပေါင်းနှုတ်မြှောက်စား လုပ်နိုင်တဲ့ Arithmetic Opeartors
  2. တစ်ခုနဲ့တစ်ခုနှိုင်းယှဉ်ပေးနိုင်တဲ့ Comparison Operators

                အဲဒီလို Operators တွေက ဘယ်လောက်အထိ အရေးပါသလဲဆိုတာ Programming သင်နေသူတိုင်းသိပါတယ်။ ဒါပေမယ့် Hard Coding ရေးပြီး သင်တာထက် အခုလို Scratch Program(https://scratch.mit.edu) လို code.org လို အသုံးချပြီး သင်ပေးတာ ကလေးတွေအတွက် ပိုပြီး သင်ရလွယ်ကူစေပါတယ်။ ကလေးတွေဟာ သူတို့လိုချင်တဲ့ ကမ္ဘာတစ်ခုကို ဖန်တီးပေးရင်း Programming Concept တွေကို သင်မှန်းမသိ သင်ပေးသွားတာပါ။ 

Concept:Data 

                Data ဆိုတာကတော့ တန်ဖိုးတွေကို သိမ်းဆည်းခြင်း၊ ပြန်ထုတ်သုံးခြင်း၊ ပြင်ဆင်ခြင်း စသည်ဖြင့် လုပ်ဆောင်ပေးနိုင်တဲ့ သဘောဖြစ်ပါတယ်။ Scratch မှာ Data အနေနဲ့ အမျိုးအစားနှစ်မျိုး သိမ်းဆည်းနိုင်ပြီး Variables (Single Number or String) နဲ့ Lists (Collection of Numbers or Strings) ပါ။

အပေါ်မှာပြထားတဲ့ Project ကို လေ့လာကြည့်မယ်ဆိုရင် Variables ဆိုတဲ့အပိုင်းကို တွေ့ရမှာဖြစ်ပြီး Data တွေဖြစ်တဲ့ Gravity ဆိုတာတွေကို သတ်မှတ်လို့ရမှာ ဖြစ်ပါတယ်။ အဲဒီအပြင် ကိုယ်ဖန်တီးမယ့် Program မှာ လိုအပ်မယ့် Resources တွေကလဲ Data အနေနဲ့ ပါဝင်ပါတယ်။

Computational Thinking Practices

                Computational Concepts အပိုင်းမှာ ဘာတွေသင်ယူလို့ ရနိုင်တယ်၊​ ဘာတွေသင်ပေးလို့ ရနိုင်တယ်၊ စသည်ဖြင့် ဖော်ပြခဲ့ပြီး ဖြစ်ပါတယ်။ ရှေ့ဆက်ပြီး အဲဒီ Computational Concepts တွေကို ဘယ်လိုသိလာအောင်၊ တတ်လာအောင်၊ ဘယ်လိုလေ့ကျင့်ပေးမလဲ ဆိုတဲ့အပိုင်းကို ရှေ့ဆက်မှာ ဖြစ်ပါတယ်။

                Scratch အနေနဲ့ Learning Environment ဖြစ်တာနဲ့အညီ သင်ကြားရေးနဲ့ပတ်သက်ပြီး ပြည့်စုံအောင် စီစဉ်ထားပြီး ဖြစ်တယ်လို့ ဆိုနိုင်ပါတယ်။ Offline Environment လို့ခေါ်တဲ့ အင်တာနက်မရှိတဲ့ နေရာမှာဖြစ်ဖြစ် Online မှာ ဖြစ်ဖြစ် အဆင်ပြေအောင် ပြည့်စုံအောင် စီစဉ်ထားတယ်လို့ ဆိုနိုင်ပါတယ်။ အဲဒီလို Learning Environment တစ်ခုမှာ အထူးသဖြင့် Computational Thinking ကို တွေး တတ်အောင် သင်ပေးတဲ့ နေရာမှာ ဘယ်လို လေ့ကျင့်မှုတွေ လိုမလဲဆိုတာ လေ့လာကြည့်မယ်ဆိုရင် 

  1. Being Incremental and Iterative (တစ်ဆင့်ပြီးတစ်ဆင့် တိုးတိုးလာအောင် လေ့ကျင့်ပေးဖို့ လိုသလို၊ အထပ်ထပ် လေ့ကျင့်ပေးဖို့လည်း လိုပါတယ်။ အဲဒီလို ဝန်းကျင်မျိုးလဲ ရှိဖို့လိုပါတယ်။)
  2. Testing and Debugging (ရေးထာတဲ့ Program တွေကို မှန်၊ မမှန် မိမိလိုချင်တဲ့ ပုံစံအတိုင်း ဖြစ်၊ မဖြစ် စစ်ဆေးဖို့ လိုပါတယ်။ မှားယွင်းနေတဲ့ အမှားတွေ ရှာဖွေဖော်ထုတ်နိုင်ဖို့ လိုပါတယ်။ ပြင်ဆင်နိုင်ဖို့ လိုပါတယ်)
  3. Reusing and Remixing (သူတစ်ပါးက ဘီးထွင်ပြီးသားကို ကိုယ်ကပြန်သုံးပြီး ကားအဖြစ် တီထွင်တတ်အောင်၊ အခြား သူများမျှဝေထားတာတွေကို ပေါင်းစပ်အသုံးချတတ်အောင် သင်ပေးဖို့ လိုပါတယ်)
  4. Abstracting and modularizing (သီးသန့် သက်ဆိုင်ရာကဏ္ဍအလိုက် ပေါင်းစပ်နိုင်စွမ်း၊ အပိုင်းပိုင်း ဖြစ်နေတဲ့ ပုံစံတွေကို သက်ဆိုင်ရာအလိုက် လုပ်ဆောင်ချက်အလိုအတိုင်း စုစည်းနိုင်စွမ်း၊ ပြန်လည်အသုံးချနိုင်အောင် ဖန်တီးနိုင်စွမ်း၊ စတာတွေ တတ်လာအောင်၊ မြင်လာအောင် သင်ပေးဖို့ လိုပါတယ်)

                Scratch မှာ အဲဒီလို Computational Thinking Practices အတွက် Learning Environment တစ်ခုအနေနဲ့ အပြည့်အစုံ ပါဝင်ပြီး ဖြစ်တယ်လို့ ဆိုနိုင်ပါတယ်။

Being Incremental and Iterative

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

                အဲဒီလို ရလဒ်ကိုအသေသတ်မှတ်ပြီး တည်ဆောက်တာထက် ကောင်းတဲ့နည်းလမ်းကတော့ Milestone တစ်ခုကိုချ၊ အဲဒီကို အရောက်သွား၊ နောက်တစ်ခုထပ်ချ အဲဒီကို အရောက်သွား၊ စသည်ဖြင့် တည်ဆောက်သွားတာ အကောင်းဆုံးပါပဲ။ အဲဒီလိုပုံစံကို Incremental Approach လို့ ခေါ်ပါတယ်။

                အဲဒီအပြင် ဒီထက်အရေးပါတာ တစ်ခုကတော့ ကိုယ်ချလိုက်တဲ့ Milestone က မှားနေရင်၊ လမ်းလွဲနေရင်၊ အစကနေပြန်စပြီး ပြန်ကျော့လုပ်ဆောင်ရတာတွေလဲ ရှိပါတယ်။ ကနဦးပိုင်းအတွေ့အကြုံကို သင်ယူခါစအနေအထားတွေမှာ အဲဒီလို ပြန်စ၊​ ပြန်လုပ်ဆိုတာ ထုံးစံပါပဲ။ အဲဒီလို ပြန်စရတာ၊ ပြန်လုပ်ရတာတွေကို Iterative Approach လို့ ခေါ်ပါတယ်။

                Incremental Approach မှာ ဖြစ်ဖြစ်၊ Iterative Approach မှာပဲဖြစ်ဖြစ်၊ အရေးအပါဆုံး လိုအပ်ချက်ကတော့ Motivation လို့ခေါ်တဲ့ စိတ်ဓာတ်တက်ကြွမှု၊​ စိတ်ပါဝင်စားမှု၊ ရှေ့ဆက်လုပ်ဆောင်လိုမှု၊ စတဲ့တွန်းအားတွေ လိုပါတယ်။ အဲဒီလို တွန်းအားတွေကို ဖော်ဆောင်ပေးဖို့လဲ လိုအပ်ပါတယ်။

                Scratch မှာ အဲဒီအတွက် ပြည့်စုံတဲ့ Learning Environment ရှိတယ်ဆိုတာကို ဒီအမေးဖြေလေးကို ဖတ်ကြည့်ရင် လေ့လာကြည့်ရင် သိနိုင်ပါလိမ့်မယ်။

မေး - သားက ဒီဂိမ်းကို ဘယ်လိုစလုပ်ဖြစ်တာလဲ?
ဖြေ - သားညီလေးက အဲဒီလို ဂိမ်းတွေဆော့တာ ဝါသနာပါတယ်လေ။ သူ့ကို ပေးဆော့ချင်လို့ပါ။ 
မေး - သား အနေနဲ့ ဒီဂိမ်းဖြစ်လာအောင် ဘယ်လိုကြိုးစားတည်ဆောက်ခဲ့ပါသလဲ?
ဖြေ - သားကတော့ အစက Level တစ်ခုတည်းအတွက် လုပ်တာပါ။ မှားလိုက် ပြန်ပြင်လိုက်၊ လိုချင်တာ မရလိုက် ပြန်ပြင်လိုက်၊ မကြိုက်လိုက် ပြန်ပြင်လိုက်နဲ့ တစ်ဆင့်ခြင်း လုပ်ဖြစ်ခဲ့ပါတယ်။
မေး - သားက အခု Level တစ်ခု ရပြီဆိုတော့ နောက်ထပ် Level ဘယ်နှစ်ခုလောက် ရေးဖို့ရှိလဲ? 
ဖြေ - ညီလေးက Level 1 ကို လွယ်လွယ်လေး နိုင်သွားတယ်ဗျ။ အဲဒါကို မကျေနပ်တာနဲ့ နောက်ထပ် ဒီထက်ခက်တဲ့ Level တစ်ခုကို ဆက်ရေးဖြစ်တယ်။ အဲဒါကိုလဲ သူကနိုင်ပြန်ရော၊ နောက်တစ်ခုထပ်ရေး ဖြစ်ပြန်ရော၊​ အခုတော့ Level 10 အထိရေးမယ် စိတ်ကူးတယ်။
မေး - အဲဒီလို တစ်ဆင့်ပြီး တစ်ဆင့် ဖန်တီးနေရတာ ပျော်လား?
ဖြေ - ပျော်တာပေါ့ဗျ။ အဲဒါကြောင့် တစ်ခုပြီး တစ်ခုလုပ်နေတာပေါ့။ နောက်ဆို သူငယ်ချင်းတွေကို ဆော့ခိုင်းရမယ်၊ သူတို့ မလုပ်နိုင်လေ၊​ Level တွေကို မနိုင်လေ၊ သားကတော့ ပျော်လေပဲ။
မေး - သားအနေနဲ့ အခုလို တစ်ဆင့်ပြီးတစ်ဆင့် လုပ်သွားမယ်ဆိုတော့ အချိန်ဘယ်လောက်ကြာမလဲ?
ဖြေ - တစ်ပတ်လဲကြာချင်ကြာမယ်ဗျာ၊​ နှစ်ပတ် ဒါမှမဟုတ် တစ်လလဲ ကြာနိုင်တယ်ဗျာ။ ခြောက်လ တစ်နှစ်ကြာလဲ ကြာပစေဗျာ။ သားကတော့ ဆက်ကစ်မှာပဲ။
မေး - သားအနေနဲ့ ကိုယ်ရေးထားတဲ့ Scratch Program ကို ဘယ်လိုပြန်စစ်လဲ?
ဖြေ - ပြန်စစ်တာများ လွယ်လွယ်လေး။ Run ကြည့်တာပေါ့။ လိုနေတာတွေထပ်ဖြည့်၊ မှားနေတာတွေပြန်ပြင်၊ လုပ်ချင်တာတွေရှိရင် ထပ်ထည့်ပေါ့။
မေး - ကိုယ်လုပ်နေတာတွေကို မကျေနပ်လို့ အစအဆုံး ပြန်လုပ်ရတာတွေကော ရှိလား?
ဖြေ - ရှိတာပေါ့ဗျ။ Level 1 မှာဆိုရင် အစအဆုံး ဖျက်ပစ်ပြီး ပြန်ပြန်လုပ်တာ ခဏခဏပဲ။

                ဒါကတော့ သူ့ညီလေး ဂိမ်းကစားဖို့ Scratch program ကို တည်ဆောက်နေတဲ့ ကလေးတစ်ယောက်ကို အင်တာဗျူးထားတာ ဖြစ်ပါတယ်။ သူကအခုတော့ သူ့သူငယ်ချင်းတွေကို ပညာစမ်းဖို့ ကြံနေပြီဖြစ်ပါတယ်။

Testing and Debugging

                Testing and Debugging လို့ ခေါ်တဲ့အပိုင်းကတော့ အတော်လေးကို အရေးပါတဲ့ အစိတ်အပိုင်း ဖြစ်တယ်ဆိုတာ လူတိုင်း သိပါလိမ့်မယ်။ Program ကို ရေးတဲ့နေရာမှာ ဘယ်တော့မှာ တစ်ခါတည်း မမှန်နိုင်ပါဘူး။ စစ်လိုက်၊ မှားတာတွေ့ရင် ပြင်လိုက်၊ စသည်ဖြင့် သွားရလေ့ရှိပါတယ်။ အစပိုင်းမှာ အဲဒီလို စစ်လိုက်၊ ပြင်လိုက် လုပ်ရတာ အတော်လေးကို စိတ်ပျက်ဖို့ကောင်းတတ်ပါတယ်။ အထူးသဖြင့် Program ကို ကိုယ်က ဘာကြောင့်ရေးနေရမှန်း မသိ၊ ဘာရလဒ်ထွက်လာရမှန်းလဲ မသိ၊ မျက်ကန်း လမ်းလျောက်နေသလို ရေးနေရမယ်ဆိုရင် Testing and Debugging က အတော်လေးကို စိတ်ပျက်စရာ ကောင်းတယ်လို့ ဆိုနိုင်ပါတယ်။

                အဲဒီလို Testing and Debugging ကို အကောင်းဆုံး လေ့ကျင့်ပေးနိင်တဲ့ တွန်းအားကတော့ စိတ်ဝင်စားမှုပါပဲ။ စိတ်ဝင်စားမှုမရှိရင် ဘယ်လိုမှမဖြစ်နိုင်ပါဘူး။ စိတ်ဝင်စားမှုရှိမှသာ Program ကို အစကနေ အဆုံးအထိ စိတ်နှစ်ပြီးရေးမယ်၊ စစ်မယ်၊ ပြင်မယ်၊ ဖန်တီးနိုင်မှာ ဖြစ်ပါတယ်။ စိတ်ဝင်စားအောင် ဘယ်လိုလုပ်ကြမလဲ။ “ဟေ့…၊ မင်း ဒီ Program လေးရေးလိုက်၊ မင်းရေးနိုင်ရင် သူဌေးကြီးဖြစ်ပြီ၊ ဘီလီယံနာကြီးဖြစ်ပြီ” လို့ သွားပြောနေလို့ မရပါဘူး။ အပြင်ကနေ ဘယ်လောက်တွန်းအားပေးပေး၊ ဘယ်လောက်ပြောပြော ရမှာမဟုတ်ပါဘူး။ ဘာကြောင့် မရနိုင်ရတာလဲဆိုရင် တွန်းအားတွေက အပြင်ကလာတာမဟုတ်ပဲ အတွင်းကလာတာကြောင့်ပါ။ ကိုယ်ကိုတိုင်က တွန်းအားတွေ ရှိမှသာ မဆုတ်မနစ်လုပ်တတ်တဲ့ တွန်းအားတွေ ရလာမှာပါ။

                Scratch ရဲ့ Testing and Debugging ကတော့ ကလေးတွေကို သူတို့ဖန်တီးချင်တဲ့ ပုံစံတစ်ခုကိုရအောင်၊ ရလာတဲ့အထိလည်း လုပ်နိုင်အောင် စီစဉ်ပေးပြီး ဖြစ်တယ်လို့ ဆိုနိုင်ပါတယ်။ နမူနာ တစ်ခု ပြရမယ်ဆိုရင် ...


                အပေါ်မှာ ပြထားတဲ့ပုံက Fireflies ဆိုတဲ့ သီချင်းကို MTV အနေနဲ့ ပုံဖော်ထားတာပါ။ အစအဆုံး ကြည့်ချင်တယ်ဆိုရင်တော့ https://scratch.mit.edu/projects/1821073/ မှာ သွားကြည့်နိုင်ပါတယ်။ 

                အဲဒီ သီချင်းကို Program ရေးသူအနေနဲ့ ခံစားပြီး တစ်ကွက်ခြင်းစီ ပုံဖော်ရေးသားရပါတယ်။ ပိုးစုန်းကျူးလေးတွေကို သီချင်းရဲ့တေးသွားအလိုက်နဲ့ မှိတ်တုတ်၊ မှိတ်တုတ် ဖြစ်အောင်စထားပါတယ်။ သီချင်းစာသားတွေကို နားထောင်ပြီး မိမိစိတ်ကူးထဲမှာ ခံစားမိတဲ့အတိုင်း တစ်ဆင့်ခြင်း ပုံဖော်ဖန်တီးထားပါတယ်။ အဲဒီ သီချင်းအပေါ် ခံစားချက်၊ အဲဒီသီချင်းကို ဖန်တီးလိုတဲ့၊ ပုံဖော်လိုတဲ့ ဆန္ဒ၊ ဖန်တီးသူရဲ့စိတ်ထဲမှာ ဖြစ်ပေါ်နေတဲ့ခံစားချက်၊ စတာတွေက အတွင်းတွန်းအားတွေအဖြစ်နဲ့ အစအဆုံးဖန်တီးဖြစ်အောင် တွန်းပို့သွားတယ်လို့ ဆိုနိုင်ပါတယ်။

                အဲဒီ MTV လေးကို ကြည့်တဲ့သူအနေနဲ့ ဘာမှမကြာတဲ့အချိန်ပဲ ပေးရပေမယ့် ဖန်တီးသူအနေနဲ့တော့ နေရာမကျတာတွေ တေးသွားနဲ့ မကိုက်တာတွေ၊ အရုပ်တွေ ရေးဆွဲရတာတွေ၊ အကြိမ်ကြိမ်စစ်ဆေး၊​ အကြိမ်ကြိမ်အမှားရှာ၊ အများကြီး လုပ်ခဲ့ရမယ်ဆိုတာ သေချာပါတယ်။ အဲဒီလို အတွင်းတွန်းအားတွေ ဖြစ်ပေါ်လာအောင် ဆွဲဆောင်နိုင်စွမ်း Scratch မှာ ရှိနေပါတယ်။ တစ်ခြား Programming Language တွေမှာ ရောမရှိဘူးလား။ ရှိပါတယ်။ ဒါပေမယ့် ကလေးတွေအတွက်ဆို ငယ်လွန်းနေပါသေးတယ်။ သူတို့ လေးတွေကို C++ ပရိုဂရမ်လိုမျိုး ရေးခိုင်းပြီး အတွင်းတွန်းအားရလာအောင် လုပ်မယ်ဆိုရင် အောင်မြင်နိုင်ဖို့အခွင့်အလမ်း အင်မတန်နည်းပါလိမ့်မယ်။ 

Reusing and Remixing (ပြန်သုံးခြင်း၊​ ပေါင်းစပ်တည်ဆောက်ခြင်း)

                ကျွန်တော် အဆိုအမိန့်တစ်ခုကို ဖတ်ဖူးပါတယ်။ “သူက ဘီးကိုထွင်မယ်ဆိုရင်၊ ငါက အဲဒီဘီးကို တပ်မောင်းမယ့် ကားကို ထွင်မယ်" ဆိုတာပါ။ အဲဒီနေရာမှာ “သူကလဲဘီးကိုထွင်၊ ငါကလဲ ဘီးကိုထွင်၊ ပြီးတော့ ငါ့ဘီးကကောင်းတယ်၊ သူ့ဘီးကကောင်းတယ်လို့ အငြင်းပွားမနေပါနဲ့” လို့ ဆိုထားပါတယ်။ အဲဒီလို တစ်ယောက်က ဘီးကိုထွင်ရင် တစ်ယောက်က အဲဒီဘီးကိုတပ်မောင်းမယ့် ကားကိုထွင်မယ် ဆိုတဲ့အမြင်ဟာ Program ရေးသားရာမှာ အလွန်အရေးပါတဲ့ အမြင်ဖြစ်ပါတယ်။ ကွန်ပျူတာ နည်းပညာဟာ အဆင့်ဆင် တိုးတက်ပြောင်းလဲခဲ့ပါပြီ။ အခုလို တိုးတက်ပြောင်းလဲလာရတဲ့ အကြောင်းအရင်းကတော့ အဲဒီလို အမြင်ကြောင့်လို့ ဆိုနိုင်ပါတယ်။

                အဲဒီလို ဘီးကိုတီထွင်တဲ့သူနဲ့ ကားကိုတီထွင်တဲ့သူ နှစ်ယောက်ကို လေ့လာကြည့်ရအောင်။ ဘီးကိုထွင်သူကလဲ သူထွင်ထားတာကို မျှဝေလိုစိတ်ရှိဖို့ လိုသလို၊ ဘီးကိုတပ်သုံးပြီး ကားကိုတီထွင်တဲ့ သူမှာလဲ ဘီးတီထွင်သူကို အသိအမှတ်ပြုဖို့ လိုပါတယ်။ ငွေရေးကြေးရေးအရ အကျိုးအမြတ် ပေးဖို့လိုရင်လဲ ပေးရပါမယ်။ ဒီ ဥပမာတွေက ထင်သာမြင်သာရှိတဲ့ ကိုင်တွယ်လို့ရတဲ့ Hardware တွေပါ။ Software လို့ခေါ်တဲ့ ကူးလိုက်တာနဲ့ အလွယ်တကူ ရသွားနိုင်တဲ့ နေရာမှာတော့ အဲဒီလို ခွင့်ပြုမှုအပိုင်းနဲ့ အသိအမှတ်ပြုမှု၊ ငွေရေးကြေးရေးဆိုင်ရာ ယုံကြည်ချက်ဆိုတာတွေက အကဲဆတ်တဲ့ အနေအထားကို ရောက်လာပါတယ်။ 

                အလေ့အကျင့်ကောင်းတွေ၊ ဥပဒေတွေ မရှိဘူးဆိုရင် အလွယ်တကူ ကျိုးပေါက်သွားပါလိမ့်မယ်။ ယူသုံးသူကလဲ လွယ်လွယ်သုံးမယ်၊ အသိအမှတ်မပြုဘူး။ ဒီတော့ ပေးရမယ့်သူကလဲ အလကားပေးတာတောင် အသိအမှတ်အပြုမခံရတဲ့အတွက် မပေးတော့ပါဘူး။ အဲဒီလိုမပေးတဲ့အတွက် သုံးချင်တယ်ဆိုတဲ့သူတွေဟာ ကိုယ်ပိုင်ဘီးတွေကို ပြန်ထွင်ရသလိုမျိုး Software၊ Source Code ဆိုတာတွေကို ပြန်ရေးရပါတော့တယ်။ အဲဒီမှာ အချိန်တွေကုန်ပြီး တိုးတက်မှုကို ရှေးရှုဖို့ မလွယ်တော့ပါဘူး။

                ဒီလို အသိအမှတ်ပြုတတ်တဲ့၊ တစ်ခြား သူများတီထွင်ဖန်တီးပြီးသား အရာတွေကို ရယူအသုံးချပြီး ဒီထက်ပိုကောင်းတဲ့ အရာတွေ ဖန်တီးတတ်တဲ့ အလေ့အထတွေကို ငယ်စဉ်ကတည်းက လေ့ကျင့်ပေးဖို့လိုတယ်လို့ ပညာရှင်တွေရဲ့ အဆိုအရ သိရပါတယ်။ ငယ်စဉ်ကတည်းကမသင်ပဲ၊ ကြီးမှ ဥပဒေနဲ့ အင်အားနဲ့ သုံးပြီး လုပ်စေမယ်ဆိုရင် မအောင်မြင်နိုင်ဘူးလို့ သုံးသပ်ကြပါတယ်။ 

                မြန်မာနိုင်ငံမှာ ငယ်စဉ်ကတည်းက အဲဒီလိုစိတ်ဓာတ်မျိုးတွေကို မသင်ခဲ့ကြရတဲ့အတွက် အားနည်းချက်တွေ အများကြီးရှိနေပြီး ဉာဏပစ္စည်းဆိုင်ရာတွေနဲ့ ပတ်သက်ရင် အလွယ်တကူခိုးယူတဲ့ အလေ့အထတွေ၊ အသိအမှတ် မပြုတဲ့ အလေ့အထတွေ ထွန်းကားနေတယ်လို့ ဆိုနိုင်ပါတယ်။ အများညီ ဤကို ကျွဲလို့ ဖတ်ကြတဲ့ အနေအထားကို ရောက်နေပြီး ခိုးနေမှန်းတောင် မသိတော့တဲ့ Ignorance အဆင့်ကို ရောက်နေပြီလို့ ဆိုနိုင်ပါတယ်။

                Scratch က အဲဒီလို စိတ်ဓာတ်တွေအတွက် ကလေးတွေကို စည်းကမ်းချက်တွေ အနည်းအကျဉ်း ထုတ်ပြီး Scratcher တွေအတွက် ဝန်းကျင်တစ်ခု ဖန်တီးထားပါတယ်။ Scratch Website မှာ ရှိတဲ့ Online Community ဟာ အဲဒီလိုအလေ့အကျင့်တွေ ပြုစုပျိုးထောင်ဖို့အတွက် အကောင်းဆုံးနေရာလို့ ဆိုနိုင်ပါတယ်။ သူများဖန်တီးထားတာတွေ၊ သူများအိုင်ဒီယာတွေကို လေ့လာမယ်၊ သူများ ဖန်တီးထားတာတွေထဲကမှ မိမိကြိုက်နှစ်သက်တဲ့ ဇာတ်ကောင်တွေ၊ ပုံစံတွေကို ရယူမယ်၊ မိမိစိတ်ကြိုက် ပြန်လည်ဖန်တီးမယ်၊ စသည်ဖြင့် ပြုလုပ်နိုင်အောင် စီစဉ်ပေးထားပါတယ်။ သူတစ်ပါး ဖန်တီးထားတာတွေကို ကြည့်ခြင်းအားဖြင့် Program ရေးသားသူတွေမှာ မရှိမဖြစ် အရေးပါတဲ့ Code Reading Ability (သူများ ရေးထားတဲ့ Code တွေကို ဖတ်ရှုနားလည်နိုင်စွမ်း) ကို မြှင့်တင်နိုင်သလို ဘယ်သူက ပိုင်တယ်၊ ဘယ်သူက တာဝန်ရှိတယ်၊ စသည်ဖြင့်လည်း မြင်လာနိုင်ပါတယ်။

နိဂုံး

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

References
TechX Programming
About Author
Assinged Tags
Computer Basics For Kids Kids And Computers Computer Program Scratch code.org Computer Programming Kids and Programming
Categorized Under
Programming

Join Us On

Facebook
YouTube
Twitter
GooglePlus
TechX RSS Feed