December 3, 2011

ပရိုဂရမ် ဆိုသည်မှာ

ပြီးခဲ့သော ဂျာဗားကို အမြန်ဆုံးလေ့လာခြင်း Post ဖြင့် ဖော်ပြခဲ့သည့်အတိုင်း Java Programmer တစ်ယောက်ဖြစ်ရန် အောက်ပါအချက်၄ချက် လိုအပ်ပါသည်။

  1. Programming Fundamentals များကို ပိုင်နိုင်သိရှိခြင်း
  2. Object Oriented Concepts ကို ကောင်းစွာနားလည်ခြင်း
  3. Essential Java API များကို ပိုင်နိုင်စွာအသုံးပြုနိုင်ခြင်း
  4. Framework တစ်ခုထက်မကကို အသုံးပြု၍ ရေးသားဘူးခြင်း
အစမှာတော့ Programming Fundamentals အကြောင်းကို စရေးမလား စဉ်းစားခဲ့သော်လည်း၊ အခြေခံ ပရိုဂရမ်မင်း အတွက်ကတော့ ဘယ်စာအုပ် ဖတ်ဖတ်၊ ဘယ်သင်တန်းတက်တက် အနည်းဆုံးသင်ကြား လေ့လာ နိုင်သည့်အတွက် OOP နှင့် ပတ်သက်သည့် အကြောင်းအရာကို စတင်ရေးသား ခဲ့ခြင်းဖြစ်၏။ သို့ရာတွင် ကိုယ့်ဘလောဂ်ကို ကိုယ်ပြန်ဖတ်ရင်း၊ အကယ်၍ အခုမစတင် လေ့လာလိုသူဆိုပါက ပရိုဂရမ်တစ်ခုကို ဖြစ်မြောက်အောင် ရေးနိုင်ပမလားဆိုပြီး စိုးရိမ်လာပါသည်။ အဲ့ဒီအတွက် အခြေခံများကို ပြန်လည် ရေးသားပါဦးမည်။

ပရိုဂရမ်ဆိုသည်မှာ

ပရိုဂရမ်ဆိုသည်မှာ အစီအစဉ်များကို ဘာသာရပ်တစ်မျိုးမျိုးဖြင့် ရေးသားထားသော ဖော်ပြချက်အစုအဝေးများ ပင်ဖြစ်၏။ ရှင်းလိုက်ပါတယ် ဆိုမှ ပိုရှုပ်သွားသလိုပင်။ လွယ်လွယ်ပြောရလျှင် ဟင်းချက်နည်း၊ လမ်းညွှန်များ မှအစ DNA တွင် ပါဝင်သော အချက်အလက်များသည် ပရိုဂရမ်များဖြစ်ကြသည်။

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

ထိုနေ့ နေ့ခင်းပိုင်းတွင် ကန်ဂျီထံမှ အောက်ပါအတိုင်း ဆိုင်သို့လမ်းညွှန်စာ မေးလ်ရောက်လာပါသည်။

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

SL ကွင်းပြင်အဆုံးတွင် ကားလမ်းကျယ်ကို တွေ့ရမည် ဖြစ်ပြီး၊ ထိုကားလမ်းအရောက်တွင် ညာဘက်ကို ကွေ့၍ တည့်တည့်ဆက်လျှောက်ပါ။ တတိယမြောက် လမ်းဆုံသည် အမှတ်၂ရက်ကွက်လမ်းဆုံဖြစ်ပြီး၊  လမ်းတစ်ဘက်တွင် Family Mart စတိုးဆိုင်ကို တွေ့ရမည်ဖြစ်၏။ ထိုစတိုးဆိုင်၏ ဒုတိယအထပ်တွင် ဘွတ်ကင်လုပ်ထားသော ဆိုင်ရှိပြီး၊ စတိုးဆိုင်၏ရှေ့တွင် ၇နာရီ မှစ၍ ကျွှန်တော် စုဇူကီးက ရပ်စောင့်နေပါမည်။

 ညနေ ၇နာရီ ၁၀မိနစ်တွင် စတင်မည်ဖြစ်ပြီး အကြောင်းအမျိုးမျိုး ကြောင့် နောက်ကျမည် ဆိုပါက စူဇူကီးထံသို့ အောက်ပါ ဖုန်းနံပါတ်မှ ဆက်သွယ်နိုင်ပါသည်။

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

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

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


ကွန်ပျူတာနှင့် ပရိုဂရမ်

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

သည်လိုပဲ ကွန်ပျူတာကို လမ်းညွှန်ရန်အတွက် ကွန်ပျူတာကနားလည်သော ဘာသာစကားဖြင့် ရေးသားရန် လိုအပ်ပါသည်။ ကွန်ပျူတာက မည်သည့်စကားကို နားလည်သနည်း။ ကွန်ပျူတာသည် စက်တစ်လုံး ဖြစ်သောကြောင့်  စက်စကား (Machine Language) ကို သာနားလည်သည်။ ထို့အပြင် စက်၏ တည်ဆောက်ပုံ (Processor Architecture) အပေါ်တွင်မှုတည်၍လည်း စက်စကားခြင်း မတူညီနိုင်ပေ။ Intel x86 Processor နှင့် SPARC ၏ စက်စကားခြင်း တူမည်မဟုတ်။ များသောအားဖြင့် Binary Code များဖြင့် Machine Language များကို ရေးသားလေ့ရှိကြ၏။ ကျွှန်တော်တို့ ထို Machine Language များဖြင့် ပရိုဂရမ် ရေးရမည်ဆိုလျှင် ခေါင်းတွေစားလွန်းလို့ အလုပ်ဖြစ်မည်မဟုတ်။

ဤနေရာတွင် ထွက်ပေါ်လာသည်က Interpret ပရိုဂရမ်များပင်ဖြစ်၏။ ရှေးဦးစွာ ထွက်ပေါ်လာသည်မှာ Assembler ဖြစ်ပြီး၊ ထင်ရှားသော Machine Language Interpreter တစ်မျိုးဖြစ်၏။ Assembler ဘာသာရပ်မှ၊ Machine Language အဖြစ် ဘာသာပြန်ပြီး၊ ကွန်ပျူတာကို လမ်းညွှန်ပေးနိုင်ပါသဖြင့်၊ Machine Language ဖြင့် တိုက်ရိုက် ပရိုဂရမ်ရေးသည်နှင့် စာလျှင် လွန်စွာအစဉ်ပြေခဲ့၏။ သို့ရာတွင် Assembler ဘာသာရပ်များသည် Machine Language များကို တိုက်ရိုက်ပြန်ဆိုထားသော ဘာသာရပ်မျိုးဖြစ်ပါသောကြောင့်၊ စက်တစ်မျိုးပြောင်းသွားပါက ကောင်းမွန်စွာ အလုပ်လုပ်နိုင်မည်မဟုတ်ပါ။ စက်အပေါ်မှုတည်၍ ပရိုဂရမ်များကို ပြင်ဆင်ရေးသားရန် လိုအပ်ခဲ့၏။

ဒီနေရာမှာတော့ ငါပဲဟေ့ ဆိုပြီးနာမည်ထွက်လာသူ သူစွမ်းကောင်းကတော့ Compiler ပဲ ဖြစ်၏။ Compiler သည်လည်း ဘာသာပြန် ပရိုဂရမ် တစ်ခုပင် ဖြစ်သော်လည်း၊ ထူးခြားသည်မှာ High Level Programming Language များမှ စက်စကားကို ပြန်ဆိုပေးနိုင်ခြင်း ဖြစ်သည်။ အဆင့်မြင့် ပရိုဂရမ်မင်း ဘာသာရပ်များသည် Assembler ဘာသာရပ်များထက် စာလျှင် လူသားဘာသာရပ် ပိုဆံပြီး၊ ပိုမိုနားလည် လွယ်ပါသည်။ ထို့အပြင် ကွန်ပိုင်းလာများသည် စက်အမျိုးမျိုးက နားလည်အောင် Machine Language အမျိုးမျိုးကို Compile လုပ်နိုင်အောင် စီမံထားလေ့ရှိကြ၏။ ထို့ကြောင့် အဆင့်မြင့် ဘာသာရပ်ဖြင့် ပရိုဂရမ်တစ်ခုကို ရေးထားပြီး၊ စက်အမျိုးမျိုးအတွက် ကွန်ပိုင်းလုပ်ရုံသာပင်ဖြစ်၏။ အဆင့်မြင့် ပရိုဂရမ်မင်း ဘာသာရပ်များ အနေဖြင့် နာမည်ကြီးသည်မှာ C, C++ နှင့် Fortran တို့ပင် ဖြစ်ကြ၏။


Java ကကော ဆိုပြီး မေးစရာရှိပါလိမ့်မည်။ Java သည်လည်း High Level Programming Language တစ်မျိုးပင် ဖြစ်၏။ ထူးခြားသည်မှာ Java ကွန်ပိုင်းလာပင်ဖြစ်သည်။ စက်တစ်ခုပြောင်းသွားတိုင်း ကွန်ပိုင်းလုပ်လိုက်၊ ပြင်ရေးလိုက် လုပ်ရသည်ကို မကြေနပ်သည့် Java သည်၊ တစ်ခါရေးသား ထားသော ပရိုဂရမ်ကို ဘယ်နေရာမှာမဆို သုံးလို့ရအောင် ကြံဆလာပါတော့သည်။

တကယ်မရှိသော Java Virtual Machine (JVM) ပဲဖြစ်၏။ ဘယ်လို စက်မျိုးမှာမဆို JVM ကို တင်ထားပါက၊ Java ပရိုဂရမ်များကို အလုပ်လုပ်စေနိုင်မည် ဖြစ်သည်။ Java ကွန်ပိုင်းလာများသည်၊ JVM ကနား လည်သော Bytecode များအဖြစ် ဘာသာပြန်ပေး နိုင်၏။ တဖန် စက်အသီးသီးတွင် ရှိသော JVM များက Bytecode များကို စက်များနားလည်သော Machine Language များအဖြစ် ပြန်လည် လမ်းညွှန် ပေးနိုင်ခြင်းပင် ဖြစ်၏။



ဤနည်းအားဖြင့် Java ပရိုဂရမ်များအား Bytecode များအဖြစ် ဘာသာပြန်ခြင်း အားဖြင့်၊ မည်သည့်စက်ကို မဆို တူညီစွာ အလုပ်လုပ်စေနိုင်ခြင်း ပင်ဖြစ်၏။

ဟိုးနေဦးလေ။ Java ကြောင့် နေရာတကာမှာ အလုပ်လုပ်စေနိုင်တာမဟုတ်ပဲ၊ Bytecodeကြောင့် နေရာတကာမှာ အလုပ်လုပ်နိုင်တာပဲဟု တွေးမိသူများကရှိကြ၏။ ဟုတ်၏။ ဘာနဲ့ပဲရေးထားရေးထား Bytecode အဖြစ် ဘာသာပြန်နိုင်ပါက JVM အပေါ်တွင် အလုပ်လုပ်စေနိုင်မည် ဖြစ်သည်။ ထိုသို့စဉ်းစားမိကြသူများက၊ Jython, Groovy, JRuby အစရှိသော Script Language များကို ဖြစ်ပေါ်စေခဲ့ကြခြင်းဖြစ်၏။ အထက်ပါ Script Language များသည်၊ ရေးသားထားသော ပရိုဂရမ်များကို Java Bytecode များအဖြစ် ဘာသာပြန်ခြင်းအားဖြင့် Script Program များကို JVM အပေါ်တွင် အလုပ်လုပ်စေနိုင်ပါသည်။


Basic Programming ဖြင့် ဆက်လက်ရေးသားသွားမည့် အကြောင်းအရာများ

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

ကျွှန်တော်ကိုယ်တိုင်လည်း ကြုံခဲ့ဘူးပါသည်။ အခြေခံ ပရိုဂရမ်မင်းကို လေ့လာရာတွင်၊ Variables တွေ Type တွေ၊ Operators တွေ၊ function တွေ Control တွေ Input Output တွေ သင်သာသင်သွားပါသည်။ ပြီတော့လည်း မရေးတတ်သေးပါ။ ဘာတွေရှိသည်ကို အဓိကထားပြီး၊ ဘယ်လိုရေး ဘယ်လိုစဉ်းစားရမည် ဆိုတာကို အဓိကမထားခဲ့သောကြောင့် ဖြစ်မည်။
  • Variables
  • Operators
  • Flow Controls Statements
  • Class and Methods
ဤ အခြေခံပရိုဂရမ်မင်းတွင် ပရိုဂရမ်ကို ဘယ်လိုရေးမယ်ဆိုတာကို စဉ်းစားရင်း အထက်ပါ ခေါင်းစဉ်များအတိုင်း ဆက်လက်ဖော်ပြသွားပါဦးမည်။


လေးစားစွာဖြင့်
မင်းလွင်

7 comments:

  1. ကိုမင်းလွင် Myanmar Java learner တွေအတွက်မိခင်ဘာသာစကားနဲ့ အလွယ်တကူ လေ့လာလို့ရအောင် ရေးပေးထားတဲ့ ပိုစ့်တွေကိုအားရပါတယ်။ ဒါပေမယ့် တချို့စကားလုံးတွေဆိုရင် မိခင်ဘာသာစကားရော မူရင်း English word ပါထည့်ပေးစချင်ပါတယ်။ တစ်ခါတစ်လေ မိခင်ဘာသာစကားနဲ့ ဘယ်စကားလုံးကိုရည်ညွန်း မတွဲမိလို့ပါ။ eg. History of Java ပိုစ့်က နှစ်မြှုပ်စစ္စတမ် အပိုင်းဆိုင်ရာ ဆိုရင် Embedded System ဆိုတာရုတ်တရက် ဖမ်းမရလို့ပါ။ ကျေးဇူးတင်ပါတယ်။

    ReplyDelete
  2. ကျေးဇူးပါပဲဗျာ။ အခုလိုအကြံပေးတာ။ ကျွှန်တော်လည်း အရင်ကရေးထားတဲ့ စာတွေကို ပြန်ဖက်ပြီး ဝါကျတွေကအစ စကားလုံးတွေပါ အစဉ်မပြေဘူးလို့ ထင်နေခဲ့တဲ့အတွက် ပြန်ပြင်ရေးရန် စဉ်းစားနေပါတယ်။ အထူးသဖြင့် မြန်မာမှုပြုတဲ့ စကားလုံးတွေကို ပြန်ပြီး အစဉ်ပြေအောင် ပြန်ရေးမယ်လို့ စဉ်းစားထားပါတယ်။ နောက် သတိထားမိတာ လေးတွေတွေ့ရင်လည်း ပြောပါဦး။

    ကျေးဇူးတင်လျှက်
    မင်းလွင်

    ReplyDelete
  3. I love Myanmar Java learner.

    ReplyDelete
  4. Thanks a lot!

    ReplyDelete
  5. ကုိမင္းလြင္ေရ PDF နဲ ့မရႏုိင္ဘူးလားခင္ဗ်ာ?

    ReplyDelete
  6. Thank you very much Ko Min Lwin!!!

    ReplyDelete