Thursday, February 28, 2013

Programming ကို ခက္တယ္.. မရဘူးခ်ည္းၾကားၾကားေနရပါတယ္ ..။ ကၽြန္ေတာ္ကိုယ္တိုလင္ည္း ဒီျပႆနာနဲ႔ ၾကံဳေတြ ႔ခဲ့ရဖူးပါတယ္.။ ဒါေပမယ့္ Hacking:The art of exploration စာအုပ္ထဲက What is Programming ဆိုတဲ့ ေဆာင္းပါးကို ဖတ္ျပီးကတည္းက Programming ကို ေမၾကာက္ဘဲ ၾကိဳက္သြားခဲ့ပါတယ္..။ဒီလို အခက္အခဲရွိသူေတြအတြက္ ကၽြန္ေတာ္ အဲ့ဒီ့ ေဆာင္းပါးကို ဆီေလ်ာ္ေအာင္ ဘာသာျပန္ေပးလိုက္ပါတယ္..။ What is Programming.? တကယ္ေတာ့ Programming ဆိုေတာ့ Philosophy လိုပဲဗ်..။ ေသဘာတရားေတြေပၚ ေအျခခံထားတဲ့ Concept တစ္ခုပဲ..။ လမ္းညႊန္ခ်က္ေတြ ပါတဲ့ Statement Series တစ္ခုထက္ဘာမွမပိုဘူး..စဥ္းစားၾကည့္ ဘယ္ Programm ပဲျဖစ္ျဖစ္ Statement ေတြ Instruction ေတြ စီထားတဲ့ Series ၾကီးပဲ…သူ ႔ကို သတ္မွတ္ထားတဲ့ သီးသန္႔ Language တစ္ခုနဲ႔ ေရးထားတာပဲ ပိုတယ္..။ တကယ္ေတာ့ Programming ေသဘာတရားေတြကို ကၽြန္ေတာ္တို႔ ေန႔တိုင္းလုပ္ေနတဲ့ အလုပ္ေတြမွာ လည္းပါတယ္ဗ်…ဟမ္..ေၾကာသင္ြားတာလား အဟုတ္ဗ်…မယံုမရွိနဲ႔ ထမင္းခ်က္တဲ့ေနရာမွာလည္း ပါတယ္ ကားေမာင္းတဲ့ေနရာမွာလည္းပါတယ္..မနက္လင္းလို႔ သြားတိုက္တာက အစ အိ္ရပာ၀တင္ဲ့အထိ Programming ေသဘာတရားေတြနဲ႔ မကင္းဘူးဗ် ဥပမာဗ်ာ.. ကၽြန္ေတာ့္က်ဴရွင္ အျပန္ အိမ္ကို ကားေမာင္းလာတယ္ အင္းးးးးးး ကၽြန္ေတာ့္အိမ္က ၂၆ လမ္း လမ္း ကိုးဆယ္မွာ ဆိုပါစို႔ဗ်ာ ၂၆ လမ္းတည့္တည့္ၾကီး ကၽြန္ေတာ္ေမာင္းလာတယ္..တိန္ ၈၆ နဲ႔ ၈၇ ၾကား လမ္းမွာ ေမာ္ေတာ္ပီကယ္ ဖမ္းေနတယ္ဗ် ဒါနဲ႔ ၈၅ လမ္းမွာ ညာေကြ ႔ လို္ရကတယ္.. ၂၅ လမ္းမွာ ဘယ္ကိုျပန္႔ေကြ ႔တယ္ဗ်ာ ေရွ ႔က လမ္းခြဆံုဗ် ၈၈ လမ္းေလ ကၽြန္ေတာ္ဘယ္ေကြ႔ ၂၆ လမ္းေပၚျပန္တက္ျပီးတည့္တည့္သြားရလင္ည္းအိမ္ေရာက္တယ္ ဒါမွ မဟုတ္ ၈၆ က်မွ ညာေကြ ႔ ၂၆ ေပၚျပန္တက္လည္း ရတယ္ဗ် . ဒီဥပမာဟာ Programm တစ္ပုဒ္ပဲ..သူလည္း Statement Series ပဲေလ..ဟုတ္ဖူးလား..ဒါေပမယ့္ ကြန္ပ်ဳတာကို ဒီလိုၾကီး သြားေျပာလို႔ မရဘူး ကြန္ပ်ဳတာက ဒီတိုင္းၾကီး နားလည္တာဟုတ္ဖူး သူနားလည္တာက 0 နဲ႔ 1 ေတြပဲ ပါတဲ့ Machine Language ပဲေလ..ခက္တာက Machine Language နဲ႔ Programm တစ္ပုဒ္ေရးရင္ ဘယ္ အဆင္ေျပမလဲဗ် 0 ေတြ 1 ေတြနဲ႔ ရူးသြားမွာေပါ့..ေနာ့ ဒီေတာ့ Machine Language နဲ႔ လူနားလည္တဲ့ Language ၾကားမွာ ခ်ိတ္ဆက္ေပးဖို႔ ဘာသာျပန္တစ္ခု လိုလာျပီ… အိႏၵိယက ကုလားၾကီးနဲ႔ တရုတ္ ၾကီး တို႔ စကား၀ုိင္းမွာ စကားျပန္လိုသလိုေပါ့ Programmer နဲ႔ Computer ၾကားမွာ ဘာသာျပန္လိုလာပါျပီ ဥပမာ assembler ဆိုပါစို႔ assembler ဆိုတာ Assembly Language ေကန Machine Language ကို ဘာသာျပန္ေပးတဲ့ Translator တစ္ခုပါပဲ..Assembly Language ဟာ Machine Language ေလာက္ မရႈပ္ေထြးေတာ့ပါဘူး သူဟာ Instruction ေတြ Variable ေတြကို စာလံုးေတြနဲ႔ အသံုးျပဳႏုိပင္ါျပီ ဒါေပသိ သူဟာ ျပီးျပည့္စံုတဲ့ Language လို႔ေျပာလို႔မရပါဘူး ဘာေၾကာင့္လဲဆိုေတာ့ architecture-specific ျဖစ္ေနတံုးပါပဲ ေသဘာေကတာ.Intel x86 processors မွာ နားလည္တဲ့ Machine Language နဲ႔ Sparc processors, x86 မွာ နားလည္တဲ့ Machine Language နဲ႔ ကမတူပါဘူး..ဒီေတာ့ Intel x86 မွာ Assemble နဲ႔ ေရးတဲ့ Programm တစ္ပုဒ္ကို Sparc Processors,x86 မွာ Run ႏိုဖင္ုိ႔ ေနာက္တစ္မ်ိဳးျပန္ေရးရပါသတဲ့..( စိတ္ေလပ…ေနာ္ ) ဒီေတာ့ဗ်ာ Programm ေကာင္းေကာင္း တစ္ပုဒ္ေရးဖို႔ ေအရး Processer ေအၾကာင္း ေအသးစိတ္ကိုသိမွ ျဖစ္မွာ မုိ႔လားဗ် ဒီျပႆနာေတြကို ေျဖရွင္းဖို႔ Compiler ေတြ ေပၚလာပါတယ္…ဒန္႕ မင္းသား လာျပီကြ Compiler ဆိုတာ လည္း Translator ပါပဲ သူက တျခား တမ်ိဳးေပါ့ Super Translator ဆိုပါစို႔ ဟဲ…။ Compiler ဆိုတာ High-level Programming Language ေတြကို Machine Language ကို ေျပာင္းေပးတဲ့ Translator ပါပဲ. သူဟာ Assembler ထက္ ပိုမို ေခ်ာေမြ ႔ျပီး မတူညီတဲ့ Processor မ်ိဳးစံုေပၚမွာ Translate လုပ္ႏိုပင္ါတယ္..။ ေသဘာေကတာ့ဗ်ာ High-level Programming နဲ႔ ေရးထားတဲ့ Programme တစ္ပုဒ္ဟာ တခါေရးရံုနဲ႔ စက္တိုင္းမွာ Run ႏိုတင္ယ္ ေပါ့ဗ်ာ low level ေတြကို ထပ္ခါထပ္ခါေမရးေရတာ့ သက္သာတာေပါ့ ျပီးေတာ့ High Level Language နဲ႔ ေရးတဲ့ Programm တစ္ပုဒ္ဟာပိုျပီး ဖ္ရတလြယ္တယ္ဗ် Low-level တို႔ Machine Langugae တို႔ထက္..ပိုျပီး ဖ္ရတလြယ္ ပါတယ္..။ ဒါေပမယ့္ သူ ႔ဟာ အလြန္တင္းၾကပ္တိက်တဲ့ စည္းမ်ဥ္းေတြေပၚမွာ ေအျခခံျပီး ေရးရတဲ့အတြက္ သတိအရမ္းထားရပါတယ္..။ Programming မွာ အရမ္းေအရးၾကီး တဲ့ အရာတစ္မ်ိဳးေကတာ့ Pseudo-Code လို႔ေခၚတဲ့ ပံုစံတစ္မ်ိဳးပါ Pseudo-Code ဆိုတာ Programming Language ထဲမွာပါတဲ့ ရိုးရိုး English စာလံုးေလးေတြနဲ႔ ဖြဲ ႔စည္းထားတဲ့ Form တစ္မ်ိဳးပဲျဖစ္ပါတယ္..။ Pseudo-Code ကို ဘယ္ Compiler ကမွ နားမလည္ပါဘူး ဘယ္ကြန္ပ်ဳတာ ကမွလည္း နားမလည္ပါဘူး ဒါေပမယ့္ Programmer တိုင္းအတြက္ မရွိမျဖစ္ပါ… ဘာလို႔လဲဆိုေတာ့ Programming Language နဲ႔ English လို လူ ႔ဘာသာ စကားကို ဆက္သြယ္ေပးထားတဲ့ တံတားတစ္စင္းျဖစ္လို႔ပါပဲ…ဥပမာဗ်ာ ခုနက ကားေမာင္းတဲ့ေအၾကာင္းအရာကို Programme တစ္ပုဒ္လိုေရးၾကည့္ေရအာင္ Begin going east on 26 Until ( I arrived my home ) { Drive down 26 } If ( street is blocked by polices ) { Turn (right,85); Turn(left,25); Turn(left,87); } else { Turn(right,86); Turn(left,25); Turn(left,87) } Turn (right,27) For (3 iterations) { Drive straight for 3 roads } Stop at my Home အထက္က Instruction ေတြကို ေသခ်ာၾကည့္လိုက္ပါ တစ္ေၾကာင္းခ်င္းေရးတယ္ တိက်ေသခ်ာတဲ့ Direction ေတြပါတယ္ Loggic က်က် Control Structure ေတြပါတယ္ Control Structure ေတြသာမပါရင္ ဟိုး ေရွ ႔ကလို စာပုိဒ္ၾကီးပဲ ေပါ့ ဘာမွမထူးပါဘူး ကဲ ဒီလိုဆို နည္းနည္းေတာ့ Programming ဆိုတာကို ေပါက္ေလာက္ျပီ မခက္ဘူးေနာ္ ဒီေလာက္နားလ္ရညကင္ို Programming ကိုေမၾကာက္ေတာ့ဘူး ကဲ ဆ္ရကဦးမယ္…။ ခုနက Driving to Home Program ေလးမွာ Turn(right,26) တို႔ Turn(left,) တို႔ပါတာ ေတြ ႔မွာပါ Turn ဆိုတဲ့စကားလံုး တစ္လံုးထဲကို ခြဲၾကည့္ရင္… ၁.ေကြ ႔မယ့္လမ္းမွာ အရွိန္ေလးေလွ်ာ့မယ္ ၂.ကားေခါင္းေလး အသာေလး၀ိုက္မယ္ ၃. Steering (စတီယာတိုင္ေပါ့ဗ်ာ အေမလး လွ်ာယားလိုက္တာ) ကို လွည့္မယ္ ၄. ေကြ ႔ျပီးတာနဲ႔ အရွိန္ျပန္တမင္ယ္ ဘယ္လမ္းမွာမဆိုေနာ္ ေကြ ႔ဖို႔ အတြက္ ဒီ နည္းစနစ္တစ္မ်ိဳးထဲသံုးတာ..ဒီလို အခါမ်ိဳးမွာ Function လို႔ သံုးႏႈန္းႏုိပင္ါျပီ Turn Function ေပါ့ဗ်ာ ဒီ Turn Function နဲ႔ ဘယ္ ကားမဆို ဘယ္လမ္းမဆို ေကြ ႔လို႔ရပါတယ္ မယံုရင္ ေကြ ႔ၾကည့္ အဲ တြန္းျပီး ေကြ ႔တာေတာ့ ပါဘူးေနာ္ ဟီး Function ဆိုတာ argument ေတြ စုစည္းထားတာပဲျဖစ္ပါတယ္ ကဲ ခုနက Turn Function ကို Program ပံုစံ Pseudo-code ေတြထဲမွာ ထည့္ၾကည့္ေရအာင္ Function Turn(the_direction, the_street) { locate the_street; slow down; if(the_direction == right) { turn on the right blinker; turn the steering wheel to the right; } else { turn on the left blinker; turn the steering wheel to the left; } speed back up } ကဲ မလြယ္ဘူးလား ဘာလဲဟဲ ေလာကဓံမဟုတ္ဘူး ဘာလဲဟဲ့ Programming လို႔ေတာင္ ေအာ္လို႔ ရျပီ ဟီး ဟီး Function ေတြကို အသံုးျပဳရျခင္းက ဒါပါပဲ Turn ေနရာမွာ ဒီလို အရွည္ၾကီး ေရးစရာမလိုပဲ Turn လို႔ပဲေရးပဲ ေခၚသံုးခြင့္ရွိတာေပါ့ဗ်ာ Function ေတြနဲ႔ ပတ္သတ္ျပီး ေအရးၾကီးတဲ့ေအၾကာင္းအရာေကတာ့ Function တစ္ခုခ်င္းဆီမွာ သီးသန္႔ ေအၾကာင္းအရာေတြရွိပါတယ္. ေသဘာေကတာ့ဗ်ာ သီးသန္႔ Local Variable ေတြ အတြက္ သီးသန္႔ Function တစ္ခုစီရွိတယ္ေပါ့ဗ်ာ သီးသန္႔ environment လို႔လည္းေျပာလို႔ရတယ္ဗ် Program တစ္ပု္ရဒဲ ႔အသက္ဟာ Function လို႔ ေျပာလို႔ရပါတယ္ ဘယ္ Program မွ Function မပါတဲ့ Program မရွိပါဘူး Main Function က ခြဲထြက္တဲ့ Function ေတြ Main Function ေအာက္က Function ေတြ…Function တစ္ခုက ခြဲထြက္တဲ့ Function ေတြနဲ႔ ဖြဲ ႔စည္းထားတာပါ ကဲ ဒါဆို Programming ေသဘာ တရားကိ ုနည္းနည္းေတာ့ေပါက္သြားေလာက္ပါျပီ Programming ေဆာင္းပါးဆိုေတာ့ ဖတ္တဲ့လူပ်င္းမွာလည္းဆိုးလို႔ ဗရုတ္သုေတ္ခလး ေတြလည္း ထည့္ေရးေပးထားပါတယ္ Ghost Area မွ ၾကိဳက္ႏွစ္သက္မိေသာ ေဆာင္းပါးတစ္ပုဒ္အားျပန္လည္ ေ၀မ်ွခ်င္းျဖစ္ပါတယ္။ -------------------Move Forward! Admin-Hein Thu :)


Posted via BlogPost

No comments: