Calm Hill My Random Thoughts

The Elements of Computing Systems (Nand to Tetris)

Emulator စမ်းကြည့်ပြီးတော့ Emulated Processor ကိုစိတ်ဝင်စားသွားမိတယ် တကယ်တော့အဲလို စာတွေကမေ့နေတာ ကြာခဲ့ပါပြီ ဒီတော့စာပြန်ဖတ်ဖို့လိုတယ်။ အရင်ဆုံးသတိရမိတာက ကိုယ်ရင်းနီးနေတဲ့ တက္ကသိုလ်မှာသင်ခဲ့တဲ့ Computer Organization ရယ် Computer Architecture ကိုအရင်ဆုံး သတိရမိပါတယ် ဒါပေမယ့် အဲဒီ့စာအုပ်တွေက ပါလည်းမပါလာတော့သလို အဲလိုပြန်ဖတ်ချိန်လည်း မရှိတော့ပါဘူး။ ဒီတော့ဖတ်စရာ စာအုပ်လိုက်ရှာလိုက်တော့ အတော်များများတွေ့ပါတယ် စိတ်အဝင်စားမိဆုံး စာအုပ်ကတော့ Nand to Tetris လို့ပြောရမယ် စာအုပ်နာမည်အပြည့်အစုံက The Elements of Computing Systems: Building a Modern Computer from First Principles ဘာလို့သဘောကျသလဲမေးရင် လက်တွေ့အနေနဲ့ Simulate လုပ်ပြီးစမ်းသပ်လို့ရလို့ပါ တစ်ခြားစာအုပ်တွေက ကောင်းပေမယ့် လက်တွေ့စမ်းဖို့ ပစ္စည်းအပြည့်အစုံရှိဖို့ မလွယ်လှပါဘူး။

Many computer science students are missing the forest for the trees.

သူပြောထားတဲ့ ပထမဆုံး Motivation ကိုတကယ်သဘောကျမိတယ် မှန်လည်းတကယ်မှန်ပါတယ် တကယ်အသေးစိတ် သင်မယ်ဆိုရင် computer science ဟာများလွန်းလှတယ် Hardware, Architecture, Programming Languages, Algorithm, Data Structure, Operating System, Software Engineering, Compiling Techniques, … စသည်ဖြင့် ခွဲထွက်သွားတာ များလွန်းတဲ့အတွက် ကျောင်းသားတစ်ယောက်ကို ကွန်ပျူတာတစ်လုံး ဘယ်လိုအဆင့်ဆင့် အလုပ်လုပ်သွားသလဲ ဘာသာရပ်တွေရဲ့ ဘယ်လိုဆက်စပ်သွားသလဲဆိုတာ မေးလိုက်မယ်ဆိုရင် မသိတာကများပါတယ် အဲဒါကြောင့် Computer Organization လိုဘာသာတွေလိုအပ်တာပါ။

The Elements of Computing Systems ထဲမှာ Chapter အလိုက် Project တွေပါလာပါတယ် Chapter တစ်ခုရဲ့ အခြေခံအဖြစ်ပြန်သုံးပါတယ်။ ပထမဆုံးအခြေခံအဖြစ် Nand Gate ကနေစပြီး အဆင့်ဆင့် Chipset, Machine Language, Assembler, Virtual Machine, High Level Language, Operating System, Application ဆိုပြီး အဆင့်ဆင့် တည်ဆောက်သွားပြီး နောက်ဆုံးမှာ ကွန်ပျူတာတစ်လုံး ရရှိလာပါလိမ့်မယ်။ အရာအားလုံးကို Simulated Environment အနေနဲ့စမ်းသပ်လို့ရအောင် Hardware Simulator တွေပါလာပါတယ်။ အောက်မှာပြထားတဲ့ လိပ်စာမှာ လိုအပ်တဲ့ Simulator Softwares, Lecture, Chapter, Projects စသည်ဖြင့် အကုန်ပေးထားပါတယ်။ ဒါပေမယ့် အရေးကြီးတဲ့တစ်ချို့ Chapter တွေကတော့ မပေးထားပါဘူး ဒါကတော့ Lecture ကိုကြည့်လို့ မလုံလောက်ရင်တော့ တစ်ခြားကနေလေ့လာ ဒါမှမဟုတ်ရင်တော့ သူ့မူရင်းစာအုပ်ကို ဝယ်သင့်တယ်။

http://www1.idc.ac.il/tecs/

စာရေးတဲ့စာရေးဆရာကတော့ ဒီစာအုပ်ကိုဖတ်ဖို့အတွက် Programming Language တစ်ခုကို တတ်ရင်ဖတ်နိုင်တယ်လို့ဆိုပါတယ် တကယ်တော့ အထဲမှာပါတဲ့စာတွေကို ဖတ်ကြည့်တော့ အဲလိုလွယ်တဲ့စာအုပ်မဟုတ်ပါဘူး။ သူပြောသလို ဖတ်လို့ရနိုင်ပါလိမ့်မယ် ဒါပေမယ့် နားလည်ဖို့တော့ အတော်ကြိုးစားဖတ်ရမယ် computer science အခြေခံရှိရင်တော့ ဖတ်ရတာသိပ်မခက်ပါဘူး နားလည်လွယ်ပါတယ်။ စိတ်ဝင်စားလို့ ပရောဂျက် ၁၂ ခုကိုနေ့ပိုင်းက လုပ်ကြည့်မိတယ် အကုန်ပြီးသွားတော့ မေ့နေသမျှစာတွေအတော်များများ ပြန်မှတ်မိခြုံငုံမိသွားတယ်။

နောက်တစ်ခုပြောချင်တာက အပျင်းပြေဖတ်ဖို့တော့ သင့်လျော်တဲ့စာအုပ်မဟုတ်ဘူး computer science ကိုစိတ်ဝင်စားမှသာ ဖတ်ဖို့အဆင်ပြေတယ် Application Programming ပဲလုပ်တဲ့လူအတွက် ဘာမှမသက်ဆိုင်ပါဘူး။ ဒါဖတ်လို့ ဘာဖြစ်လာနိုင်မလဲမေးရင် ဘာမှမြင်သာတဲ့ အကျိုးဖြစ်ထွန်းမှု့ ဖြစ်မလာနိုင်ဘူးလို့ ပြောပါရစေ လစာလည်းမတိုးဘူး လူအထင်ကြီးစရာ လက်မှတ်လည်းတိုးမလာဘူး ဒါပေမယ့် computer science နဲ့သက်ဆိုင်တဲ့ ခြုံငုံနားလည်နိုင်တဲ့ Knowledge ကတော့ အများကြီး တက်လာပါလိမ့်မယ် မတိုးလာရင်တော့ တကယ်မဖတ်လို့ နားမလည်လို့လို့သာ သတ်မှတ်ပြီးပြန်ဖတ်ပါလို့ပဲ အကြံပေးချင်တယ် အချိန်တော့ရင်းရပါလိမ့်မယ် သာမန်အားဖြင့် အခြေခံမရှိရင် ၁ နှစ်လောက် ကြာနိုင်ပါတယ်။