Wednesday, January 7, 2015

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)
ဆက္ပါဦးမယ္

No comments:

Post a Comment