Friday, October 14, 2011

Python လေ့လာကြမယ် အပိုင်း (၃)

by | posted: September 20, 2011
အခြား ဆက်စပ်ပို့စ်များ
  1. Python လေ့လာကြမယ် အပိုင်း (၁)​ – ရေးသားသူ (ဥက္ကာ)
  2. Python လေ့လာကြမယ် အပိုင်း(၂) – ရေးသားသူ (ဆုနှင်းဝေ)
Python က Scripting Language လား
python ဟာ ဘက်စုံသုံး programming language တစ်ခုဖြစ်ပြီးတော့ တခါတရံမှာ Scripting အနေနဲ့လည်း အသုံးပြုပါတယ်။ python ကိုအများအားဖြင့် Object-oriented scripting langauge လို့ခေါ်ကြလေ့ရှိပြီး OOP ကို အထောက်အပံပေးတဲ့ scripting langauge တစ်ခုအနေနဲ့ သတ်မှတ်ကြပါတယ်။ တခါတရံမှာ script ဆိုတဲ့ စကားလုံးကို program ဆိုတဲ့စကားလုံးအစား အသုံးများလေ့ ရှိကြပါတယ်။ script နဲ့ program ဆိုတဲ့ စကားလုံးတွေကို အပြန်အလှန် လဲလှယ် သုံးနေကြပြီး script ဆိုတာက တော့ ဖိုင်တစ်ဖိုင်ထဲ အခြေပြုတာဖြစ်ပြီး program ကတော့ ဖိုင်တစ်ဖိုင်နဲ့တစ်ဖိုင် ချိတ်ဆက်ထားတဲ့ application မျိုးဖြစ်နိုင်ပါတယ်။ script ဟာ program ဖြစ်ပေမယ့် program တိုင်းဟာ script မဟုတ်ပါဘူး။

scripting language နဲ့ပတ်သတ်ပြီး လူအမျိုးမျိုးအတွက် အဓိပ္ပါယ် သတ်မှတ်ချက် အမျိုးမျိုးရှိပါတယ်။ လူတစ်ချို့ကတော့ python ကို scripting language ဆိုတဲ့ အဆင့်မှာတင် အခေါ်ခံနေရတာ မကျေနပ်ကြပါဘူး။ python ကိုအသုံးပြုသူတွေ အပေါ်မူတည်ပြီး သုံးမျိုးသုံးစား ခေါ်ဆိုလေ့ ရှိကြပါတယ်။
Shell tools
လူတစ်ချို့ကတော့ python ကို scripting language လို့ပြောလေ့ရှိကြပါတယ်။ သူတို့အမြင်မှာတော့ pythong ဟာ Operating System နဲ့ အဓိက သက်ဆိုင်တဲ့ script တွေမှာအသုံးပြုလေ့ရှိကြတယ်လို့ မြင်ကြပါတယ်။ အဲဒီ program တွေဟာ command line ပေါ်ကနေတစ်ဆင့် ဖြတ်သန်းသွားလာပြီးမှ အလုပ်လုပ်တာဖြစ်ပြီး အဓိကအားဖြင့် text processing နဲ့ အခြား program တစ်ခုခုကို launch လှမ်းလုပ်တာမျိုးတွေပါ၀င်ပါတယ်။ သူတို့အမြင်မှာတော့ python ဟာဒီအလုပ်တွေလုပ်နိုင်တယ်။ ဒါကြောင့် Shell tools လို့မြင်ကြခြင်းဖြစ်ပါတယ်။ ဒါပေမယ့် အဖြစ်မှန်ကတော့ python က ဒါတွေကိုလုပ်နိုင်တာမှန်ပေမယ့် ဒီထက်ပိုပြီးတော့ အများကြီးလုပ်နိုင်ပါသေးတယ်။
Control language
နောက်လူတစ်စုကတော့ scripting ဆိုတာဟာ control လုပ်တာရယ် ဒါမှမဟုတ် ညွန်ပြနဲ့နေရာမှာ အသုံးပြုတယ်လို့ ယူဆပါတယ်။ Python program တွေဟာ တခါတရံမှာ Application
အကြီးကြီးတွေရဲ့ကြားထဲမှာ အလုပ်လုပ်ပါသေးတယ်။ ဥပမာအားဖြင့် Hardware device တွေကို စစ်ဆေးတဲ့ နေရာမှာဆိုရင် Python program အနေနဲ component တွေခေါ်ပြီး low level access အနေနဲ့ အဲဒီ device ကို အသုံးပြုနိုင်ပါတယ်။ Python program တွေသုံးခြင်းဖြင့် end user တွေအသုံးပြုတဲ့ product တွေ ပြောင်းလဲမှုကို အထောက်အပံပေးနိုင်ပြီး အများကြီးပြင်စရာ ဒါမှမဟုတ် compile ပြန်လုပ်စရာ မလိုတော့ပါ။ Python ရဲ့ရိုးရှင်းမှုဟာ ပြောင်းလွယ်ပြင်လွယ်တဲ့ controlling tool တစ်ခုလို ဖြစ်နေပါတယ်။ တကယ်တမ်းတော့ ဒါဟာ Python ရဲ့ ဂုဏ်သတ္တိတွေ အများကြီးထဲက တစ်ခုဖြစ်ပေမယ့် Python programmer အတော်များများ ကတော့ standalone script တွေလောက်ပဲ ရေးနေပြီးတော့ တခြားအတွဲ အဆက်တွေကိုတော့ သိတာ တော်တော်ရှားပါတယ်။ တကယ်တမ်းတော့ Control language တစ်ခုအနေနဲ့သာမကပါဘူး။
Ease of use (သုံးရလွယ်တယ်)
Scripting language လို့ခေါ်ရတဲ့ ဖြစ်နိုင်တဲ့ နောက်တတစ်ချက် script language ဆိုတာ မြန်မြန် coding ရေးဖို့ လွယ်တဲ့ ရိုးရှင်းတယ်ဆိုတာပါပဲ။ Python နဲ့သာ အလုပ်လုပ်မယ်ဆိုရင် C++ လိုမျိုး Compile Language တွေနဲ့အလုပ်လုပ်တာထက် ပိုမြန်ပါတယ်။ နောက်ပြီး Rapid Development Cycle လိုမျိုးမှာ မြန်မြန်ဆန်ဆန် လုပ်တက်တဲ့ အလေ့အကျင့်ကို မွေးယူပြီးသား ဖြစ်သွားပါတယ်။ ဒါပေမယ့် ဒီလောက်နဲ့တင် မရပ်တန့်နေပါနဲ့။ Python is not just for simple tasks.
Python ဟာရိုးရှင်းတဲ့ ပုံစံရှိပေမယ့် အဲဒါက သုံးရတာလွယ်ကူပြီး ပြောင်းလွယ်ပြင်လွယ်လဲ ရှိပါတယ်။ Python ဟာရိုးရှင်းပါတယ်။ ဒါပေမယ့် မိမိတို့ လိုအပ်ချက်အပေါ် မူတည်ပြီးတော့ ရှုပ်ထွေးတဲ့ ပုံစံအထိလည်း ရေးသားနိုင်ပါတယ်။ အများအားဖြင့်တော့ အမြန်လိုအပ်တဲ့ ကိစ္စမျိုးတွေမှာရော ကာလရှည် နှစ်ရှည် လိုအပ်တဲ့ development တွေမှာရော အသုံးပြုပါတယ်။
ဒီတော့ Python ဟာ scripting language ဟုတ်သလား မဟုတ်ဘူးလားဆိုတာကတော့ ဘယ်သူသွားမေးလည်း ဆိုတဲ့အပေါ်မှာ မူတည်ပါတယ်။ ယေဘူယျအားဖြင့်တော့ scripting ဆိုတဲ့စကားလုံးဟာ မြန်မြန်ဆန်ဆန်နဲ့ ပြောင်းလွယ်ပြင်လွယ်ဖြစ်တဲ့ Development မျိုးကိုဆိုလိုပြီးတော့ အဲဒီလိုမျိုးပုံစံကိုလည်း python ကအထောက်အပံပေးပါတယ်။
OK, but What’s the Downside? (ကဲ ဘာတွေဆိုးလဲ)
Python ကို ၁၅နှစ်လောက်သုံး ၊ ၁၀နှစ်လောက်သင်လာတဲ့ လူတစ်ယောက်အပြောအရတော့ python ရဲ့တခုတည်းသော အားနည်းချကက်တော့ execution speed က အမြဲတမ်းတော့ Complied Language တွေဖြစ်တဲ့ C နဲ့ C++ တို့လောက် မမြန်ပါဘူး။ အတိုချုံ့ ပြောရမယ်ဆိုရင်တော့ python code တွေဟာ byte code အနေနဲ့ interpret လုပ်ပါတယ်။ byte code တွေဟာ cross platform ဖြစ်ပြီးတော့ portability လည်းဖြစ်ပါတယ်။ ဒါပေမယ့် Python က binary machine code ကိုမထုတ်ပေးပါဘူး (ဥပမာ Intel chip ကို တန်းပြီးညွန်ကြားတဲ့ instruction မျိုးထုတ်မပေးပါဘူး)။ ဒါကြောင့် တစ်ချို့ program တွေက Compile လုပ်ထားတဲ့ C လို language နဲ့နှိုင်းစာရင်တော့ နှေးနေပါလိမ့်မယ်။ ကိုယ် ဘယ်လို program မျိုးရေးသည်ဖြစ်စေ execution speed မတူတာကိုတော့ သတိထားရပါလိမ့်မယ်။ python ကို အကြိမ်များစွာ ပိုမိုကောင်းမွန်အောင် optimize လုပ်ကြပါတယ်။ ဒါကြောင့်လည်း တစ်ချို့ application domain တွေအနေနဲ့ မြန်မြန်ဆန်ဆန် အလုပ်လုပ်နိုင်တာပါ။ ဒါအပြင် တကယ်တမ်း Python script နဲ့အလုပ်လုပ်တဲ့အခါမျိုး file တစ်ခုကို process လုပ်တာဖြစ်ဖြစ် ၊ GUI ကိုတည်ဆောက်တာပဲဖြစ်ဖြစ် ၊ အဲဒီလိုအခြေအနေမျိုးမှာတော့ python ဟာသူမလုပ်တော့ပဲ သူတာဝန်တွေကို Intrepreter ထဲမှာ Compile လုပ်ထားတဲ့ C code တွေ ပေးပို့လိုက်ပါတယ်။
နောက်အခြေခံကြတဲ့အချက်ကတော့ ယနေခေတ်ကွန်ပျုတာတွေရဲ့ speed နဲ့ နှိုင်းစာရင် python ရဲ့ development speed ကပိုမြန်နေတာဟာ execution speed နှေးနေတာတာထက် ပိုအရေးပါပါတယ်။ ဒါပေမယ့် ယနေ CPU speed တွေမှာတောင် တစ်ချို့ application domain တွေရဲ့ တစ်ချို့ execution speed တွေမှာတော့ နှေးနေတာကို တွေ့နေရတုံးပါတယ်။ အထူးသဖြင့် ပေါင်းနှုတ်မြောက်စား ကိန်းဂဏန်းတွေနဲ့ ပတ်သတ်တဲ့ Numeric programming တွေ Animation တွေမှာဆိုရင် သူတို့ရဲ့ component တွေပ ေါင်းစပ်တဲ့အခါ C speed နဲ့မြန်နေမှ ကောင်းတဲ့ အနေအထားမျိုးလည်း ရှိပါတယ်။ ဒါပေမယ့်လည်း သင့်အဲဒီလိုမျိုး application domain မှာ အလုပ်လုပ်နေတယ်ဆိုရင် python ကို အသုံးပြုနိုင်ပါသေးတယ်။ အဲဒီအပိုင်းတွေမှာတော့ Compile လုပ်ထားတဲ့ extension တွေသုံးပြီးတော့ Link ပြန်လုပ်ခြင်းဖြင့် python script တွေကို အသုံးပြုနိုင်ပါတယ်။
ဒီထဲမှာတော့ extension တွေနဲ့ပတ်သတ်ပြီးတော့ အသေးစိတ် မပြောတော့ပါဘူး။ ဒါကတော့ အပေါ်မှာ ရေးထားခဲ့တဲ့ python as a control language အနေနဲ့ အသုံးပြုခြင်းပါပဲ။ အဲဒီလို language နှစ်ခုသုံးထားတာကို ဥပမာတစ်ခု ပြရမယ်ဆိုရင် Numpy ဆိုတဲ့ numeric programming extension ဟာ python ရဲ့ extensionတစ်ခုဖြစ်ပြီးတော့ compiled လုပ်ထားသော optimize လုပ်ထားသော numeric programming extension တစ်ခုပါပဲ။ NumPy ဟာ Python ထဲမှာတော့ numeric programming tools တစ်ခုအနေနဲ့အသုံးပြုနိုင်ပြီး ထိရောက်မှုရှိပြီး အသုံးလည်းဝင်လှပါတယ်။ သင့်အနေနဲ့ ဒီ extension ကြီးတစ်ခုလုံး ထွက်လာအောင် ကိုယ်တိုင်ထိုင်ပြီး ခေါင်းကုတ်ပြီး ထိုင်ရေးနေစရာ မလိုတော့ပါဘူး။ Python က အဓိကအလုပ်လုပ်ပြီးတော့ ကျန်တဲ့ extension တွေကတော့ သင်လုပ်နိုင်တာထက် ပိုမိုပြည့်စုံကောင်းမွန်တဲ့ optimization mechanism ကိုပေးစွမ်းနိုင်မှာပါ။
နိုင်လင်းအောင် (Myanmar Links)
ဆက်ပါဦးမယ်