
ပရိုဂရမ်းမင်း ဘာသာစကား (programming language) တစ်ခုဆိုသည်မှာ အရိုးအရှင်းဆုံးဆိုရသော် ကွန်ပျူတာကို ဆက်သွယ်ရန်အသုံးပြုရသော ဘာသာစကားတစ်ခုဖြစ်သည်။ အတိကျဆိုရလျှင် ကွန်ပျူတာအကိုအသုံးချနိုင်စေရန် ဆော့ဖ်ဝဲ (software) ဖန်တီးရန်အသုံးပြုသော ဘာသာစကားတစ်ခုဖြစ်သည်။
ပရိုဂရမ်းမင်းဘာသာစကား (programming language) တွင်လည်း ဘာသာစကားများစွာရှိပြီး ဖန်တီးလိုသည့် ဆော့ဖ်ဝဲ (software) ပေါ်မူတည်ပြီး သင့်တော်ရာအသုံးပြုနိုင်သည်။
အခြားဘာသာစကားများကဲ့သို့ပင် ပရိုဂရမ်းမင်းဘာသာစကား (programming language) တွင်လည်း ရေးထုံး၊ စံသတ်မှတ်ချက်များလည်းရှိသည်။
ပရိုဂရမ်းမင်းဘာသာစကား (programming language) ကို ပရိုဂရမ်းမင်းဘာသာစကား၏ဖွဲ့စည်းတည်ဆောက်ပုံ (level of abstraction)၊ ကွန်ပျူတာနားလည်းရန်လုပ်ဆောင်ပုံ (execution model)၊ ရေးသားသောစံ (programming paradigm) ပေါ်မူတည်ပြီးအမျိုးအစားခွဲခြားနိုင်သည်။
ပရိုဂရမ်းမင်းဘာသာစကား၏ဖွဲ့စည်းတည်ဆောက်ပုံ(level of abstraction) ကိုမူတည်ပြီး ပရိုဂရမ်းမင်းဘာသာစကား (programming language) ကိုအမျိုးအစားခွဲမည်ဆိုလျှင်တွင် အနှုစိတ်ရေးရသေားဘာသာစကား (low-level language) နှင့် အကျဉ်းချုပ်ရေးနိုင်သောဘာသာစကား (high-level language)၊ အထွေထွေသုံး (domain-specific language) ဟူ၍ခွဲခြားရှိသည်။
အနှုစိတ်ရေးရသေားဘာသာစကား (low-level language) များတွင် ဖန်တီးရေးသားလုပ်ငန်းစဉ်တွင် ပါဝင်သော အစိတ်ပိုင်းအားလုံးရေးသားရသည့်အပြင် အသုံးပြုရေးသားသော စာလုံး စာကြောင်းများသည် ကွန်ပျူတာဘက်ပိုမိုဦးစားပေးသောကြောင့် လူသားများအတွက် ဖတ်ရှု့နားလည်ရန်ခက်ခဲသည်။ ၄င်းဘာသာစကားများသည် အနှုစိတ်ရေးသားရသောကြောင့် စနစ်တွင်ပါဝင်သော ဟာ့ဒ်ဝဲ (hardware) ဆော့ဖ်ဝဲများကို ပိုမိုထိမ်းချုပ်နိုင်သည်။ ထို့ကြောင့် ၄င်းကဲ့သို့သော ပရိုဂရမ်းမင်းဘာသာစကား (programming language) များကို စနစ်များဖန်တီးခြင်းများတွင် အသုံးများသည်။
အကျဉ်းချုပ်ရေးနိုင်သောဘာသာစကား (high-level language) များတွင်မူ ဖန်တီးရေးသားသောလုပ်ငန်းစဉ်တွင်ပါဝင်သော အစိတ်အပိုင်အားလုံးမရေးရသောကြောင့် ဖန်တီးမှုလုပ်ငန်းမြန်သည်။ ရေးသားသော စာလုံး စာကြောင်းများသည် လူသားများအချင်းချင်းဆက်သွယ်ရာတွင်အသုံးပြုရေးသားသော (english) စာလုံးပေါင်းစပ်ပုံ၊ စာကြောင်းဖန်တီးပုံနှင့် များစွာဆင်တူသည်။ ထို့ကြောင့် လူသားများ (အင်္ဂလိပ်စာနားလည်သော) အတွက် ဖတ်ရှု့နားလည်လွယ်သည်။ အကျဉ်းချုပ်ရေးနိုင်သောဘာသာစကား (high-level language) များကို ပုဂ္ဂလိက အသုံးချဆော့ဖ်ဝဲ (application) များဖန်တီးရေးသားရာတွင် အများအားဖြင့်သုံးသည်။ သို့သော် စနစ်များတွင်ပါဝင်သော ဟာ့ဒ်ဝဲ (hardware) ဆော့ဖ်ဝဲများကို ထိပ်ချုပ်နိုင်မှုအပိုင်းတွင် အားနည်းသည်။
အထွေထွေသုံး (domain-specific language) များသည်လည်း လူသားများ (အင်္ဂလိပ်စာနားလည်သော) အတွက် ဖတ်ရှု့နားလည်ရလွယ်ကူသည်။ အထွေထွေသုံး (domain-specific language) များသည် ၄င်းတို့ကိုဖန်တီးစဉ်ကပင် ရည်ရွယ်သတ်မှထားသော ဖန်တီးမှုများပြုလုပ်ရန်သာ အသုံးပြုနိုင်သည်။
ကွန်ပျူတာနားလည်ရန်လုပ်ဆောင်ပုံ (execution model) ကိုမူတည်ပြီး ပရိုဂရမ်းမင်းဘာသာစကား (programming language) ကိုအမျိုးအစားခွဲလျှင် ပရိုဂရမ်းမင်းဘာသာစကား (programming language) တစ်မျိုးမျိုး ဖြင့်ရေးသားထားသော ကုတ် (source code) ကို ကြားခံဘာသာစကား(သို့) ကွန်ပျူတာနားလည်သောဘာသာစကား (machine code) လိုသောဘာသာစကား (compiled language) နှင့် ဘာသာပြန်နားလည်နိုင်သောဘာသာစကား (interpreted language) ဟူ၍ခွဲခြားနိုင်သည်။
ကြားခံဘာသာစကား(သို့) ကွန်ပျူတာနားလည်သောဘာသာစကား (machine code) လိုသောဘာသာစကား (compiled language) တွင်ပါဝင်သောမည်သည့် ပရိုဂရမ်းမင်းဘာသာစကား (programming language) ဖြင့်ရေးသားထားသော ကုတ် (source code) ကိုမဆို ကွန်ပျူတာသည် အလိုအလျှောက် (သို့မဟုတ်) တိုက်ရိုက်နားလည်နိုင်စွမ်းမရှိပါ။ ဆိုလိုသည်မှာ ကြားခံဘာသာစကား(သို့) ကွန်ပျူတာနားလည်သောဘာသာစကား (machine code) လိုသောဘာသာစကား (compiled language) ဖြင့်ရေးသားထားသော ပရိုဂရမ်းမင်းဘာသာစကား (programming language) ကုတ် (source code) ကို ကွန်ပျူတာနားလည်သော ကြားခံဘာသာစကား(သို့) ကွန်ပျူတာနားလည်သောဘာသာစကား (machine code) သို့ ကွန်ပျူတာမှာ တွက်ချက်မှုမပြုလုပ်ခင်တွင် ပြောင်းပေးရသည်။ ထိုသို့ပြောင်းလဲပေးသောလုပ်ငန်းစဉ်ကို ကွန်ပိုင်လာ (compiler) ဟုခေါ်သော ဆော့ဖ်ဝဲ (software) တစ်ခုမှလုပ်ဆောင်ပေးသည်။ ထိုသို့သော ပရိုဂရမ်းမင်းဘာသာစကား (programming language) သည် ကြားခံဘာသာစကား(သို့) ကွန်ပျူတာနားလည်သောဘာသာစကား (machine code) သို့ပြောင်းချိန် (compile time) တစ်ကြိမ်လိုသော်လည်း ကွန်ပျူတာ၌တွက်ချက်ချိန်သည် ဘာသာပြန်နားလည်နိုင်သောဘာသာစကား (interpred language) ၏ တွက်ချက်ချိန်ထက်များစွာသက်သာသည်။
ဘာသာပြန်နားလည်နိုင်သောဘာသာစကား (interpreted language) ၏ ကုတ် (source code) များကို ကြားခံဘာသာစကား(သို့) ကွန်ပျူတာနားလည်သောဘာသာစကား (machine code) သို့ပြောင်းချိန် (compile time) မလိုပါ။ သိုသော်လည်း အင်တာပရက်တာ (interpreter) ဟုခေါ်သော ဆော့ဖ်ဝဲ (software) မှ ရေသားထားသော ကုတ် (source code) တစ်ကြောင်းကိုတစ်ကြိမ်ဘာသာပြန်ပေးသောကြောင့် တွက်ချက်ချိန်ကြာသည်။
ရေးသားသောစံ (programming paradigm) ကိုမူတည်ပြီး ပရိုဂရမ်းမင်းဘာသာစကား (programming language) ကိုအမျိုးအစားခွဲလျှင် အရေးအသားဦးစားပေးသော (imperative programming)၊ ရလဒ်ဦးစားပေးသော (declarative programming)၊ ကုတ် (source code) တွေကစနစ်တကျဖွဲစည်းရေသားသော (object-oriented-programming OOP)၊ တည်ဆောက်ပြီးသားလုပ်ဆောင်မှု (functions) တွေအဓီကအသုံးပြုရေးသားသော (functional programming) စသည်ဖြင့်ခွဲခြားနိုင်သည်။
အရေးအသားဦးစားပေးသော (imperative programming) တွင် ရည်ရွယ်ထားသောရလဒ်ရရှိရေးအတွက် ကုတ် (source code) များကိုအဓိအသုံးပြုရေးသားပြီး ဖော်ပြသည်။
ရလဒ်ဦးစားပေးသော (declarative programming) တွင်မူကား ရည်ရွယ်ထားသောရလဒ်ရရှိရေးအတွက် ကုတ် (source code) များအသုံးပြုရေသားခြင်းထက် ပါဝင်သော အချက်အလက်များ၊ ဆက်သွယ်မှုများ၏ ဂုဏ်သတ္တိနှင့် လုပ်ဆောင်ချက်များကို အသုံးပြုဖော်ပြသည်။
ကုတ် (source code) တွေကစနစ်တကျဖွဲစည်းရေသားသော (object-oriented-programming OOP) တွင် သတ်မှတ်ထားသော စံ စနစ်အတိုင်း ကုတ် (source code) များကို ဖွဲစည်းပြီး ရည်ရွယ်ထားသော ရလဒ်ရရှိရေးအတွက် အသုံးပြုဖော်ပြသည်။
တည်ဆောက်ပြီးသားလုပ်ဆောင်မှု (functions) တွေအဓိကအသုံးပြုရေးသားသော (functional programming) တွင် လိုအပ်သောချက်အလက်များကို တည်ဆောက်ပြီးသားဖြစ်သော လုပ်ဆာင်မှု (functions) များသို့ ထည့်သွင်းပြီး ရည်ရွယ်ထားသောရလဒ်ရရှိရေး တွက်ချက်ဖော်ပြသည်။
အထက်ဖော်ပြပါ အမျိုးအစားများသည်ထင်ရှားသော အမျိုးအစားများသာဖြစ်သည်။ ထပ်မံအသေးစိတ်ခွဲခြမ်းလေ့လာနိုင်သေးသည်။