Tuesday, December 25, 2012

Programming Environment ( MHU မွ ေဖာ္ၿပပါသည္)


Editor

သူကေတာ့ program ေရးတဲ့အခါမွာ program code ေတြကို ရုိက္ဖုိ.အတြက္သံုးတဲ့ Software တစ္ခုပါပဲ။ Editor ေကာင္းတစ္ခုဟာ syntax highlighting ေတြ error ၿဖစ္ႏုိင္တဲ့ေနရာေတြ
ၿပီးေတာ့ code completion အစရိွတာေတြကို လုပ္ေပးႏုိင္ပါတယ္။ Editor ေကာင္း မေကာင္းအေပၚမူတည္ၿပီး program ေရးရတာဟာ error သက္သက္သာသာနဲ.ၿမန္ၿမန္ဆန္ဆန္ၿပီးေစႏုိင္ပါတယ္
Microsoft Language ေတြၿဖစ္တဲ့ C# VB.NET အစရိွတဲ့ programming language ေတြအတြက္ကေတာ့ built in Microsoft Visual Studio ကပါလာၿပီးသားၿဖစ္ပါတယ္။ တစ္ၿခား Language ေတြမွာလဲ
သူတုိ.နဲ.ဆုိင္ရာ editor ေတြရိွပါတယ္။ ေပါ့ေပါ့ပါးပါးေရးမယ္ဆုိရင္ေတာ့ notepad++ ကိုသံုးလုိ.ရပါတယ္ ။ Java အတြက္ဆုိရင္ေတာ့ JCreator, Netbean, Eclipse အစရိွတဲ့ IDE ေတြမွာ Editor ေကာင္းေတြပါလာပါတယ္။ဒါေပမဲ့ Python လို indentation ေပၚမူတည္ၿပီး meaning ကြဲႏုိင္တဲ့ programming language ေတြအတြက္က်ေတာ့ သူနဲ.သင့္ေတာ္တဲ့ Python IDLE ကိုသံုးတာပိုသင့္ေတာ္ပါတယ္။


Compiler


သူကေတာ့ programmer ေရးလုိက္တဲ့ source code ကို machine နားလည္တဲ့ object code, byte code, exe အစရိွတာေတြကုိေၿပာင္းေပးတဲ့ေကာင္ပါ။ သူဟာ programmer ေရးလိုက္တဲ့ source code
ကုိယူၿပီးေတာ့ object code အစရိွတာေတြထုတ္ယံုတင္မကပဲနဲ. program ကုိပုိၿမန္ေအာင္ optimization ေတြကိုလဲလုပ္ေပးေလ့ရိွပါတယ္။

Libraries



Program ေတြဟာ ၾကီးလာတာနဲ.အမွ် သူတုိ.ရဲ. code ေတြဟာ မ်ားလာပါတယ္။ Code ေတြကို functionality အလိုက္တူရာတူရာစုၿပီးေတာ့ unit တစ္ခုအေနနဲ.သိမ္းတတ္ၾကပါတယ္။
အဲ့ဒီေကာင္ေတြကို libraries လို.ေခၚပါတယ္။ Java ,C# မွာဆုိရင္ေတာ့ package လုိ.သံုးပါတယ္။ Ruby, Python မွာေတာ့ module လို.သံုးပါတယ္ ။ C,C++, PHP မွာေတာ့ Library လို.ေခၚၾကပါတယ္။
ဥပမာ networking နဲ.ဆုိတဲ့ code ေတြကို သက္သက္၊ Graphical User Interface နဲ.ဆုိင္တာေတြကို သက္သက္ module, package သို.မဟုတ္ Library တစ္ခုစီမွာသိမ္းၾကပါတယ္။

Linker



Program တစ္ခုဟာ source file တစ္ခုထဲပါ၀င္တာမဟုတ္ပဲနဲ. module ေတြ package ေတြ Library ေတြကုိပါ ယူသံုးထားမယ္၊ ဒါမွမဟုတ္ multiple source file သုိ.မဟုတ္ object file ေတြအၿဖစ္တည္ရိွေနမယ္ဆုိရင္ အဲ့ဒီ program အလုပ္လုပ္ႏုိင္ဖုိ.အတြက္ ပါ၀င္တဲ့ module၊ library, package ေတြတစ္ခုခ်င္းစီကုိ ခ်ိတ္ဆက္ေပးရမွာပါ။ ဥပမာ ကြ်န္ေတာ္က Hello.java မွာ ေနာက္ package တစ္ခု
က class တစ္ခု ဥပမာ( Stack.java) ကိုေခၚသံုးထားပါတယ္ဆုိပါဆုိ. ဒါဆုိရင္ ကြ်န္ေတာ့္ program အလုပ္လုပ္ႏုိင္ဖုိ.အတြက္ Hello.java ဖုိင္တစ္ခုတည္းနဲ.မလုံေလာက္ပဲနဲ. Stack.java ကုိပါ Link လုပ္ၿပီးအသံုးၿပဳရမွာၿဖစ္ပါတယ္။ အဲဒီ လို external reference ေတြကို resolve လုပ္တာကို linking လို.ေခၚပါတယ္။ Linking ကုိ လုပ္ေပးတဲ့ program ကုိက်ေတာ့ linker ေပါ့ဗ်ာ။ Linking မွာ ႏွစ္မ်ိဳး၇ိွ႔ပါတယ္
Static Linking နဲ. Dynamic Linking ေပ့ါ။ Static Linking ဆုိတာ program ကိုမ run ခင္မွာ object code ေတြကို link လုပ္တာပါ။ C, C++ လို language မ်ိဳးမွာသံုးပါတယ္။ မေကာင္းတဲ့အခ်က္ကေတာ့ သူဟာ memory ေပၚေခၚတင္ရတဲ့ code size ကုိၾကီးသြားေစပါတယ္။ ေနာက္တစ္ခုကေတာ့ modern programming language ေတြၿဖစ္တဲ့ Java,C# တုိ.မွာသံုးတာမ်ိဳးပါ သူကေတာ့ libraries ေတြကို
program run ေနတဲ့အခ်ိန္ (run time)ေရာက္ေတာ့မွ link လုပ္ပါတယ္။ ဒါကို Dynamic Linking လို.ေခၚပါတယ္။ Dynamic Linking ရဲ.အားသာခ်က္ကေတာ့ သူဟာ object code ေတြအားလံုးကိုစံုၿပံဳၿပီး
memory ေပၚမွာတင္ထားစရာမလုိတာပါပဲ။

Loader


သူကေတာ့ Object code,exe code အစရိွတာေတြကို hard disk ေပၚကေနဖတ္ၿပိးေတာ့ operation system ရဲ. memory အေပၚမွာစနစ္တက်ေနရာခ်ထားေပးတဲ့ program ပါပဲ။ဥပမာ ခု run မဲ့ program
အတြက္ code segment က address ဘယ္ေလာက္မွာေနရာယူမယ္ data segment ကဘယ္ေလာက္ ေနရာယူမယ္ အစရိွတဲ့တာ၀န္ေတြကို loader ကတာ၀န္ယူေပးရပါတယ္။


Debugger



Program တစ္ခုဟာေရးၿပီးရံုနဲ.မၿပီးေသးပါဘူး ၊စင္းလံုးေခ်ာ မမွန္ႏုိင္ေသးပါဘူး သူ.မွာ error ေတြ bug ေတြပါလာႏုိင္ပါတယ္။ ၿမန္မာလိုဆုိရင္ေတာ့ error ေရာ bug ေရာကုိ အမွားလုိ.ၿပန္ရမွာပါ။တကယ္ေတာ့အဲ့ဒီႏွစ္ခုဟာ
မတူပါဘူး ၊ error ဆုိတာကို ထင္သာၿမင္သာ၇ိွတဲ့အမွားမ်ိဳးလို.ေၿပာရမွာ ၿဖစ္ပါတယ္ ဥပမာ C,C++,Java,C# မွာ statement တစ္ေၾကာင္းဆံုးရင္ semicolon ထဲ့ရပါတယ္ မပါရင္ syntax error တက္ပါလိမ့္မယ္
bug ဆုိတာကေတာ့ အလြယ္တကူမၿမင္ႏုိင္ပဲနဲ. ခုိေအာင္းေနတဲ့ error မ်ိဳးပါ ဥပမာ logic error မ်ိဳးပါ ။ သူတုိ.ကိုရွာဖို.အတြက္ကေတာ့ program statement ေတြဟာ ဘယ္ကေနဘယ္လို run သြားတယ္ variable ေတြရဲ.တန္ဖုိးဘယ္လိုေၿပာင္းသြားတယ္ဆုိတာ ၾကည့္ဖုိ.လိုအပ္ပါတယ္ ။ အဲလိုေနရာမ်ိဳးမွာ ကူညီႏုိင္တာ debugger ပါ။ Debugger က အဓိ က အလုပ္သံုးခုလုပ္ေပးပါတယ္
Tracing = program ဟာ ဘယ္ line ကေန ဘယ္ line ကုိ run သြားတယ္ဆုိတာကို ၾကည့္လုိ.ရေအာင္ကူညီေပးပါတယ္။
Break point = program ရဲ. ဘယ္ line အထိ ပဲ run မယ္ၿပီးရင္ ခန ရပ္မယ္ဆုိၿပီးေတာ့ လုပ္လို.ရပါတယ္။
Modifying and Examining Data= program တစ္ေလ်ာက္လံုးမွာ သံုးလာတဲ့ data ေတြ variable ေတြရဲ.တန္ဖိုးေတြကို ၾကည့္ႏုိင္ၿပင္ႏုိင္ေအာင္ေပးထားပါတယ္။

Profiler



Program တစ္ခုဟာ အလုပ္လုပ္ေနရံုနဲ.မၿပီးပါဘူး သင့္ေတာ္တဲ့ computing time ကုိပဲသံုးရပါမယ္။ အရမ္းၾကီးေႏွးေကြးေနတဲ့ program ကိုဘယ္သူကမွလုိခ်င္မွာမဟုတ္ပါဘူး။
program တစ္ခုရဲ. ဘယ္အစိတ္အပိုင္းမွာ အခ်ိန္ဘယ္ေလာက္ကုန္တယ္ memory ဘယ္ေလာက္သံုးလဲအစရိွတာေတြကို profiler ကုိသံုးၿပိးေတာ့ ၾကည့္လို.ရပါတယ္။ ၿပီးေတာ့ program ကုိသင့္ေတာ္ေအာင္
ၿပန္ေရးေပါ့။

Interpreter



သူကေတာ့ Interpret လုပ္တဲ့ language ေတြ JavaScript, PHP, Python,Ruby အစရိွတာေတြမွာသံုးပါတယ္။ Object code ကိုမထုတ္ေတာ့ပဲနဲ. source code ကေန run time မွာ ၾကားခံ ပံုစံ
တစ္ခု တည္ေဆာက္ၿပီး run ပါတယ္ ဒါေၾကာင့္ interpreted language ေတြဟာ compiled language ေတြထက္စာရင္ေႏွးၾကပါတယ္။ ဘာေကာင္းလဲဆုိေတာ့ flexible ၿဖစ္တာေတြရိွပါတယ္
ဥပမာ running time မွာ dynamic code ကို execute လုပ္လုိ.ရတာမ်ိဳး variable ေတြကို run time မွာ type ေၿပာင္းသံုးတာမ်ိဳး အစရိွတာေတြၿဖစပါတယ္။

0 comments:

Post a Comment