လွယ်လွယ်ပြောရရင် compiler နဲ့ interpreter ဆိုတာ ကိုယ်ရေးတဲ့ code ကို ကွန်ပျူတာ နားလည်တဲ့ ဘာသာစကားအဖြစ် ပြန်ပေးတဲ့ “ဘာသာပြန်သူ” နှစ်မျိုးပါ။ ကွန်ပျူတာက 0 နဲ့ 1 ပဲ နားလည်တယ်၊ ကိုယ်က Python လို လူဖတ်လို့ရတဲ့ ဘာသာနဲ့ ရေးတယ် — အဲဒီကြားက ဘာသာပြန်ပေးရတာ သူတို့အလုပ်ပါ။
ခရီးသွားလမ်းညွှန်နဲ့ ဥပမာပေးမယ်။
နိုင်ငံခြားသား ခရီးသွားတစ်ယောက် မြန်မာပြည်ရောက်လာတယ် ဆိုပါစို့။ သူ့ကို ကူညီဖို့ နည်းနှစ်မျိုး ရှိတယ်။
နည်းတစ်မျိုး — လမ်းညွှန်စာအုပ်တစ်အုပ်လုံးကို အင်္ဂလိပ်လို အရင် ဘာသာပြန်ထားပေးလိုက်တာ။ သူ ဖတ်ချင်တဲ့အခါ ဖတ်၊ သွားချင်တဲ့နေရာ သွား — ဘာသာပြန်သူ အနားမှာ ရှိစရာမလိုဘူး။ ဒါက compiler ပုံစံပဲ။
နောက်တစ်မျိုး — guide တစ်ယောက် သူ့နောက်က လိုက်ပြီး တစ်နေရာရောက်တိုင်း တစ်နေရာ ရှင်းပြပေးတာ။ “ဒါက ရွှေတိဂုံဘုရား၊ ဒီဘက်သွားရင်…” ဆိုသလိုမျိုး။ guide မပါဘဲ သူ့ဘာသာ သွားလို့မရဘူး။ ဒါက interpreter ပုံစံပဲ။
Compiler က ဘယ်လိုအလုပ်လုပ်လဲ?
Compiler က ကိုယ့် code ဖိုင်တစ်ခုလုံးကို တစ်ခါတည်း ဖတ်ပြီး ကွန်ပျူတာ တိုက်ရိုက် run လို့ရတဲ့ program တစ်ခု (machine code) အဖြစ် ပြောင်းထုတ်ပေးတယ်။
ဥပမာ C language နဲ့ hello.c ဆိုတဲ့ ဖိုင်ရေးတယ်။ gcc hello.c လို့ compile လုပ်လိုက်ရင် a.exe (Windows) ထွက်လာတယ်။ အဲဒီ a.exe ကို နှိပ်ရုံနဲ့ run တယ် — compiler နောက်ထပ် မလိုတော့ဘူး။
Compiler သုံးတဲ့ language တွေ — C, C++, Rust, Go။
အားသာချက် — မြန်တယ်။ တစ်ခါတည်း ဘာသာပြန်ပြီးသားမို့ run တဲ့အခါ ကွန်ပျူတာ တိုက်ရိုက် နားလည်တယ်။ ပြီးတော့ code မှာ အမှားပါရင် compile လုပ်တဲ့အချိန်ကတည်းက မိတယ် — “line 12 မှာ semicolon ကျန်နေတယ်” ဆိုသလိုမျိုး။
အားနည်းချက် — ပြင်တိုင်း ပြန်ပြီး compile လုပ်ရတယ်။ စာအုပ်ကို ပြင်တိုင်း တစ်အုပ်လုံး ပြန်ဘာသာပြန်ရသလိုမျိုး။
Interpreter က ဘယ်လိုအလုပ်လုပ်လဲ?
Interpreter က code ကို တစ်ကြောင်းချင်း ဖတ်ပြီး တစ်ကြောင်းချင်း ချက်ချင်း run တယ်။ ဘာသာပြန်ပြီးသား ဖိုင်သက်သက် မထုတ်ဘူး။
ဥပမာ Python မှာ script.py ရေးတယ်။ python script.py လို့ ရိုက်လိုက်ရင် interpreter က ပထမစာကြောင်းကို ဖတ် → run → ဒုတိယစာကြောင်း ဖတ် → run — ဒီလိုသွားတယ်။
Interpreter သုံးတဲ့ language တွေ — Python, JavaScript, Ruby, PHP။
အားသာချက် — ရေးရတာ လွယ်တယ်၊ စမ်းရတာ မြန်တယ်။ တစ်ကြောင်းရေးပြီး ချက်ချင်း run ကြည့်လို့ရတယ်။ ဒါကြောင့် စတင်သူ၊ data science, web development တွေမှာ Python/JavaScript က လူကြိုက်များတာ။
အားနည်းချက် — နှေးတယ်။ တစ်ကြောင်းချင်း ဘာသာပြန်နေရတော့ compiled program လောက် မမြန်ဘူး။
Java က ဘယ်လိုလဲ?
Java က နှစ်မျိုးလုံးရဲ့ ကြားထဲမှာ ရှိတယ်။ Java code ကို အရင် bytecode ဆိုတာအဖြစ် compile လုပ်တယ် (တစ်ဝက် ဘာသာပြန်တာ)။ ပြီးရင် JVM (Java Virtual Machine) ဆိုတဲ့ interpreter က အဲဒီ bytecode ကို run တယ်။
“Write once, run anywhere” ဆိုတဲ့ ဆောင်ပုဒ်က ဒီကနေ လာတာ — bytecode တစ်ခုတည်းနဲ့ Windows မှာရော Mac မှာရော Linux မှာရော run လို့ရတယ်။
ဘယ်ဟာ သင်သင့်လဲ?
အခုမှ စာလေ့လာမယ်ဆိုရင် Python (interpreter) နဲ့ စ — စမ်းရလွယ်လို့
ဂိမ်း၊ operating system၊ မြန်နှုန်းအရေးကြီးတဲ့ program ရေးချင်ရင် C++/Rust (compiler) ဘက် သွား
တကယ်တော့ နှစ်ခုလုံး သိထားတာ အကောင်းဆုံးပဲ — အလုပ်ပေါ်မူတည်ပြီး ရွေးသုံးတတ်ရင် programmer တစ်ယောက်အနေနဲ့ လက်နက်စုံနေပြီ
ခရီးသွားဥပမာကို ပြန်တွေးကြည့်လိုက် — စာအုပ်အပြီးဘာသာပြန်တာနဲ့ guide လိုက်ရှင်းပြတာ၊ ဘယ်ဟာ “ပိုကောင်း” လဲ ဆိုတာ အခြေအနေပေါ် မူတည်တယ်။ Compiler နဲ့ interpreter လည်း ဒီလိုပဲ။ နှစ်ခုလုံးက ကွန်ပျူတာကို ကိုယ့်စကား နားလည်အောင် လုပ်ပေးတဲ့ ဘာသာပြန်သူတွေချည်းပဲ။ နောက် “.exe ဖိုင်က ဘယ်လိုထွက်လာတာလဲ” လို့ တွေးမိရင် အဖြေကို သိပြီ — compiler အလုပ်လုပ်သွားတာပဲ။ 🙂