Calm Hill My Random Thoughts

Understanding Computation

Computer Science ကိုလေ့လာတယ်ဆိုရင် Programming Languages တွေအကြောင်းဟာ မဖြစ်မနေသင်ရပါတယ် ဒီနေရာမှာ Programming Languages တွေအကြောင်းဆိုတာမှာ Programming Language တခုခုနဲ့ Program ရေးတာကို ဆိုလိုတာမဟုတ်ပါဘူး Programming Languages တွေကိုဘယ်လို Design လုပ်ထားသလဲ Compiler/Interpreter တွေက ဘယ်လိုမျိုး Process လုပ်ကြလဲဆိုတာတွေကို ဆိုလိုတာပါ။ တကယ်တော့ Programming Languages တခုခုနဲ့ Program ရေးတယ်ဆိုတာက တဆင့်မြင့်တဲ့နေရာကကြည့်ရင် End User အဆင့်တခုမှာပဲရှိတာပါ။ တက္ကသိုလ်တွေမှာတော့ Automaton, Programming Languages, Compiling Techniques စသည်ဖြင့်သင်တဲ့ ဘာသာတွေရှိပါတယ်။

အဲဒီဘာသာတွေရဲ့ပြဿနာက အများအားဖြင့်က Implementation လုပ်ပြဖို့ခက်လွန်းတာပါ အဲဒီအပြင် Pure Computer Science ဘာသာတွေဖြစ်နေတော့ သင်တဲ့ဆရာဟာ Applied Math ကိုပါနားလည်တဲ့လူမှမဟုတ်ရင် စနစ်တကျလည်း သင်နိုင်ဖို့ခက်ပါတယ်။ လုပ်စရာရှိတာနဲ့ String Processing တွေပြန်လုပ်နေတော့ မေ့နေတဲ့စာတွေပြန်ဖတ်ဖြစ်တယ် အများအားဖြင့်စာအုပ်တွေက အဟောင်းတွေပဲများတယ် အပြောင်းအလဲသိပ်မရှိတဲ့ ဘာသာတွေဖြစ်သလို ရေးနိုင်တဲ့လူလည်း နည်းတဲ့ဘာသာတွေဖြစ်တော့ Computer Science မှာစာအုပ်ဟောင်းပေမယ့် အသုံးဝင်တာဆိုလို့ ဒီဘာသာရပ်တွေပဲရှိမယ်ထင်တယ် အဟောင်းတွေဖတ်နေရင်းနဲ့ Understanding Computation ဆိုတဲ့စာအုပ်တွေ့လို့ အစမ်းဖတ်ကြည့်ရင်းနဲ့ အတော်သဘောကျတာနဲ့ ဖတ်ချင်လို့ဝယ်လိုက်တယ်။

Who Should Read This Book?

This book is for programmers who are curious about programming languages and the theory of computation, especially those who don’t have a formal background in mathematics or computer science.

Preface မှာ Programming Languages တွေနဲ့ Theory of Computation အကြောင်းကို နားလည်ချင်တဲ့ Programmer တွေအတွက်လို့ရေးထားတယ် သူပြောထားတာကတော့ Computer Science နဲ့ Mathematics နောက်ခံမရှိတဲ့လူတွေအတွက်လို့ပြောထားတယ် ဒါပေမယ့် အခုအချိန်အထိ ဖတ်ကြည့်သလောက်ကတော့ Computer Science နဲ့ Mathematics နောက်ခံမရှိရင်တော့ ဖတ်လို့မဖြစ်နိုင်ပါဘူး Computer Science ကိုလေ့လာရင်းနဲ့ Practical အနေနဲ့ အထောက်အကူပြု အနေနဲ့ဖတ်ချင်ရင်ပဲ ဖတ်လို့ဖြစ်နိုင်မယ်လို့ပဲမြင်ပါတယ်။

Understanding Computation ဆိုတဲ့အတိုင်း Computation ဆိုတဲ့အကြောင်း Machine, Language, Program စတာတွေကို Implementation နမူနာတွေနဲ့ နားလည်ရလွယ်ပါတယ်။ Automaton, Finite-state, Deterministic, Turing, Ultimate Machine, Syntactic, Semantic, Lambda Calculus စတာတွေကို Example တွေနဲ့ဖတ်လို့ရပါတယ် ဒါပေမယ့် Theoretically အသေအချာနားလည်ဖို့ဆိုရင်တာ့ မလုံလောက်ပါဘူး။ Example တွေအားလုံးဟာ Ruby နဲ့ရေးထားပေးတယ် တခြား Language တွေနဲ့ ရေးမယ်ဆိုရင်လည်းရပါတယ်လို့ ပြောထားပေမယ့် အဲဒီလောက်မလွယ်ပါဘူး Code Example တွေကို Language တစ်ခုခုပြောင်းရေးဖို့တော့ အတော်လေးကို အချိန်လိုပါလိမ့်မယ်။ ကိုယ်ဖတ်ဖူးတဲ့ စာအုပ်တွေမှာ Automaton အတွက် Implementation အထောက်အကူပြု စာအုပ်အဖြစ် ဒီစာအုပ်ကိုပထမဆုံးမြင်ဖူးတာပါ ယှဉ်ပြီးကြည့်စရာမရှိပေမယ့် အတော်ကိုသဘောကျမိတယ်။