,

C Programming Language ကို သင်မယ်ဆိုရင် …

အခုအချိန်ဟာ  အင်တာနက်ပေါ်မှာ ခလုတ် တစ်ချက်ခေါက်လိုက်တာနဲ့ မိမိသင်လိုတဲ့ အကြာင်းအရာမှန်သမျှကို အလွယ်တကူ ရှာဖွေနိုင်တာကြောင့် Software Engineering လိုမျိုး အကြောင်းအရာတွေကို သင်ရတာဟာ အင်မတန်မှကို လွယ်ကူလာပါတယ်။ ဒါနဲ့အတူပဲ Self-learning လုပ်ရတာ လွယ်ကူလာတဲ့ အတွက်ကြောင့် Web Development, Machine Learning အစရှိတာတွေကို သင်ယူလိုသူလည်း များပြားလာပါတယ်။ ဒီလိုမျိုးသင်ယူတဲ့အခါမှာ သက်ဆိုင်ရာနယ်ပယ်ကို လိုက်ပြီးတော့ Programming Language ကို ရွေးချယ်ရပါတယ်။ ဥပမာ Web Application တွေလုပ်ချင်တယ်ဆိုလို့ရှိရင် Javascript/Typescript အပြင်ကို project တွေ၊ အလုပ်အများစုနဲ့ သင့်လျော်တဲ့ Language တွေ (Go, Java စသဖြင့်) ကို သင်ယူဖို့လိုအပ်နိုင်ပါတယ်။ Machine Learning ဘက်တွေကို သွားချင်တယ်ဆိုလို့ရှိရင်လည်း Python ကို ရွေးချယ်သင်ယူရပါတယ်။ 

ဒါပေမဲ့ ဘယ် Language ကိုပဲသင်သင်၊ ဘယ်လမ်းကြောင်းကိုပဲရွေးရွေး မဖြစ်မနေသင်သင့်တဲ့ language တစ်ခုကတော့ C ပါပဲ။

C Programming Language ကို ၁၉၇၀ ဝန်းကျင်မှာပဲ Bell Lab မှာ Dennis Ritchie ဆိုတဲ့ ပုဂ္ဂိုလ်က ဖန်တီးခဲ့ပါတယ်။ အဓိက ရည်ရွယ်ချက်ကတော့ UNIX Operating System တည်ဆောက်ဖို့အတွက် လိုအပ်တာကြောင့်  ဖြစ်ပါတယ်။ ဒါပေမဲ့ C ကို ဖန်တီးပြီးနောက်မှာပဲ C ဟာ software လောက အတွက် အရေးအပါဆုံး tool တစ်ခုဖြစ်လာပြီး နောင်လာမယ့် programming language တွေအတွက် မိခင် language  ဖြစ်လာပါတယ်။  

Java, Javascript, Python, C#, Go အစရှိတဲ့ language တွေအကုန်လုံးက C နဲ့ပဲရေးထားတာ ဖြစ်ပါတယ်။ ဒါတင်မကပဲ Operating system တွေ၊ Web Server တွေ၊ Database system တွေ၊ Spacecrafts အစရှိတဲ့ အရေးပါတဲ့ နေရာတွေမှာပါ သုံးတာတွေ့ရပါတယ်။ ဥပမာတစ်ခုထပ်ပေးရရင်တော့ ခုအချိန်မှာ သန်းချီတဲ့ server တွေမှာ အသုံးပြုနေတဲ့ Linux kernel ပဲဖြစ်ပါတယ်။  Linux ရဲ့ ဖန်တီးရှင် Linus Torvalds ကိုယ်တိုင်ရဲ့ အကြိုက်အနှစ်သက်ဆုံးဖြစ်ရတဲ့ programming language တစ်ခုဖြစ်ပြီးတော့ သူ့ရဲ့ အဓိက project ဖြစ်တဲ့ Linux အပြင် software development လောကမှာ မရှိမဖြစ်လိုအပ်တဲ့ Git ကိုလည်း C နဲ့ပဲ ရေးသားဖန်တီးခဲ့ပါတယ်။

C ရဲ့ အားသာချက်များ

Python တို့၊ Java တို့နဲ့ယှဥ်လိုက်မယ်ဆိုရင် C ဟာ Hardware နဲ့ အများကြီးပိုနီးစပ်ပါတယ်။ ဆိုလိုချင်တာက C program တစ်ခုကိုရေးတဲ့အချိန်မှာ “system progamming language” တစ်ခုဖြစ်တာကြောင့်  ဆော့်ဝဲရေးတဲ့သူတွေဟာ resource allocate လုပ်တာတွေ၊ မလိုအပ်တဲ့ memory တွေကို လွတ်အောင် လုပ်ရတာတွေကို ကိုယ်တိုင်သတိထားရပါတယ်။ 

ဘယ်လိုပဲ ဆိုဆို C ဟာ အခုလက်ရှိ Programming Language တွေထဲမှာ အမြန်ဆုံးဖြစ်နေပါသေးတယ်။ Minimal ဖြစ်တဲ့ အတွက်ကြောင့် performance ကို အရေးယူထည့်သွင်းစဉ်းစားရတဲ့  software တွေကို ရေးမယ်ဆိုရင် C ကို ထိပ်ဆုံးမှာထားပြီး သုံးမသုံး အရင်ဆုံး စဥ်းစားကြပါတယ်။ C ရဲ့ performance နဲ့ portability ကြောင့် ရေခဲသေတ္တာတွေ၊ smart microwave တွေလိုမျိုး Embedded Systems တွေမှာလည်း အသုံးပြုကြပါသေးတယ်။

အားနည်းချက်များ

Performance ကောင်းတယ်ဆိုပေမယ့် နေရာတိုင်းမှာ သုံးနေလို့တော့ အဆင်မပြေပါဘူး။ ပထမအားနည်းချက်တစ်ခုကတော့ ရေးတဲ့အချိန် (Development time) ကြာတာပဲ ဖြစ်ပါတယ်။ Java တို့၊ C# တို့လိုမျိုး Garbage collection မရှိတာကြောင့် memory management ကို ပရိုဂရမ်မာ ကိုယ်တိုင်က လုပ်ရပါတယ်။ ဒါကြောင့် သတိလက်လွတ်ရေးလိုက်မိတဲ့ အမှားတစ်ခုကြောင့် memory leak ဖြစ်နိုင်ခြေ ပိုများပြီးတော့ bug တွေများလာနိုင်ပါတယ်။ ဒါကြောင့် performance က အလွန်တရာ အရေးမကြီးဘူးဆိုလို့ရှိရင် C ကိုမသုံးပဲ တခြား သင့်တော်ရာ language တစ်ခုကိုပဲ ရွေးချယ်သင့်ပါတယ်။

ဘယ်လိုပဲဖြစ်ဖြစ် C ကိုနားလည်ထားတယ်ဆိုလို့ရှိရင်တော့ အကျိုးမယုတ်ပါဘူး။ ဘာလို့လဲဆိုရင် ခုနကပြောခဲ့သလိုမျိုး Manual Memory Management ကြောင့် computer ထဲမှာ အတွင်းကျကျ ဘယ်လိုအလုပ်နေသလဲဆိုတော အသေအချာ နားလည်လာပါလိမ့်မယ်။ C ကို သင်လိုက်ခြင်းအားဖြင့် Language တစ်ခု အပို သိရုံတင်မကပဲ ကိုယ်လက်ရှိသိထားတဲ့ Programming Language Knowledege ကိုပါ အထောက်အကူဖြစ်နိုင်ပါတယ်။

C ကို ဘယ်လိုသင်မလဲ။

အင်တာနက်ပေါ်မှာ Tutorial တွေ ရှာလိုက်ရင် မရေမတွက်နိုင်လောက်အောင် တွေ့နိုင်ပါတယ်။ ဒါပေမဲ့  လက်တွေ့အကျဆုံး နဲ့ အထိရောက်ဆုံးနည်းလမ်းကတော့ လက်တွေ့လေ့လာလုပ်ဆောင်ပြီး သင်တဲ့ယူနည်းလမ်း ဖြစ်ပါတယ်။ syntax နည်းနည်းပါးပါးနားလည်ပြီဆိုတာနဲ့  mini-project လေးတွေ စလုပ်တာက အကောင်းဆုံးပါ။ 

Command-Line Application (CLI Apps)

Programming Language အသစ်တစ်ခုသင်ပြီဆိုလို့ရှိရင် Tutorial တွေ အများကြီးကြည့်တာထက် ပရောဂျက် တစ်ခုနဲ့ စလုပ်တာက အကောင်းဆုံးပါ။ CLI (Command Line Interface) Application တွေဟာ ရိုးရှင်းလွယ်ကူတဲ့ အတွက်ကြောင့် ပထမဆုံး စလုပ်မယ့် ပရောဂျက် အနေနဲ့ သင့်တော်ပါတယ်။ Reading files, array structures, types အစရှိတဲ့ အခြေခံသဘောတရားတွေ ကို အရင်ဆုံးနားလည်အောင် လေ့ကျင့်ရမှာ ဖြစ်ပါတယ်။

Graphics/Game (Raylib):

နောက်တစ်ဆင့်အတွက်တော့ ရိုးရှင်းတဲ့ဂိမ်းတစ်ခုခု လုပ်ကြည့်နိုင်ပါတယ်။ ဒီအတွက်တော့ Raylib လို့ခေါ်တဲ့ library က အကောင်းဆုံးပါ။ အရမ်းမခက်တဲ့ ဂိမ်းအသေးစားမျိုး (snake, game of life) တွေလုပ်ပြီးတော့ နည်းနည်းပိုခက်တဲ့ pointers, pass by reference စတာတွေကို လေ့လာသင်ယူနိုင်ပါတယ်။

နောက်ထပ်လည်း ကိုယ်တိုင် အလွယ်အတူ အင်တာနက်ပေါ်ကနေ သင်ယူနိုင်မယ့် Resources တချို့မျှဝေ ပေးလိုက်ပါတယ်။

C application တွေ ရေးဖို့ အသုံးဝင်နိုင်တဲ့ library တွေနဲ့ Source code ဖတ်ပြီးသင်ယူနိုင်တဲ့ project list တွေကို ဒီ repo မှာ ဝင်ကြည့်နိုင်ပါတယ်။

https://github.com/oz123/awesome-c

Coding challenge တွေ အတွက် Exercism ရဲ့ C Track ကို သွားလို့ရပါတယ်။

https://exercism.org/tracks/c

Sithu

Related Posts