Compiler and Interpreter

February 28, 2017

Computer က 0 နဲ့ 1 ပဲ သိလို့ ကိုယ်ခိုင်းချင်တာတွေကို Binary နဲ့ပဲ ရေးပြီး Computer ကို ခိုင်းရမှာလား။ Binary နဲ့ဆို “Hello World” တောင် မနည်းရေးခဲ့ရမှာ မဟုတ်လား။ ပြီးတော့ လူတွေအတွက် Binary နဲ့ရေးထားတာဆိုရင် ဖတ်ရခက်ခဲတဲ့အတွက် ဘာရေးထားမှန်း ရုတ်တရက် မသိနိုင်ဘူး။ ခိုင်းချင်တာတွေ ပြင်ရပြောင်းရမလွယ်ပဲ အချိန်ကြာမယ်။ ဒီတော့ ဟိုးအရင်က Programmer တွေက Software တစ်ခု ရေးထားလိုက်ကြတယ်။ ကိုယ်ခိုင်းချင်တာတွေကို Computer ကို English Keyword တွေနဲ့ပဲ ရေးပြီးခိုင်းမယ်။ ခုနကရေးထားတဲ့ Software ထဲကို English Keyword တွေနဲ့ ရေးထားတဲ့ Code တွေ ထည့်ပေးလိုက်တာနဲ့ Computer နားလည်တဲ့ Machine Code တွေအဖြစ်ပြောင်းပေးမယ်။ ဒီလိုဆို လူတွေလဲနားလည် Computer လဲ နားလည်သွားပြီး နှစ်ဖက်လုံးအဆင်ပြေသွားပြီပေါ့။ အဲ့ဒီ Software ကို “Compiler” လို့ခေါ်ပါတယ်။ ကျနော်တို့ရေးတဲ့ Code တွေကိုတော့ “Source Code” လို့ ခေါ်ကြပါတယ်။ Compiler ရဲ့အလုပ်က “Source Code” ကနေ “Machine Code” ကို ပြောင်းပေးတာပါ။

Source Code > Compiler > Machine Code

ကျနော်တို့အသုံးပြုတဲ့ Programming Language ပေါ်မူတည်ပြီး Compiler တွေကွဲသွားတယ်။ Compiler အပေါ် မူတည်ပြီး Computer ကို ခိုင်းတဲ့ ရေးသားနည်း Syntax တွေ အမျိုးမျိုးပြောင်းသွားပါတယ်။ C Programming Language နဲ့ ရေးထားတဲ့ Source Code ကို “C Compiler” နဲ့ Compile ပြုလုပ်ရပါတယ်။ Java Programming Language နဲ့ရေးထားတဲ့ Source Code ကို “Java Compiler” နဲ့ Compile ပြုလုပ်ရပါတယ်။ Compile လုပ်တယ်ဆိုတာ Source Code ကနေ Machine Code ကို ဘာသာပြန် Translate လုပ်လိုက်တာပါပဲ။ Code ကို Translate လုပ်တဲ့ပုံစံပေါ် မူတည်ပြီး Compiler နဲ့ Interpreter ဆိုပြီး ထပ်ကွဲပါတယ်။ နှစ်ခုလုံး Source Code ကို Translate လုပ်တာခြင်း အတူတူပါပဲ။

Interpreter and Compiler

C++ Programming Language မှာဆိုရင် ကိုယ်ရေးထားတာ မြင်ရဖို့ C++ Compiler သုံးပြီး Compile လုပ်ရတယ်။ အဲ့တော့မှ Computer မှာ အသုံးပြုလို့ရတဲ့ Binary Executable File ရတယ်။ Window မှာဆို exe ပေါ့လေ။ အဲ့ Binary Executable ကို Run လိုက်ရင် ကိုယ်ရေးထားတဲ့Result ကို ကိုယ်မြင်ရတယ်။ ပြသနာက Compile လုပ်နေတဲ့အချိန်အတွက် အချိန်ပေးရတယ်။ ကိုယ့် CPU Power ပေါ်မူတည်ပြီး Compiling Time အချိန်ကြာတယ်။ နောက်ပြီး တခါ Compile ဖို့ အရေး သေချာစဉ်းစား သေချာရေး၊ Debugger နဲ့ ပြန်လိုက် Error ရှာ၊ Error တွေ့ရင် ပြန်ပြင်။ ဒီတော့ Product လေးတခုထွက်ဖို့အရေး အချိန်တစ်ခုပေးရတယ်။ ဒါက Compiled Language တွေ သဘာဝပေါ့။

Interpreted Language တွေကျတော့ ဒီလိုမဟုတ်ဖူး။ Interpreter က ကိုယ်ရေးထားတဲ့ Code တွေကို အပေါ်ကနေအောက်ကို တစ်ကြောင်းချင်းစီ ဖတ်သွားပြီး ကိုယ်ရေးထားတဲ့ Result ကို ချက်ခြင်းထုတ်ပြတယ်။ ဥပမာ Python, PHP, Javascript ပေါ့။ Production Time မြန်တယ်။ Error ရှာရလွယ်သွားတယ်။ Compile အတွက် အချိန်ပေးစရာမလိုတော့ဘူး။ ဒါပေမဲ့ Code ကိုတစ်ခါထဲ Translate / Interpret လုပ်သွားတော့ Binary Executable မထုတ်ပေးဘူး။ ဒီတော့ Program ကိုပြန်ဖွင့်ဖို့ Interpret ပြန်ပြန်လုပ်ပေးရတယ်။ ဒီတော့ Runtime လို့ခေါ်တဲ့ အလုပ်လုပ်ခိုင်းတဲ့အချိန်မှာ နှေးသွားကော။ Compiler ကတော့ Binary Executable ထုတ်ပေးထားတော့ Runtime မှာ မြန်တယ်။ ပြန်ပြီး Compile လုပ်နေစရာမလိုတော့ဘူး။ ဒါပေမဲ့ Development Time မှာ ကြာသွားတယ်။ သူ့ဟာနဲ့သူ အားနည်းချက် အားသာချက်တွေရှိတယ်။ ကိုယ်ရေးမဲ့ Software ပေါ်မူတည်ပြီးတော့ ဘာ Language သုံးမလဲဆိုတော ရွေးချယ်ရပါမယ်။