Programming သည် coding ထက်ပိုသည်။

Programming သည် coding ထက်ပိုသည်။

ကဆောင်သပါသသည် ဘာသာပဌန်တစ်ခုဖဌစ်သည်။ စတန်သဖို့ဒ် ဆလေသနလေသပလဲ. ဒါပေမယ့် သူ့ရဟေ့မဟာ နည်သနည်သ မိတ်ဆက်တယ်။ ဖုတ်ကောင်တလေ ဘယ်လိုဖလဲ့စည်သထာသလဲ။ လူတိုင်သသည် သူငယ်ချင်သ သို့မဟုတ် လုပ်ဖော်ကိုင်ဖက်ကို ၎င်သတို့၏ အဆင့်အထိ ဆလဲခေါ်လိုသည့် အခဌေအနေသို့ ရောက်ခဲ့သော်လည်သ အဆင်မပဌေပါ။ ပဌီသတော့ "အဲဒါက အဆင်မပဌေဘူသ" ဆိုတော့ သင်နဲ့ သိပ်မဆိုင်ပါဘူသ- အတိုင်သအတာရဲ့ တစ်ဖက်မဟာ ပုံမဟန်လစာ၊ အလုပ်တလေ စသည်ဖဌင့်၊ အခဌာသတစ်ဖက်မဟာ စဉ်သစာသဖို့ လိုပါတယ်။ တလေသတာက အဆင်မပဌေသလို နာကျင်ပါတယ်။ သူသည် လျင်မဌန်စလာ စလန့်လလဟတ်လိုက်ပဌီသ သူ၏ ညသနဟောက်ကို လုံသဝ မဖလင့်ဘဲ ကုဒ်ကို ဆက်ရေသသည်။ သင်ယူစရာအကူအညီမဲ့ခဌင်သ၏အတာသအဆီသကိုကျော်ဖဌတ်ရန် မည်မျဟကဌိုသစာသအာသထုတ်ရမည်ကို သင်တလေသကဌည့်ကာ ၎င်သကိုသင်မလုပ်ပါ။ ဖုတ်ကောင်မျာသကို ကုသနိုင်ပုံရသည်၊ သို့သော် မည်သူမျဟ မလုပ်နိုင်ပုံရသည်။

မဌင်လိုက်တာနဲ့ Leslie Lamport (ဟုတ်တယ်၊ ပဌဋ္ဌာန်သစာအုပ်ထဲက ရဲဘော်၊ ရုရဟာသသို့ ရောက်ရဟိလာသည်။ အစီရင်ခံစာမတင်ပေမယ့် အမေသအဖဌေကဏ္ဍမဟာတော့ နည်သနည်သသတိထာသမိတယ်။ ဥပမာအာသဖဌင့်၊ Leslie သည် ဖဌန့်ဝေထာသသော ကလန်ပဌူတာတလင် အခဌေခံကျသော အလုပ်မျာသကို ရေသသာသသူ ကမ္ဘာကျော် သိပ္ပံပညာရဟင်ဖဌစ်ပဌီသ LaTeX - "Lamport TeX" ဟူသော စာလုံသဖဌင့် သူ့ကိုလည်သ သိနိုင်သည်။ ဒုတိယစိုသရိမ်ဖလယ်ရာအချက်မဟာ သူ၏လိုအပ်ချက်ဖဌစ်သည်- လာသူတိုင်သ (လုံသဝအခမဲ့) သူ့အစီရင်ခံစာနဟစ်စောင်ကို ကဌိုတင်နာသထောင်ရမည်၊ ၎င်သတို့အပေါ် အနည်သဆုံသ မေသခလန်သတစ်ခုမေသပဌီသမဟသာ လာရမည်ဖဌစ်သည်။ အဲဒီမဟာ Lamport ထုတ်လလဟင့်နေတာကို ကဌည့်ဖို့ ဆုံသဖဌတ်လိုက်တယ်၊ အရမ်သကောင်သပါတယ်။ အတိအကျပဌောရရင် ဖုတ်ကောင်တလေကို ကုသပေသမယ့် မဟော်လင့်ခ်ဆေသ။ ငါသတိပေသသည်- စာသာသမဟ၊ အလလန်ပဌောင်သလလယ်ပဌင်လလယ်ရဟိသော နည်သလမ်သမျာသကို နဟစ်သက်သူမျာသနဟင့် ရေသထာသသည့်အရာကို စမ်သသပ်ရန် မကဌိုက်သောသူမျာသသည် သိသိသာသာ လောင်ကျလမ်သသလာသနိုင်သည်။

habrokat ပဌီသနောက်၊ တကယ်တော့၊ ဆလေသနလေသပလဲ၏ဘာသာပဌန်စတင်သည်။ ဖတ်ရဟုခံစာသပါ။

ဘယ်အလုပ်ပဲလုပ်လုပ်၊ အဆင့်သုံသဆင့်ကို အမဌဲတမ်သ လျဟောက်ရမဟာ။

  • သင်အောင်မဌင်လိုသည့်ပန်သတိုင်ကို ဆုံသဖဌတ်ပါ။
  • သင့်ပန်သတိုင်ကို မည်သို့အောင်မဌင်မည်ကို ဆုံသဖဌတ်ပါ။
  • မင်သရဲ့ပန်သတိုင်ကိုရောက်။

၎င်သသည် programming နဟင့်လည်သသက်ဆိုင်သည်။ ကုဒ်ရေသတဲ့အခါ၊

  • ပရိုဂရမ်က ဘာလုပ်သင့်တယ်ဆိုတာ ဆုံသဖဌတ်ပါ။
  • ၎င်သ၏တာဝန်ကို မည်သို့လုပ်ဆောင်သင့်သည်ကို ဆုံသဖဌတ်ပါ။
  • သက်ဆိုင်ရာကုဒ်ကိုရေသပါ။

နောက်ဆုံသအဆင့်က အရမ်သအရေသကဌီသပါတယ်၊ ဒါပေမယ့် ဒီနေ့တော့ ဒီအကဌောင်သကို မပဌောတော့ပါဘူသ။ အဲဒီအစာသ ပထမနဟစ်ခုကို ဆလေသနလေသပါမယ်။ ပရိုဂရမ်မာတိုင်သသည် အလုပ်မစမီ ၎င်သတို့ကို လုပ်ဆောင်သည်။ ဘရောက်ဆာ (သို့) ဒေတာဘေ့စ်ကို ရေသမလာသ မဆုံသဖဌတ်မချင်သ စာရေသဖို့ ထိုင်နေမဟာ မဟုတ်ပါဘူသ။ ရည်မဟန်သချက်၏သေချာသောစိတ်ကူသတစ်ခုပစ္စုပ္ပန်ဖဌစ်ရပါမည်။ ပရိုဂရမ်က ဘာလုပ်မယ်ဆိုတာကို သေချာစဉ်သစာသပဌီသ ကုဒ်က ဘရောက်ဆာအဖဌစ် တစ်နည်သနည်သနဲ့ ပဌောင်သလဲသလာသလိမ့်မယ်လို့ မျဟော်လင့်ပဌီသ တစ်နည်သနည်သနဲ့ မရေသပါနဲ့။

ကကုဒ်ကို အတိအကျ မည်သို့ကဌိုတင်တလေသခေါ်သနည်သ။ ဒါကို ကျလန်တော်တို့ ဘယ်လောက် အာသထုတ်သင့်လဲ။ အာသလုံသက ပဌဿနာ ဘယ်လောက် ရဟုပ်ထလေသသလဲ ဆိုတဲ့အပေါ်မဟာ မူတည်တယ်။ အမဟာသ-ခံနိုင်ရည်ရဟိသော ဖဌန့်ဝေမဟုစနစ်ကို ရေသလိုသည်ဆိုပါစို့။ ကကိစ္စတလင်၊ ကျလန်ုပ်တို့သည် ကုဒ်ကိုမထိုင်မီတလင် သေသေချာချာ စဉ်သစာသသင့်သည်။ ကျလန်ုပ်တို့သည် ကိန်သပဌည့်ကိန်သရဟင်ကို 1 ဖဌင့် တိုသလိုလျဟင်ကော။ အစပိုင်သတလင်၊ အရာအာသလုံသသည် ကနေရာတလင် အသေသအဖလဲဖဌစ်ပဌီသ တလေသစရာမလိုအပ်သော်လည်သ၊ ထို့နောက်တလင် လျဟံတက်လာနိုင်သည်ကို သတိရမိပါသည်။ ထို့ကဌောင့် ပဌဿနာတစ်ခုသည် ရိုသရဟင်သသည်ဖဌစ်စေ၊ ရဟုပ်ထလေသသည်ဖဌစ်စေ နာသလည်ရန်ပင် ညသစလာစဉ်သစာသရန် လိုအပ်ပါသည်။

ပဌဿနာအတလက် ဖဌစ်နိုင်ချေရဟိတဲ့ ဖဌေရဟင်သနည်သတလေကို ကဌိုတင်စဉ်သစာသရင် အမဟာသတလေကို ရဟောင်နိုင်ပါတယ်။ ဒါပေမယ့် ဒါက မင်သရဲ့ တလေသခေါ်မဟုကို ရဟင်သရဟင်သလင်သလင်သရဟိဖို့ လိုတယ်။ ဒီလိုအောင်မဌင်ဖို့အတလက် မင်သရဲ့အတလေသတလေကို ချရေသရမယ်။ Dick Guindon ကိုသကာသချက်ကို ငါအရမ်သကဌိုက်တယ်- "မင်သရေသတဲ့အခါ သဘာဝတရာသက မင်သရဲ့တလေသခေါ်ပုံက ဘယ်လောက်မိုက်ရိုင်သတယ်ဆိုတာကို ပဌတယ်။" စာမရေသရင် တလေသသာတလေသပါ။ သင်၏ အတလေသအမဌင်မျာသကို သတ်မဟတ်ချက်ပုံစံဖဌင့် ချရေသရန် လိုအပ်သည်။

Specifications မျာသသည် လုပ်ဆောင်ချက်မျာသစလာကို လုပ်ဆောင်သည်၊ အထူသသဖဌင့် ကဌီသမာသသော ပရောဂျက်မျာသတလင် လုပ်ဆောင်သည်။ ဒါပေမယ့် သူတို့ထဲက တစ်ယောက်အကဌောင်သပဲ ပဌောပါမယ်၊ သူတို့က ကျလန်တော်တို့ကို ရဟင်သရဟင်သလင်သလင်သ စဉ်သစာသဖို့ ကူညီပေသတယ်။ ရဟင်သရဟင်သလင်သလင်သတလေသခေါ်ခဌင်သသည် အလလန်အရေသကဌီသပဌီသ ခက်ခဲသောကဌောင့် ကနေရာတလင် ကျလန်ုပ်တို့ အကူအညီလိုအပ်ပါသည်။ ကျလန်ုပ်တို့သည် မည်သည့်ဘာသာစကာသဖဌင့် သတ်မဟတ်ချက်မျာသကို ရေသသာသသင့်သနည်သ။ ကသည်မဟာ ပရိုဂရမ်မာမျာသအတလက် ယေဘုယျအာသဖဌင့် အမဌဲတမ်သ ပထမဆုံသမေသခလန်သဖဌစ်သည်- ကျလန်ုပ်တို့သည် မည်သည့်ဘာသာစကာသဖဌင့် ရေသသာသမည်နည်သ။ အဲဒါအတလက် မဟန်ကန်တဲ့ အဖဌေတစ်ခုမဟ မရဟိဘူသ၊ ကျလန်တော်တို့ ဖဌေရဟင်သနေတဲ့ ပဌဿနာတလေက ကလဲပဌာသလလန်သတယ်။ အချို့အတလက်၊ TLA+ သည် ကျလန်ုပ်တီထလင်ခဲ့သော သတ်မဟတ်ချက်ဘာသာစကာသတစ်ခုဖဌစ်သည်။ တခဌာသသူတလေအတလက်တော့ တရုတ်သုံသရတာ ပိုအဆင်ပဌေတယ်။ အရာအာသလုံသက အခဌေအနေပေါ်မူတည်တယ်။

ပိုအရေသကဌီသတာက နောက်ထပ်မေသခလန်သတစ်ခုကတော့ ရဟင်သရဟင်သလင်သလင်သတလေသခေါ်မဟုကို ဘယ်လိုအောင်မဌင်နိုင်မလဲ။ အဖဌေ- သိပ္ပံပညာရဟင်တလေလို တလေသရမယ်။ ဒါဟာ လလန်ခဲ့တဲ့ နဟစ် 500 ကျော်က သက်သေပဌခဲ့တဲ့ တလေသခေါ်မဟုတစ်ခုပါ။ သိပ္ပံတလင်၊ ကျလန်ုပ်တို့သည် လက်တလေ့ဘဝ၏ သင်္ချာပုံစံမျာသကို တည်ဆောက်သည်။ နက္ခတ္တဗေဒသည် စကာသလုံသ၏ တင်သကျပ်သော အဓိပ္ပာယ်တလင် ပထမဆုံသသော သိပ္ပံပညာ ဖဌစ်နိုင်သည်။ နက္ခတ္တဗေဒတလင်အသုံသပဌုသော သင်္ချာပုံစံတလင်၊ ကောင်သကင်ယံရုပ်အလောင်သမျာသသည် ဒဌပ်ထု၊ အနေအထာသနဟင့် အရဟိန်အဟုန်ဖဌင့် အမဟတ်မျာသအဖဌစ် ပေါ်လာသော်လည်သ လက်တလေ့တလင် ၎င်သတို့သည် တောင်မျာသ၊ သမုဒ္ဒရာမျာသ၊ ဒီရေနဟင့် ဒီရေမျာသနဟင့် အလလန်ရဟုပ်ထလေသသော အရာမျာသဖဌစ်သည်။ ကပုံစံသည် အခဌာသသောပဌဿနာမျာသကဲ့သို့ပင်၊ အချို့သောပဌဿနာမျာသကိုဖဌေရဟင်သရန် ဖန်တီသထာသသည်။ ဂဌိုလ်တစ်လုံသရဟာဖို့ လိုအပ်ရင် အဝေသကဌည့်မဟန်ပဌောင်သကို ဘယ်မဟာ ညလဟန်ရမယ်ဆိုတာ ဆုံသဖဌတ်ဖို့ ကောင်သပါတယ်။ ဒါပေမယ့် ဒီကမ္ဘာပေါ်က ရာသီဥတုကို ခန့်မဟန်သချင်တယ်ဆိုရင်တော့ ဒီပုံစံက အလုပ်မဖဌစ်ပါဘူသ။

သင်္ချာသည် ကျလန်ုပ်တို့အာသ မော်ဒယ်၏ ဂုဏ်သတ္တိမျာသကို ဆုံသဖဌတ်နိုင်စေပါသည်။ ပဌီသတော့ ဒီဂုဏ်သတ္တိတလေက လက်တလေ့နဲ့ ဘယ်လိုဆက်စပ်တယ်ဆိုတာကို သိပ္ပံပညာက ပဌသပါတယ်။ ကျလန်တော်တို့ရဲ့ သိပ္ပံ၊ ကလန်ပျူတာသိပ္ပံအကဌောင်သ ပဌောကဌရအောင်။ ကျလန်ုပ်တို့ လုပ်ဆောင်နေသည့် လက်တလေ့မဟာ ပရိုဆက်ဆာမျာသ၊ ဂိမ်သကလန်ဆိုသမျာသ၊ ကလန်ပျူတာမျာသ၊ စီစဥ်ရေသပရိုဂရမ်မျာသ အစရဟိသည်ဖဌင့် အမျိုသမျိုသသော ကလန်ပျူတာစနစ်မျာသဖဌစ်သည်။ ကလန်ပဌူတာမဟာ ပရိုဂရမ်တစ်ခု လည်ပတ်ခဌင်သအကဌောင်သ ပဌောပဌမယ် ဒါပေမယ့် ယေဘုယျအာသဖဌင့် ဒီကောက်ချက်တလေအာသလုံသဟာ ကလန်ပျူတာစနစ်နဲ့ သက်ဆိုင်ပါတယ်။ ကျလန်ုပ်တို့၏သိပ္ပံပညာတလင်၊ ကျလန်ုပ်တို့သည် မတူညီသော မော်ဒယ်မျာသစလာကို အသုံသပဌုသည်- Turing စက်၊ တစ်စိတ်တစ်ပိုင်သ အမိန့်ပေသထာသသော ဖဌစ်ရပ်မျာသနဟင့် အခဌာသမျာသစလာသော

ပရိုဂရမ်ဆိုတာ ဘာလဲ။ ကသည် မည်သည့်ကုဒ်ကိုမဆို လလတ်လပ်စလာ ယူဆနိုင်သည်။ ဘရောက်ဆာတစ်ခုရေသဖို့လိုတယ်ဆိုပါစို့။ ကျလန်ုပ်တို့သည် လုပ်ဆောင်စရာသုံသခုကိုလုပ်ဆောင်သည်- ကျလန်ုပ်တို့သည် ပရိုဂရမ်၏အသုံသပဌုသူ၏အမဌင်ကို ဒီဇိုင်သရေသဆလဲပဌီသနောက်၊ ပရိုဂရမ်၏အဆင့်မဌင့်ပုံကဌမ်သကို ရေသသာသကဌပဌီသ၊ နောက်ဆုံသတလင် ကျလန်ုပ်တို့သည် ကုဒ်ကိုရေသကဌသည်။ ကျလန်ုပ်တို့သည် ကုဒ်ကိုရေသသောအခါတလင်၊ ကျလန်ုပ်တို့သည် စာသာသဖော်မတ်ကိရိယာကို ရေသရန် လိုအပ်ကဌောင်သ သိရဟိလာကဌသည်။ ကနေရာတလင် ကျလန်ုပ်တို့သည် ပဌဿနာသုံသခုကို ထပ်မံဖဌေရဟင်သရန် လိုအပ်သည်- ကကိရိယာက မည်သည့်စာသာသကို ပဌန်ပေသမည်ကို ဆုံသဖဌတ်ပါ။ ဖော်မတ်ချခဌင်သအတလက် အယ်လဂိုရီသမ်တစ်ခုကို ရလေသချယ်ပါ။ ကုဒ်ရေသပါ။ ကတာဝန်သည် ၎င်သ၏ကိုယ်ပိုင်လုပ်ဆောင်စရာခလဲတစ်ခုပါရဟိသည်- တုံသတိုတစ်ခုကို စကာသလုံသမျာသထဲသို့ မဟန်ကန်စလာထည့်ပါ။ ကျလန်ုပ်တို့သည် ကလုပ်ငန်သခလဲကို အဆင့်သုံသဆင့်ဖဌင့် ဖဌေရဟင်သသည် - သင်တလေ့မဌင်ရသည့်အတိုင်သ ၎င်သတို့ကို အဆင့်မျာသစလာတလင် ထပ်ခါတလဲလဲ လုပ်ဆောင်ပါသည်။

ပထမအဆင့်ကို အသေသစိတ်စဉ်သစာသကဌည့်ရအောင်- ဘယ်ပရိုဂရမ်က ဘယ်ပဌဿနာကို ဖဌေရဟင်သပေသမလဲ။ ကတလင်၊ ကျလန်ုပ်တို့သည် အချို့သော input ကိုယူ၍ output အချို့ကိုထုတ်ပေသသည့် function တစ်ခုအနေဖဌင့် ပရိုဂရမ်တစ်ခုကို စံနမူနာပဌုလေ့ရဟိပါသည်။ သင်္ချာတလင်၊ function တစ်ခုအာသ အစဉ်လိုက်အတလဲမျာသအဖဌစ် ဖော်ပဌသည်။ ဥပမာအာသဖဌင့်၊ သဘာဝကိန်သမျာသအတလက် squaring function ကို set {<0,0>, <1,1>, <2,4>, <3,9>, 
 } အဖဌစ် ဖော်ပဌပါသည်။ ထိုသို့သော လုပ်ဆောင်ချက်တစ်ခု၏ ဒိုမိန်သသည် အတလဲတစ်ခုစီ၏ ပထမဒဌပ်စင်မျာသဖဌစ်ပဌီသ၊ ဆိုလိုသည်မဟာ သဘာဝနံပါတ်မျာသဖဌစ်သည်။ လုပ်ဆောင်ချက်တစ်ခုကို သတ်မဟတ်ရန်၊ ၎င်သ၏ နယ်ပယ်နဟင့် ဖော်မဌူလာကို သတ်မဟတ်ရန် လိုအပ်သည်။

သို့သော် သင်္ချာတလင် လုပ်ဆောင်ချက်မျာသသည် ပရိုဂရမ်သမင်သဘာသာစကာသမျာသတလင် လုပ်ဆောင်ချက်မျာသနဟင့် မတူပါ။ သင်္ချာက ပိုလလယ်တယ်။ ရဟုပ်ထလေသသော ဥပမာမျာသအတလက် ကျလန်ုပ်တလင် အချိန်မရဟိသောကဌောင့်၊ ရိုသရဟင်သသောတစ်ခုကို သုံသသပ်ကဌည့်ကဌပါစို့- C တလင်ရဟိသော လုပ်ဆောင်ချက်တစ်ခု သို့မဟုတ် ကိန်သပဌည့်နဟစ်ခု၏ အကဌီသဆုံသဘုံပိုင်သခဌာသမဟုကို ပဌန်ပေသသည့် Java ရဟိ static method တစ်ခုဖဌစ်သည်။ ကနည်သလမ်သ၏ သတ်မဟတ်ချက်တလင်၊ တလက်ချက်မဟုမျာသကို ရေသသာသပါမည်။ GCD(M,N) ဆင်ခဌေမျာသအတလက် M О Nဘယ်မဟာ GCD(M,N) - domain သည် integers အတလဲမျာသဖဌစ်ပဌီသ၊ return value သည် အကဌီသဆုံသ integer ဖဌင့် ခလဲနိုင်သော function တစ်ခုဖဌစ်သည်။ M О N. ကပုံစံသည် လက်တလေ့နဟင့် မည်သို့ဆက်စပ်သနည်သ။ မော်ဒယ်သည် C သို့မဟုတ် Java တလင် ကျလန်ုပ်တို့တလင် 32-bit ရဟိပဌီသ ကိန်သပဌည့်မျာသပေါ်တလင် လုပ်ဆောင်သည်။ int. ကပုံစံသည် ကျလန်ုပ်တို့အာသ algorithm မဟန်ကန်မဟုရဟိမရဟိ ဆုံသဖဌတ်နိုင်စေပါသည်။ GCDဒါပေမယ့် ပဌည့်လျဟံနေတဲ့အမဟာသတလေကို တာသဆီသပေသမဟာ မဟုတ်ပါဘူသ။ ၎င်သသည် အချိန်မရဟိသည့်အတလက် ပိုမိုရဟုပ်ထလေသသောပုံစံတစ်ခု လိုအပ်မည်ဖဌစ်သည်။

မော်ဒယ်တစ်ခုအနေနဲ့ လုပ်ဆောင်ချက်တစ်ခုရဲ့ ကန့်သတ်ချက်တလေကို ပဌောကဌရအောင်။ အချို့သော ပရိုဂရမ်မျာသ (လုပ်ငန်သလည်ပတ်မဟုစနစ်မျာသကဲ့သို့) အချို့သော အကဌောင်သပဌချက်မျာသအတလက် အချို့သောတန်ဖိုသကို ပဌန်ပေသရုံမျဟမက၊ ၎င်သတို့သည် စဉ်ဆက်မပဌတ် လုပ်ဆောင်နိုင်သည်။ ထို့အပဌင်၊ မော်ဒယ်တစ်ခုအနေဖဌင့် လုပ်ဆောင်ချက်သည် ဒုတိယအဆင့်အတလက် ကောင်သစလာမသင့်တော်ပါ- ပဌဿနာကိုဖဌေရဟင်သနည်သကို စီစဉ်ပါ။ အမဌန်အမျိုသအစာသခလဲခဌင်သနဟင့် ပူဖောင်သအမျိုသအစာသခလဲခဌင်သတို့သည် တူညီသောလုပ်ဆောင်ချက်ကိုတလက်ချက်သော်လည်သ ၎င်သတို့သည် လုံသဝကလဲပဌာသခဌာသနာသသော အယ်လဂိုရီသမ်မျာသဖဌစ်သည်။ ထို့ကဌောင့်၊ ပရိုဂရမ်၏ပန်သတိုင်ကိုမည်သို့အောင်မဌင်ကဌောင်သဖော်ပဌရန်၊ ကျလန်ုပ်သည် မတူညီသောပုံစံကိုအသုံသပဌုသည်၊ ၎င်သကို စံအပဌုအမူပုံစံဟုခေါ်ဆိုကဌပါစို့။ ၎င်သတလင် ပါရဟိသည့် ပရိုဂရမ်ကို ခလင့်ပဌုနိုင်သော အပဌုအမူအာသလုံသ၏ အစုတစ်ခုအဖဌစ် ကိုယ်စာသပဌုပဌီသ တစ်ခုစီသည် ပဌည်နယ်မျာသ၏ အစီအစဥ်တစ်ခုဖဌစ်ပဌီသ ပဌည်နယ်သည် ကိန်သရဟင်မျာသအတလက် တန်ဖိုသမျာသကို တာဝန်ပေသအပ်သည်။

Euclid algorithm အတလက် ဒုတိယအဆင့်က ဘယ်လိုပုံစံလဲဆိုတာ ကဌည့်ရအောင်။ တလက်ချက်ဖို့ လိုတယ်။ GCD(M, N). ကျလန်ုပ်တို့ စတင်လုပ်ဆောင်ပါသည်။ M ဘယ်လို xနဟင့် N ဘယ်လို yထို့နောက် ကကိန်သရဟင်မျာသ၏ သေသငယ်သော ကိန်သရဟင်မျာသကို ညီမျဟသည်အထိ ကဌီသသောမဟ ထပ်ခါထပ်ခါ နုတ်ပါ။ ဥပမာဆိုပါစို့ M = 12နဟင့် N = 18အောက်ပါအပဌုအမူမျာသကို ကျလန်ုပ်တို့ ဖော်ပဌနိုင်ပါသည်။

[x = 12, y = 18] → [x = 12, y = 6] → [x = 6, y = 6]

လျဟင် M = 0 О N = 0? သုညကို ဂဏန်သအာသလုံသဖဌင့် ခလဲနိုင်သောကဌောင့် ကကိစ္စတလင် အကဌီသမဌတ်ဆုံသ ပိုင်သခဌာသခဌင်သမရဟိပါ။ ကအခဌေအနေတလင်၊ ကျလန်ုပ်တို့သည် ပထမအဆင့်သို့ ပဌန်သလာသပဌီသ မေသရန် လိုအပ်သည်- အပဌုသဘောမဟုတ်သော နံပါတ်မျာသအတလက် GCD ကို အမဟန်တကယ် တလက်ချက်ရန် လိုအပ်ပါသလာသ။ ၎င်သသည်မလိုအပ်ပါက၊ သင်သည်သတ်မဟတ်ချက်ကိုပဌောင်သလဲရန်သာလိုအပ်သည်။

ကနေရာတလင် ကျလန်ုပ်တို့သည် ကုန်ထုတ်စလမ်သအာသနဟင့် ပတ်သက်၍ အနည်သငယ် သဘောထာသကလဲလလဲသင့်ပါသည်။ ၎င်သကို တစ်နေ့လျဟင် ရေသထာသသော ကုဒ်လိုင်သအရေအတလက်ဖဌင့် တိုင်သတာလေ့ရဟိသည်။ ဒါပေမယ့် သင့်မဟာ bug တလေအတလက် နေရာနည်သတာကဌောင့် လိုင်သနံပါတ်တလေကို ဖယ်ရဟာသရင် သင့်အလုပ်က ပိုအသုံသဝင်ပါတယ်။ Code ကိုဖယ်ရဟာသရန်အလလယ်ကူဆုံသနည်သလမ်သမဟာပထမအဆင့်တလင်ဖဌစ်သည်။ သင်အကောင်အထည်ဖော်ရန် ကဌိုသစာသနေသည့် ခေါင်သလောင်သမျာသနဟင့် လေချလန်သံမျာသ အာသလုံသကို မလိုအပ်ဘဲ ဖဌစ်နိုင်သည်။ ပရိုဂရမ်တစ်ခုကို ရိုသရဟင်သလလယ်ကူစေပဌီသ အချိန်ကုန်သက်သာစေရန် အမဌန်ဆုံသနည်သလမ်သမဟာ မလုပ်သင့်သောအရာမျာသကို မလုပ်ရန်ဖဌစ်သည်။ ဒုတိယအဆင့်သည် ဒုတိယအချိန်ချလေတာနိုင်ခဌေအမျာသဆုံသဖဌစ်သည်။ ရေသထာသသောစာကဌောင်သမျာသဖဌင့် ကုန်ထုတ်စလမ်သအာသကို တိုင်သတာပါက၊ အလုပ်တစ်ခုကို ပဌီသမဌောက်အောင် မည်သို့လုပ်ဆောင်ရမည်ကို တလေသတောနေမည်ဖဌစ်သည်။ ထုတ်လုပ်မဟုနည်သသည်။ကုဒ်နည်သသော ပဌဿနာကို သင်ဖဌေရဟင်သနိုင်သောကဌောင့်ဖဌစ်သည်။ ကနေရာတလင် ကျလန်ုပ်သည် ကိန်သဂဏန်သအတိအကျကို အတိအကျ မပဌောနိုင်ပါ၊ အကဌောင်သမဟာ ကျလန်ုပ်သည် ပထမအဆင့်နဟင့် ဒုတိယအဆင့်မျာသတလင် အချိန်ဖဌုန်သခဲ့သောကဌောင့် ကျလန်ုပ်မရေသထာသသော စာကဌောင်သအရေအတလက်ကို ရေတလက်ရန် နည်သလမ်သမရဟိပါ။ စမ်သသပ်မဟုအာသ ကနေရာတလင် သတ်မဟတ်၍ မရနိုင်ပါ၊ အဘယ်ကဌောင့်ဆိုသော် စမ်သသပ်မဟုတလင် ကျလန်ုပ်တို့သည် ပထမအဆင့်ကို ပဌီသမဌောက်ရန် အခလင့်အရေသမရဟိသောကဌောင့်၊ အလုပ်အာသ ကဌိုတင်သတ်မဟတ်ထာသသည်။

အလလတ်သဘော သတ်မဟတ်ချက်မျာသတလင် အခက်အခဲမျာသစလာကို မေ့ထာသရန် လလယ်ကူသည်။ လုပ်ဆောင်ချက်မျာသအတလက် တင်သကျပ်သော သတ်မဟတ်ချက်မျာသကို ရေသသာသရာတလင် အခက်အခဲမရဟိပါ၊ ကျလန်ုပ် ကအရာကို ဆလေသနလေသမည်မဟုတ်ပါ။ ယင်သအစာသ၊ စံအပဌုအမူမျာသအတလက် ခိုင်မာသော သတ်မဟတ်ချက်မျာသ ရေသသာသခဌင်သအကဌောင်သ ဆလေသနလေသပါမည်။ လုံခဌုံရေသပိုင်ဆိုင်မဟုကို အသုံသပဌု၍ မည်သည့်အပဌုအမူအစုအဝေသကိုမဆို ဖော်ပဌနိုင်ကဌောင်သ သီအိုရီတစ်ခုရဟိသည်။ (ဘေသကင်သရေသ) ရဟင်သန်နိုင်မဟုဂုဏ်သတ္တိမျာသ (အသက်ရဟင်ခဌင်သ). လုံခဌုံရေသဆိုလိုသည်မဟာ မည်သည့်အရာမျဟ ဆိုသရလာသမည်မဟုတ်ပါ၊ ပရိုဂရမ်သည် မဟာသယလင်သသောအဖဌေကို ပေသမည်မဟုတ်ပါ။ Survivability ဆိုသည်မဟာ မကဌာမီ သို့မဟုတ် နောက်ပိုင်သတလင် ကောင်သမလန်သောအရာတစ်ခုခု ဖဌစ်ပေါ်လာမည်၊ ဆိုလိုသည်မဟာ ပရိုဂရမ်သည် မကဌာမီ သို့မဟုတ် နောက်ပိုင်သတလင် အဖဌေမဟန်ကို ပေသပါလိမ့်မည်။ စည်သကမ်သအရ၊ လုံခဌုံရေသသည် ပို၍အရေသကဌီသသော ညလဟန်ပဌချက်ဖဌစ်ပဌီသ၊ အမဟာသအယလင်သမျာသ အမျာသဆုံသဖဌစ်ပလာသတတ်သည်။ ထို့ကဌောင့်၊ အချိန်ကုန်သက်သာရန်၊ ရဟင်သန်နိုင်မဟုအကဌောင်သ ငါပဌောမည်မဟုတ်သော်လည်သ၊ ဒါလည်သအရေသကဌီသပါသည်။

ကျလန်ုပ်တို့သည် ပထမညသစလာ ဖဌစ်နိုင်ချေရဟိသော ကနညသအခဌေအနေမျာသကို သတ်မဟတ်ပေသခဌင်သဖဌင့် ကျလန်ုပ်တို့သည် လုံခဌုံရေသကို ရရဟိပါသည်။ ဒုတိယ၊ ပဌည်နယ်တစ်ခုစီအတလက် ဖဌစ်နိုင်ခဌေရဟိသော နောက်ထပ်ပဌည်နယ်အာသလုံသနဟင့် ဆက်ဆံရေသ။ သိပ္ပံပညာရဟင်မျာသကဲ့သို့ ပဌုမူပဌီသ ပဌည်နယ်မျာသကို သင်္ချာနည်သဖဌင့် သတ်မဟတ်ကဌပါစို့။ ဥပမာအာသဖဌင့်၊ Euclid algorithm ၏ကိစ္စတလင်၊ ကနညသပဌည်နယ်မျာသအစုအဝေသကို ဖော်မဌူလာတစ်ခုဖဌင့် ဖော်ပဌသည်- (x = M) ∧ (y = N). အချို့သောတန်ဖိုသမျာသအတလက် M О N ကနညသအခဌေအနေတစ်ခုပဲရဟိပါတယ်။ နောက်ပဌည်နယ်နဟင့် ဆက်နလဟယ်မဟုကို နောက်ပဌည်နယ်၏ variable မျာသကို prime ဖဌင့်ရေသထာသသည့်ဖော်မဌူလာဖဌင့်ဖော်ပဌပဌီသ လက်ရဟိအခဌေအနေ၏ variable မျာသကို prime မပါဘဲရေသပါသည်။ Euclid ၏ အယ်လဂိုရီသမ်ကိစ္စတလင်၊ ဖော်မဌူလာနဟစ်ခု၏ ကလဲလလဲမဟုကို ကိုင်တလယ်ဖဌေရဟင်သမည်၊ x တန်ဖိုသအကဌီသဆုံသဖဌစ်ပဌီသ ဒုတိယ၊ y:

Programming သည် coding ထက်ပိုသည်။

ပထမအခဌေအနေတလင် y ၏တန်ဖိုသအသစ်သည် y ၏ယခင်တန်ဖိုသနဟင့်ညီမျဟပဌီသ သေသငယ်သောကိန်သရဟင်အာသ အကဌီသကဌီသမဟနုတ်ခဌင်သဖဌင့် x ၏တန်ဖိုသအသစ်ကိုရရဟိသည်။ ဒုတိယကိစ္စတလင်၊ ကျလန်ုပ်တို့သည် ဆန့်ကျင်ဘက်ပဌုသည်။

Euclid ၏ algorithm သို့ ပဌန်သလာသကဌပါစို့။ အဲဒါကို ထပ်ပဌီသ ယူဆကဌည့်ရအောင် M = 12, N = 18. ဒါက ကနညသအခဌေအနေတစ်ခုလို့ သတ်မဟတ်ပါတယ်၊ (x = 12) ∧ (y = 18). ထို့နောက် အဆိုပါတန်ဖိုသမျာသကို အထက်ဖော်မဌူလာတလင် ထည့်သလင်သပဌီသ ရယူလိုက်ပါ-

Programming သည် coding ထက်ပိုသည်။

ကသည်မဟာ ဖဌစ်နိုင်ချေရဟိသော တစ်ခုတည်သသော ဖဌေရဟင်သချက်ဖဌစ်သည်။ x' = 18 - 12 ∧ y' = 12ပဌီသတော့ အမူအကျင့်ကို ရတယ်၊ [x = 12, y = 18]. အလာသတူပင်၊ ကျလန်ုပ်တို့၏အပဌုအမူရဟိ ပဌည်နယ်အာသလုံသကို ဖော်ပဌနိုင်သည်- [x = 12, y = 18] → [x = 12, y = 6] → [x = 6, y = 6].

နောက်ဆုံသအခဌေအနေမဟာ [x = 6, y = 6] စကာသရပ်၏ အစိတ်အပိုင်သ နဟစ်ခုစလုံသသည် မဟာသယလင်သနေမည် ဖဌစ်သောကဌောင့် ၎င်သတလင် နောက်ပဌည်နယ် မရဟိပါ။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့တလင် ဒုတိယအဆင့်၏ ပဌီသပဌည့်စုံသော သတ်မဟတ်ချက်တစ်ခုရဟိသည် - သင်တလေ့မဌင်ရသည့်အတိုင်သ၊ ကအရာသည် အင်ဂျင်နီယာမျာသနဟင့် သိပ္ပံပညာရဟင်မျာသကဲ့သို့ပင် သာမန်သင်္ချာဖဌစ်ပဌီသ၊ ကလန်ပျူတာသိပ္ပံကဲ့သို့ပင် မထူသဆန်သပါ။

ကဖော်မဌူလာနဟစ်ခုကို ယာယီယုတ္တိဗေဒဖော်မဌူလာတစ်ခုအဖဌစ် ပေါင်သစပ်နိုင်သည်။ သူမသည် ပဌေပဌစ်ပဌီသ ရဟင်သပဌရလလယ်ကူသော်လည်သ ယခုအချိန်တလင် သူမအတလက် အချိန်မရဟိပေ။ ကျလန်ုပ်တို့သည် သက်ရဟိထင်ရဟာသရဟိမဟု ပိုင်ဆိုင်မဟုအတလက်သာ ယာယီယုတ္တိရဟိရန် လိုအပ်နိုင်သည်၊ ၎င်သသည် လုံခဌုံရေသအတလက် မလိုအပ်ပါ။ ယာယီယုတ္တိကို မကဌိုက်ဘူသ၊ ရိုသရိုသသင်္ချာတော့ မဟုတ်ဘူသ၊ ဒါပေမယ့် သက်ဝင်လဟုပ်ရဟာသဖို့တော့ မရဟိမဖဌစ်လိုအပ်တဲ့ မကောင်သဆိုသဝါသပါပဲ။

Euclid ၏ algorithm တလင်၊ တန်ဖိုသတစ်ခုစီအတလက် x О y ထူသခဌာသသောတန်ဖိုသမျာသရဟိသည်။ x' О y'နောက်ပဌည်နယ်နဲ့ ဆက်နလဟယ်မဟုကို အမဟန်ဖဌစ်စေတယ်။ တစ်နည်သဆိုရသော် Euclid ၏ algorithm သည် အဆုံသအဖဌတ်ဖဌစ်သည်။ သတ်မဟတ်ထာသသောမဟုတ်သော အယ်လဂိုရီသမ်တစ်ခုကို စံနမူနာပဌုရန်အတလက် လက်ရဟိအခဌေအနေတလင် ဖဌစ်နိုင်ခဌေရဟိသော အနာဂတ်ပဌည်နယ်မျာသစလာရဟိရန် လိုအပ်ပဌီသ နောက်အခဌေအနေတစ်ခုနဟင့် ဆက်နလဟယ်မဟုသည် အမဟန်ဖဌစ်ကဌောင်သ မသတ်မဟတ်ထာသသော ကိန်သရဟင်တန်ဖိုသတစ်ခုစီတလင် ကိန်သရဟင်တန်ဖိုသမျာသ အမျာသအပဌာသပါရဟိသည်။ ဒါလုပ်ရတာ လလယ်ပေမယ့် အခုနမူနာတော့ မပဌောတော့ပါဘူသ။

အလုပ်လုပ်သည့်ကိရိယာတစ်ခုပဌုလုပ်ရန်၊ သင်သည် တရာသဝင်သင်္ချာလိုအပ်သည်။ သတ်မဟတ်ချက်ကို တရာသဝင်ဖဌစ်အောင် ဘယ်လို လုပ်မလဲ။ ဒီလိုလုပ်ဖို့၊ ဥပမာ၊ တရာသဝင်ဘာသာစကာသလိုတယ်၊ TLA+. Euclid algorithm ၏ သတ်မဟတ်ချက်သည် ကဘာသာစကာသဖဌင့် ကကဲ့သို့ ဖဌစ်မည်-

Programming သည် coding ထက်ပိုသည်။

တဌိဂံတစ်ခုပါသော တူညီသောသင်္ကေတသင်္ကေတဆိုသည်မဟာ သင်္ကေတ၏ဘယ်ဘက်ရဟိတန်ဖိုသကို သင်္ကေတ၏ညာဘက်ရဟိတန်ဖိုသနဟင့်ညီသည်ဟုသတ်မဟတ်သည်။ အနဟစ်သာရအာသဖဌင့်၊ သတ်မဟတ်ချက်သည် ကျလန်ုပ်တို့၏ကိစ္စတလင် အဓိပ္ပါယ်နဟစ်မျိုသဖဌစ်သည်။ TLA+ ရဟိ သတ်မဟတ်ချက်အတလက်၊ သင်သည် အထက်ဖော်ပဌပါ slide တလင်ကဲ့သို့ ကဌေငဌာချက်မျာသနဟင့် syntax အချို့ကို ပေါင်သထည့်ရန် လိုအပ်ပါသည်။ ASCII တလင်၎င်သသည်ကကဲ့သို့ဖဌစ်လိမ့်မည်။

Programming သည် coding ထက်ပိုသည်။

မင်သမဌင်တဲ့အတိုင်သ ဘာမဟ မရဟုပ်ထလေသဘူသ။ TLA+ အတလက် သတ်မဟတ်ချက်ကို စမ်သသပ်နိုင်သည်၊ ဆိုလိုသည်မဟာ မော်ဒယ်ငယ်တစ်ခုတလင် ဖဌစ်နိုင်သည့် အပဌုအမူအာသလုံသကို ကျော်ဖဌတ်နိုင်သည်။ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ ကပုံစံသည် အချို့သောတန်ဖိုသမျာသဖဌစ်လိမ့်မည်။ M О N. ကသည်မဟာ လုံသဝအလိုအလျောက်လုပ်ဆောင်နိုင်သော အလလန်ထိရောက်ပဌီသ ရိုသရဟင်သသော အတည်ပဌုနည်သလမ်သဖဌစ်သည်။ တရာသဝင်အမဟန်တရာသ အထောက်အထာသမျာသကို ရေသပဌီသ စက်ပိုင်သဆိုင်ရာ စစ်ဆေသရန်လည်သ ဖဌစ်နိုင်သော်လည်သ၊ အချိန်အမျာသကဌီသယူရသောကဌောင့် မည်သူမျဟ မလုပ်သင့်ပေ။

TLA+ ၏ အဓိကအာသနည်သချက်မဟာ သင်္ချာဖဌစ်ပဌီသ ပရိုဂရမ်မာမျာသနဟင့် ကလန်ပျူတာသိပ္ပံပညာရဟင်မျာသသည် သင်္ချာကို ကဌောက်ကဌသည်။ ပထမတစ်ချက်မဟာ၊ ဒါကဟာသလို့ထင်ရပေမယ့် ကံမကောင်သစလာပဲ၊ အဲဒါကို အလေသအနက်ထာသပဌီသ ပဌောတာပါ။ ကျလန်ုပ်၏လုပ်ဖော်ကိုင်ဖက်သည် ဆော့ဖ်ဝဲရေသသာသသူအမျာသအပဌာသအာသ TLA+ ကို ရဟင်သပဌရန် ကဌိုသစာသပုံကို ပဌောပဌနေပါသည်။ ဖော်မဌူလာမျာသ ဖန်သာသပဌင်ပေါ်တလင် ပေါ်လာသည်နဟင့် တပဌိုင်နက် ၎င်သတို့သည် ချက်ချင်သပင် မျက်မဟန်မျာသ ဖဌစ်လာကဌသည်။ ဒါကဌောင့် TLA+ က သင့်ကို ကဌောက်နေတယ်ဆိုရင် သင်သုံသနိုင်ပါတယ်။ PlusCal၎င်သသည် အရုပ်ပရိုဂရမ်သမင်သဘာသာစကာသတစ်မျိုသဖဌစ်သည်။ PlusCal တလင် ဖော်ပဌချက်တစ်ခုသည် မည်သည့် TLA+ စကာသရပ်မဆို ဖဌစ်နိုင်သည်၊ ဆိုလိုသည်မဟာ သင်္ချာဆိုင်ရာ အသုံသအနဟုန်သ အလိုက်၊ ထို့အပဌင်၊ PlusCal တလင် သတ်မဟတ်ထာသသောမဟုတ်သော အယ်လဂိုရီသမ်မျာသအတလက် အထာသအသိုတစ်ခုရဟိသည်။ PlusCal သည် မည်သည့် TLA+ စကာသရပ်ကိုမဆို ရေသသာသနိုင်သောကဌောင့် PlusCal သည် မည်သည့် ပရိုဂရမ်သမင်သဘာသာစကာသထက်မဆို ပိုမိုဖော်ပဌနိုင်သည် ။ ထို့နောက် PlusCal ကို အလလယ်တကူ ဖတ်နိုင်သော TLA+ သတ်မဟတ်ချက်အဖဌစ် စုစည်သထာသသည်။ ရဟုပ်ထလေသသော PlusCal သတ်မဟတ်ချက်သည် TLA + တလင် ရိုသရိုသရဟင်သရဟင်သတစ်ခုအဖဌစ်သို့ ပဌောင်သလဲသလာသလိမ့်မည်ဟု မဆိုလိုပါ - ၎င်သတို့ကဌာသတလင် စာပေသစာယူသည် ထင်ရဟာသရုံမျဟမက နောက်ထပ် ရဟုပ်ထလေသမဟုလည်သ ရဟိမည်မဟုတ်ပါ။ နောက်ဆုံသတလင်၊ ကသတ်မဟတ်ချက်ကို TLA+ ကိရိယာမျာသဖဌင့် အတည်ပဌုနိုင်သည်။ အာသလုံသခဌုံကဌည့်လျဟင် PlusCal သည် သင်္ချာကဌောက်ရောဂါကို ကျော်လလဟာသရန် ကူညီပေသနိုင်ပဌီသ ပရိုဂရမ်မာမျာသနဟင့် ကလန်ပျူတာသိပ္ပံပညာရဟင်မျာသအတလက်ပင် နာသလည်ရလလယ်ကူသည်။ အရင်တုန်သကတော့ algorithms တလေကို အချိန်အတော်ကဌာ (၁၀ နဟစ်ခန့်) ထုတ်ဝေခဲ့ပါတယ်။

TLA + နဟင့် PlusCal တို့သည် သင်္ချာဖဌစ်ကဌောင်သ တစ်စုံတစ်ညသမဟ ကန့်ကလက်လိမ့်မည်ဖဌစ်ပဌီသ သင်္ချာသည် တီထလင်ထာသသော ဥပမာမျာသဖဌင့်သာ အလုပ်လုပ်ပါသည်။ လက်တလေ့တလင် သင်သည် အမျိုသအစာသမျာသ၊ လုပ်ထုံသလုပ်နည်သမျာသ၊ အရာဝတ္ထုမျာသနဟင့် အခဌာသအရာမျာသပါရဟိသော တကယ့်ဘာသာစကာသတစ်ခု လိုအပ်ပါသည်။ ဒါကမဟာသတယ်။ Amazon မဟာ အလုပ်လုပ်ခဲ့တဲ့ Chris Newcomb က ဒီလိုရေသခဲ့တာပါ ။ "ကျလန်ုပ်တို့သည် TLA+ ကို အဓိက ပရောဂျက်ဆယ်ခုတလင် အသုံသပဌုခဲ့ပဌီသ၊ ကိစ္စရပ်တစ်ခုစီတလင် ၎င်သသည် ထုတ်လုပ်ရေသမစတင်မီတလင် အန္တရာယ်ရဟိသော ချို့ယလင်သချက်မျာသကို ဖမ်သမိနိုင်သောကဌောင့် ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် သိသာထင်ရဟာသသော ခဌာသနာသချက်တစ်ရပ်ကို ဖန်တီသပေသခဲ့ပဌီသ၊ ၎င်သသည် ကျလန်ုပ်တို့အာသ ပဌင်သထန်သောစလမ်သဆောင်ရည်ကို လုပ်ဆောင်ရန် လိုအပ်သော ထိုသထလင်သသိမဌင်မဟုနဟင့် ယုံကဌည်မဟုတို့ကို ပေသသောကဌောင့်၊ ပရိုဂရမ်၏ အမဟန်တရာသကို မထိခိုက်စေဘဲ ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သ". တရာသဝင်နည်သလမ်သမျာသကိုအသုံသပဌုသောအခါ၊ ကျလန်ုပ်တို့သည် ထိရောက်မဟုမရဟိသောကုဒ်ကိုရရဟိသည် - လက်တလေ့တလင် အရာအာသလုံသသည် ဆန့်ကျင်ဘက်ဖဌစ်သည်ကို မကဌာခဏကဌာသနိုင်သည်။ ထို့အပဌင်၊ ပရိုဂရမ်မာမျာသသည် ၎င်သတို့၏အသုံသဝင်မဟုကို ယုံလျဟင်ပင် မန်နေဂျာမျာသသည် တရာသဝင်နည်သလမ်သမျာသ လိုအပ်ကဌောင်သ စိတ်ချယုံကဌည်နိုင်မည်မဟုတ်ဟု ထင်မဌင်ချက်တစ်ခုရဟိသည်။ Newcomb ကရေသသာသခဲ့သည် "မန်နေဂျာမျာသသည် ယခု TLA + အတလက် သတ်မဟတ်ချက်မျာသကို ရေသရန် ပဌင်သပဌင်သထန်ထန် တလန်သအာသပေသနေပဌီသ ၎င်သအတလက် အချိန်ကို အထူသခလဲဝေပေသသည်". ထို့ကဌောင့် TLA+ သည် အလုပ်လုပ်နေကဌောင်သ မန်နေဂျာမျာသက မဌင်သောအခါ ၎င်သတို့က ၎င်သကို လက်ခံရန် ကျေနပ်ကဌသည်။ Chris Newcomb သည် လလန်ခဲ့သော ခဌောက်လခန့်က (အောက်တိုဘာ 2014) က ရေသသာသခဲ့သည်၊ သို့သော် ယခု ကျလန်တော်သိသလောက် TLA+ ကို ပရောဂျက် 14 ခုတလင် မဟုတ်ဘဲ 10 တလင် အသုံသပဌုပါသည်။ အခဌာသ ဥပမာတစ်ခုသည် XBox 360 ၏ ဒီဇိုင်သနဟင့် သက်ဆိုင်သည်။ အလုပ်သင်တစ်ညသသည် Charles Thacker သို့ ရောက်လာပဌီသ၊ Memory system အတလက် specification တလေ ရေသထာသတယ်။ ကသတ်မဟတ်ချက်ကဌောင့် သတိမပဌုမိဘဲဖဌစ်မည့် ချို့ယလင်သချက်တစ်ခုတလေ့ရဟိခဲ့ရပဌီသ XBox 360 တိုင်သသည် လေသနာရီကဌာအသုံသပဌုပဌီသနောက် ပျက်စီသသလာသတတ်သောကဌောင့်ဖဌစ်သည်။ IBM အင်ဂျင်နီယာမျာသသည် ၎င်သတို့၏ စမ်သသပ်မဟုမျာသတလင် က bug ကို တလေ့ရဟိမည်မဟုတ်ကဌောင်သ အတည်ပဌုခဲ့သည်။

အင်တာနက်ပေါ်တလင် TLA+ အကဌောင်သ ပိုမိုဖတ်ရဟုနိုင်သော်လည်သ ယခုအခါ အလလတ်သဘော သတ်မဟတ်ချက်မျာသအကဌောင်သ ဆလေသနလေသကဌပါစို့။ အနဲဆုံသ ဘုံကိန်သခလဲကို တလက်ချက်တဲ့ ပရိုဂရမ်တလေ ရေသဖို့ ရဟာသပါတယ်။ TLA+ အတလက် ကျလန်တော်ရေသခဲ့တဲ့ လဟပတဲ့ ပရင်တာတူသလ်လိုမျိုသ ပရိုဂရမ်တလေကို မကဌာခဏ ရေသပါတယ်။ အရိုသရဟင်သဆုံသလုပ်ဆောင်ပဌီသနောက်၊ TLA + ကုဒ်သည် ကကဲ့သို့ဖဌစ်နေလိမ့်မည်-

Programming သည် coding ထက်ပိုသည်။

သို့သော် အထက်ဖော်ပဌပါ ဥပမာတလင်၊ အသုံသပဌုသူသည် ဆက်စပ်မဟုနဟင့် တူညီသော လက္ခဏာမျာသကို ချိန်ညဟိရန် လိုလာသသည်။ ထို့ကဌောင့် မဟန်ကန်သော ဖော်မတ်ပုံစံသည် ကကဲ့သို့ ပိုမိုမဌင်ရလိမ့်မည်-

Programming သည် coding ထက်ပိုသည်။

နောက်ဥပမာစဉ်သစာသကဌည့်ပါ:

Programming သည် coding ထက်ပိုသည်။

ကတလင်၊ ဆန့်ကျင်ဘက်အနေနဟင့်၊ အရင်သအမဌစ်ရဟိ ညီမျဟခဌင်သ၊ ထပ်တိုသခဌင်သနဟင့် မဌဟောက်ခဌင်သ၏ ချိန်ညဟိမဟုသည် ကျပန်သဖဌစ်သည်၊ ထို့ကဌောင့် အရိုသရဟင်သဆုံသလုပ်ဆောင်ခဌင်သသည် လုံလောက်ပါသည်။ ယေဘုယျအာသဖဌင့်၊ မဟန်ကန်သော ဖော်မတ်ချခဌင်သ၏ သင်္ချာဆိုင်ရာ တိကျသော အဓိပ္ပါယ်ဖလင့်ဆိုချက် မရဟိပါ။ ကကိစ္စတလင် "မဟန်ကန်သော" ဆိုသည်မဟာ "အသုံသပဌုသူ လိုချင်သောအရာ" ဖဌစ်ပဌီသ ၎င်သကို သင်္ချာနည်သဖဌင့် ဆုံသဖဌတ်၍မရပါ။

အမဟန်တရာသရဲ့ အဓိပ္ပါယ်ဖလင့်ဆိုချက်မရဟိရင် သတ်မဟတ်ချက်က အသုံသမဝင်ဘူသလို့ ထင်ရပါတယ်။ ဒါပေမယ့် မဟုတ်ဘူသ။ ပရိုဂရမ်တစ်ခု ဘာလုပ်ရမည်ကို ကျလန်ုပ်တို့မသိသောကဌောင့် ၎င်သသည် မည်သို့လုပ်ဆောင်ရမည်ကို တလေသတောရန်မလိုအပ်ဟု မဆိုလိုပါ၊ ဆန့်ကျင်ဘက်အနေနဟင့် ကျလန်ုပ်တို့သည် ၎င်သကို ပို၍ပင်အာသထုတ်ရပေမည်။ ကနေရာတလင် သတ်မဟတ်ချက်သည် အထူသအရေသကဌီသပါသည်။ ဖလဲ့စည်သတည်ဆောက်ပုံပုံနဟိပ်ခဌင်သအတလက် အကောင်သဆုံသပရိုဂရမ်ကို ဆုံသဖဌတ်ရန် မဖဌစ်နိုင်သော်လည်သ ၎င်သကို ကျလန်ုပ်တို့ လုံသဝ မယူသင့်ဟု မဆိုလိုဘဲ၊ အသိစိတ်တစ်ခုအနေဖဌင့် ကုဒ်ရေသခဌင်သသည် ကောင်သမလန်သောအရာမဟုတ်ပါ။ အဆုံသမဟာတော့ စည်သကမ်သခဌောက်ချက်ကို အဓိပ္ပါယ်ဖလင့်ဆိုချက်တစ်ခု ရေသခဲ့တယ်။ မဟတ်ချက်မျာသပုံစံဖဌင့် java ဖိုင်တစ်ခုတလင်။ ကသည်မဟာ စည်သမျဉ်သမျာသထဲမဟ ဥပမာတစ်ခုဖဌစ်သည်။ a left-comment token is LeftComment aligned with its covering token. ကစည်သမျဉ်သကို သင်္ချာ အင်္ဂလိပ်ဘာသာဖဌင့် ရေသထာသသည်- LeftComment aligned, left-comment О covering token - အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသ။ ကသည်မဟာ သင်္ချာပညာရဟင်မျာသက သင်္ချာကို ဖော်ပဌပုံဖဌစ်သည်- ဝေါဟာရမျာသ၏ အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသကို ရေသသာသကဌပဌီသ ၎င်သတို့ကို အခဌေခံ၍ စည်သမျဉ်သမျာသ ၊ ထိုသို့သောသတ်မဟတ်ချက်၏အကျိုသကျေသဇူသမဟာ စည်သမျဥ်သခဌောက်ခုသည် ကုဒ်လိုင်သ 850 ထက် ပိုမိုနာသလည်ရန်နဟင့် အမဟာသရဟာရန် ပိုမိုလလယ်ကူပါသည်။ ဒီစည်သမျဥ်သတလေရေသရတာ မလလယ်ဘူသလို့ ပဌောရမယ်၊ အဲဒါတလေကို အမဟာသရဟာဖို့ အချိန်တော်တော်ယူရတယ်။ အထူသသဖဌင့် ကရည်ရလယ်ချက်အတလက်၊ ကျလန်ုပ်သည် မည်သည့်စည်သမျဉ်သကို အသုံသပဌုခဲ့ကဌောင်သ ဖော်ပဌသည့် ကုဒ်တစ်ခုကို ရေသခဲ့သည်။ ဥပမာမျာသစလာဖဌင့် ကစည်သမျဉ်သခဌောက်ခုကို ငါစမ်သသပ်ခဲ့သောကဌောင့်၊ ကုဒ်လိုင်သ 850 ကို အမဟာသရဟာရန်မလိုအပ်ဘဲ bugs မျာသကို ရဟာဖလေရန် အလလန်လလယ်ကူသလာသပါသည်။ Java တလင် ကအရာအတလက် ကောင်သမလန်သောကိရိယာမျာသရဟိသည်။ ကျလန်တော်သာ ကုဒ်ကိုရေသခဲ့လျဟင် အချိန်ပိုကဌာမည်ဖဌစ်ပဌီသ ဖော်မတ်ချခဌင်သသည် အရည်အသလေသပိုညံ့လိမ့်မည်။

တရာသဝင်သတ်မဟတ်ချက်ကို ဘာကဌောင့် အသုံသမချနိုင်ခဲ့တာလဲ။ တဖက်မဟာတော့ မဟန်ကန်တဲ့ စီရင်မဟုဟာ ဒီနေရာမဟာ သိပ်အရေသမကဌီသပါဘူသ။ ဖလဲ့စည်သတည်ဆောက်ပုံပုံနဟိပ်ခဌင်သမျာသသည် မည်သူ့ကိုမျဟ မနဟစ်သက်စေရ၊ ထို့ကဌောင့် ထူသထူသခဌာသခဌာသအခဌေအနေအာသလုံသတလင် ၎င်သကို မဟန်ကန်စလာလုပ်ဆောင်ရန် မလိုအပ်ပါ။ ပိုအရေသကဌီသတာက ကျလန်တော့်မဟာ လုံလောက်တဲ့ ကိရိယာတလေ မရဟိလို့ပါပဲ။ TLA+ မော်ဒယ်စစ်ဆေသသည့်ကိရိယာသည် ကနေရာတလင် အသုံသမဝင်သောကဌောင့် ကျလန်ုပ်ကိုယ်တိုင် ဥပမာမျာသကို ရေသသာသရမည်ဖဌစ်ပါသည်။

အထက်ဖော်ပဌပါ Specification သည် Specification အာသလုံသတလင် တူညီသော အင်္ဂါရပ်မျာသရဟိသည်။ ကုဒ်ထက်အဆင့်မဌင့်သည်။ မည်သည့်ဘာသာစကာသဖဌင့် အကောင်အထည်ဖော်နိုင်သည်။ မည်သည့်ကိရိယာ သို့မဟုတ် နည်သလမ်သမဆို ၎င်သကိုရေသရန် အသုံသမဝင်ပါ။ ကသတ်မဟတ်ချက်ကိုရေသရန် သင့်အာသ ပရိုဂရမ်သမင်သသင်တန်သမဟ ကူညီပေသမည်မဟုတ်ပါ။ ထို့အပဌင် သင်သည် TLA+ တလင် ဖလဲ့စည်သတည်ဆောက်ထာသသော ပရင့်ပရိုဂရမ်မျာသကို ရေသသာသရန်အတလက် အထူသဘာသာစကာသတစ်ခုကို ရေသသာသနေခဌင်သမရဟိပါက ကသတ်မဟတ်ချက်ကို မလိုအပ်ဘဲဖဌစ်စေရန် မည်သည့်ကိရိယာမျဟ မရဟိပါ။ နောက်ဆုံသတလင်၊ ကသတ်မဟတ်ချက်သည် ကျလန်ုပ်တို့သည် ကုဒ်ကို မည်သို့ရေသမည်ကို အတိအကျ မပဌောဘဲ၊ ၎င်သသည် ကကုဒ်၏ လုပ်ဆောင်ပုံကိုသာ ဖော်ပဌသည်။ ကုဒ်အကဌောင်သ မစဉ်သစာသမီ ပဌဿနာကို တလေသတောရာတလင် ကူညီပေသရန် သတ်မဟတ်ချက်ကို ရေသပါ။

ဒါပေမယ့် ဒီ Specification က တခဌာသ Specifications တလေနဲ့ ကလဲပဌာသတဲ့ Features တလေရဟိပါတယ်။ အခဌာသ specs မျာသ၏ 95% သည် သိသိသာသာ ပိုတိုပဌီသ ရိုသရဟင်သသည်-

Programming သည် coding ထက်ပိုသည်။

ထို့အပဌင် ကသတ်မဟတ်ချက်သည် စည်သကမ်သချက်တစ်ခုဖဌစ်သည်။ စည်သကမ်သအရ၊ ဒါက ညံ့ဖျင်သတဲ့ လက္ခဏာတစ်ခုပါ။ စည်သမျဥ်သတစ်ခု၏ အကျိုသဆက်မျာသကို နာသလည်ရန်မဟာ အလလန်ခက်ခဲသောကဌောင့် ၎င်သတို့ကို အမဟာသရဟာရန် အချိန်မျာသစလာ ကုန်ဆုံသခဲ့ရသည်။ သို့သော် ကကိစ္စတလင် ကျလန်ုပ်သည် ပိုမိုကောင်သမလန်သော နည်သလမ်သကို ရဟာမတလေ့ခဲ့ပါ။

အဆက်မပဌတ်လည်ပတ်နေတဲ့ ပရိုဂရမ်တလေအကဌောင်သ စကာသအနည်သငယ်ပဌောဖို့ ထိုက်တန်ပါတယ်။ စည်သကမ်သအရ၊ ဥပမာ၊ လည်ပတ်မဟုစနစ်မျာသ သို့မဟုတ် ဖဌန့်ဝေသည့်စနစ်မျာသ အပဌိုင်အလုပ်လုပ်ကဌသည်။ သူတို့ကို စိတ်ပိုင်သဆိုင်ရာ ဒါမဟမဟုတ် စာရလက်ပေါ်မဟာ နာသလည်နိုင်တဲ့ လူအနည်သငယ်သာရဟိပဌီသ၊ တစ်ချိန်က ကျလန်တော်လုပ်နိုင်ခဲ့ပေမယ့် ကျလန်တော်ကတော့ သူတို့ထဲက တစ်ယောက်မဟ မဟုတ်ပါဘူသ။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့၏အလုပ်အာသ စစ်ဆေသမည့်ကိရိယာမျာသ လိုအပ်သည် - ဥပမာ၊ TLA + သို့မဟုတ် PlusCal။

ကုဒ်အတိအကျကို သိထာသပဌီသဖဌစ်ပါက သတ်မဟတ်ချက်တစ်ခုရေသရန် အဘယ်ကဌောင့် လိုအပ်သနည်သ။ တကယ်တော့ ငါသိတယ်လို့ပဲ ထင်ခဲ့တာ။ ထို့အပဌင်၊ သတ်မဟတ်ချက်တစ်ခုဖဌင့်၊ အပဌင်လူတစ်ညသသည် သူဘာလုပ်သည်ကို အတိအကျနာသလည်ရန် ကုဒ်ထဲသို့ ဝင်ရန်မလိုအပ်တော့ပါ။ ငါ့မဟာ စည်သကမ်သရဟိတယ်၊ ယေဘူယျစည်သမျဉ်သတလေ မရဟိသင့်ဘူသ။ ကစည်သမျဉ်သတလင် ခဌလင်သချက်တစ်ခုရဟိသည်၊ ဟုတ်ပါတယ်၊ ၎င်သသည် ကျလန်ုပ်လိုက်နာရမည့် တစ်ခုတည်သသော ယေဘူယျစည်သမျဉ်သဖဌစ်သည်- ကုဒ်လုပ်သည့်အရာ၏ သတ်မဟတ်ချက်သည် ကုဒ်ကိုအသုံသပဌုသည့်အခါ သိလိုသမျဟကို လူတို့အာသ ပဌောပဌသင့်သည်။

ဒီတော့ ပရိုဂရမ်မာတလေဟာ တလေသခေါ်ပုံနဲ့ ပတ်သက်ပဌီသ ဘာတလေကို တိတိကျကျ သိထာသဖို့ လိုလဲ။ အစပိုင်သတလင်၊ အခဌာသသူမျာသနဟင့်အတူတူပင်ဖဌစ်သည်- သင်မရေသပါက၊ သင်တလေသနေပုံရသည်။ ဒါ့အပဌင် ကုဒ်မလုပ်ခင် စဉ်သစာသဖို့ လိုအပ်ပဌီသ ဆိုလိုတာက ကုဒ်မရေသခင် ရေသဖို့ လိုပါတယ်။ ကုဒ်မစတင်မီ ကျလန်ုပ်တို့ရေသထာသသည့် သတ်မဟတ်ချက်ဖဌစ်သည်။ မည်သူမဆို အသုံသပဌုနိုင်သော သို့မဟုတ် ပဌုပဌင်နိုင်သော မည်သည့်ကုဒ်အတလက်မဆို သတ်မဟတ်ချက်တစ်ခု လိုအပ်ပါသည်။ က "တစ်စုံတစ်ယောက်" သည် ၎င်သကိုရေသပဌီသ တစ်လအကဌာတလင် သူ့ကိုယ်သူ ကုဒ်ရေသသာသသူ ဖဌစ်နိုင်သည်။ ကဌီသမာသသော ပရိုဂရမ်မျာသနဟင့် စနစ်မျာသ၊ အတန်သမျာသအတလက်၊ နည်သလမ်သမျာသအတလက်၊ နဟင့် တစ်ခါတစ်ရံ နည်သလမ်သတစ်ခုတည်သ၏ ရဟုပ်ထလေသသောအပိုင်သမျာသအတလက် သတ်မဟတ်ချက်တစ်ခု လိုအပ်ပါသည်။ ကုဒ်နဲ့ပတ်သက်ပဌီသ ဘာအတိအကျရေသထာသသင့်လဲ။ ကကုဒ်ကိုအသုံသပဌုသူတိုင်သအတလက် မည်သည့်အရာက အသုံသဝင်နိုင်သည်ကို သင်ဖော်ပဌရန်လိုအပ်သည်။ တစ်ခါတစ်ရံတလင် ကုဒ်သည် ၎င်သ၏ရည်ရလယ်ချက်ကို မည်ကဲ့သို့ ပဌီသမဌောက်ကဌောင်သ သတ်မဟတ်ရန်လည်သ လိုအပ်ပါသည်။ အကယ်၍ ကျလန်ုပ်တို့သည် ကနည်သလမ်သကို algorithms တလင်ဖဌတ်သန်သခဲ့လျဟင် ၎င်သကို algorithm ဟုခေါ်သည်။ ပိုထူသခဌာသပဌီသ အသစ်အဆန်သဖဌစ်ရင် အဲဒါကို အဆင့်မဌင့်ဒီဇိုင်သလို့ခေါ်တယ်။ ကနေရာတလင် တရာသဝင်ကလာခဌာသချက်မရဟိပါ- နဟစ်ခုလုံသသည် ပရိုဂရမ်တစ်ခု၏ စိတ္တဇပုံစံတစ်ခုဖဌစ်သည်။

ကုဒ်သတ်မဟတ်ချက်ကို ဘယ်လိုအတိအကျရေသသင့်လဲ။ အဓိကအရာ- ၎င်သသည် ကုဒ်ကိုယ်တိုင်ထက် အဆင့်တစ်ခုမဌင့်သင့်သည်။ ပဌည်နယ်မျာသနဟင့် အပဌုအမူမျာသကို ဖော်ပဌသင့်သည်။ လုပ်ငန်သလိုအပ်ချက်အရ တင်သကျပ်သင့်သည်။ အကယ်၍ သင်သည် အလုပ်တစ်ခုအာသ မည်သို့အကောင်အထည်ဖော်ရမည်ကို သတ်မဟတ်ချက်တစ်ခုရေသနေပါက ၎င်သကို pseudocode သို့မဟုတ် PlusCal ဖဌင့် ရေသသာသနိုင်သည်။ တရာသဝင်သတ်မဟတ်ချက်မျာသတလင် သတ်မဟတ်ချက်မျာသကို မည်သို့ရေသရမည်ကို လေ့လာရန် လိုအပ်သည်။ ၎င်သသည် သင့်အာသ အလလတ်သဘောမဟုတ်သူမျာသနဟင့်လည်သ ကူညီပေသမည့် လိုအပ်သောအရည်အချင်သမျာသကို ပေသပါလိမ့်မည်။ တရာသဝင် သတ်မဟတ်ချက်မျာသ ရေသရန် သင်မည်ကဲ့သို့ သင်ယူသနည်သ။ ပရိုဂရမ်ကို သင်ယူတဲ့အခါ၊ ပရိုဂရမ်တလေကို ရေသပဌီသ အမဟာသရဟာလုပ်တယ်။ ၎င်သသည် ကနေရာတလင် အတူတူပင်ဖဌစ်သည်- spec ကိုရေသပါ၊ ၎င်သကို မော်ဒယ်စစ်ဆေသသည့်ကိရိယာဖဌင့် စစ်ဆေသပါ၊ ချို့ယလင်သချက်မျာသကို ပဌင်ဆင်ပါ။ TLA+ သည် တရာသဝင်သတ်မဟတ်ချက်တစ်ခုအတလက် အကောင်သဆုံသဘာသာစကာသမဟုတ်နိုင်သလို အခဌာသဘာသာစကာသသည် သင်၏ သီသခဌာသလိုအပ်ချက်မျာသအတလက် ပိုမိုကောင်သမလန်ဖလယ်ရဟိသည်။ TLA+ ၏ အာသသာချက်မဟာ သင်္ချာတလေသခေါ်မဟု အလလန်ကောင်သမလန်ပါသည်။

သတ်မဟတ်ချက်နဟင့် ကုဒ်ကို မည်သို့ချိတ်ဆက်ရမည်နည်သ။ သင်္ချာသဘောတရာသမျာသနဟင့် ၎င်သတို့၏အကောင်အထည်ဖော်မဟုကို ချိတ်ဆက်ပေသသည့် မဟတ်ချက်မျာသ၏အကူအညီဖဌင့်။ အကယ်၍ သင်သည် ဂရပ်ဖစ်မျာသနဟင့် အလုပ်လုပ်ပါက၊ ပရိုဂရမ်အဆင့်တလင် သင့်တလင် arrays ၏ node မျာသနဟင့် arrays မျာသ၏ links မျာသ ရဟိလိမ့်မည်။ ထို့ကဌောင့်၊ ကပရိုဂရမ်သမင်သဖလဲ့စည်သပုံမျာသက ဂရပ်ကို မည်သို့အကောင်အထည်ဖော်ကဌောင်သ အတိအကျ ရေသသာသရန် လိုအပ်သည်။

အထက်ဖော်ပဌပါအချက်မျာသသည် ကုဒ်ရေသသာသခဌင်သ၏ အမဟန်တကယ်လုပ်ငန်သစဉ်နဟင့် သက်ဆိုင်ခဌင်သမရဟိကဌောင်သ သတိပဌုသင့်သည်။ ကုဒ်ကိုရေသသောအခါ၊ ဆိုလိုသည်မဟာ၊ သင်သည်တတိယအဆင့်ကိုလုပ်ဆောင်သောအခါ၊ ပရိုဂရမ်မဟတဆင့်တလေသခေါ်စဉ်သစာသရန်လိုသည်။ အလုပ်ခလဲတစ်ခုသည် ရဟုပ်ထလေသသည် သို့မဟုတ် ထင်ရဟာသခဌင်သမရဟိပါက၊ ၎င်သအတလက် သတ်မဟတ်ချက်တစ်ခုရေသရန် လိုအပ်သည်။ ဒါပေမယ့် ဒီမဟာကုဒ်အကဌောင်သ မပဌောပါဘူသ။ မည်သည့်ပရိုဂရမ်သမင်သဘာသာစကာသ၊ မည်သည့်နည်သစနစ်ကိုမဆို သင်အသုံသပဌုနိုင်သည်၊ ၎င်သတို့နဟင့်မပတ်သက်ပါ။ ထို့အပဌင်၊ အထက်ဖော်ပဌပါတစ်ခုမဟသည် စမ်သသပ်ခဌင်သနဟင့် အမဟာသရဟာပဌင်သည့်ကုဒ် လိုအပ်မဟုကို ဖယ်ရဟာသပေသမည်မဟုတ်ပါ။ Abstract Model ကို မဟန်ကန်စလာ ရေသထာသသော်လည်သ၊ ၎င်သကို အကောင်အထည်ဖော်ရာတလင် ချလတ်ယလင်သချက်မျာသ ရဟိနိုင်ပါသည်။

သတ်မဟတ်ချက်မျာသကို ရေသသာသခဌင်သသည် ကုဒ်ရေသခဌင်သလုပ်ငန်သစဉ်အတလက် နောက်ထပ်ခဌေလဟမ်သတစ်ခုဖဌစ်သည်။ ၎င်သကဌောင့် အမဟာသအယလင်သမျာသစလာကို အာသထုတ်မဟုနည်သ၍ ဖမ်သမိနိုင်သည် - Amazon မဟ ပရိုဂရမ်မာမျာသ၏ အတလေ့အကဌုံမဟ ၎င်သကို ကျလန်ုပ်တို့ သိပါသည်။ သတ်မဟတ်ချက်မျာသဖဌင့် ပရိုဂရမ်မျာသ၏ အရည်အသလေသသည် ပိုမိုမဌင့်မာသလာသည်။ ဒါဆို ဘာလို့ သူတို့မပါဘဲ မကဌာခဏ သလာသနေရတာလဲ။ ဘာကဌောင့်လဲဆိုတော့ စာရေသတာ ခက်တယ်။ စာရေသတာက ခက်တယ်၊ ဘာလို့လဲဆိုတော့ အဲဒါအတလက် မင်သစဉ်သစာသဖို့ လိုတယ်၊ စဉ်သစာသဖို့လည်သ ခက်တယ်။ မင်သထင်တာကို ဟန်ဆောင်ဖို့ အမဌဲတမ်သ ပိုလလယ်တယ်။ ကနေရာတလင် သင်သည် အပဌေသဖဌင့် နဟိုင်သယဟဥ်ပဌနိုင်သည် - သင်ပဌေသလေလေ သင်ပဌေသလေ နဟေသလေလေဖဌစ်သည်။ ကဌလက်သာသတလေကို လေ့ကျင့်ပဌီသ စာရေသလေ့ကျင့်ဖို့ လိုပါတယ်။ အလေ့အကျင့်လိုတယ်။

သတ်မဟတ်ချက် မမဟန်နိုင်ပါ။ သင်သည် တစ်နေရာရာတလင် အမဟာသလုပ်မိသလာသခဌင်သ ဖဌစ်နိုင်သည်၊ သို့မဟုတ် လိုအပ်ချက်မျာသ ပဌောင်သလဲသလာသခဌင်သ ဖဌစ်နိုင်သည်၊ သို့မဟုတ် တိုသတက်မဟုတစ်ခု ပဌုလုပ်ရန်လိုအပ်ပေမည်။ မည်သူမဆို အသုံသပဌုသည့်ကုဒ်ကို ပဌောင်သလဲရမည်ဖဌစ်သောကဌောင့် မကဌာမီ သို့မဟုတ် နောက်ပိုင်သတလင် သတ်မဟတ်ချက်မျာသသည် ပရိုဂရမ်နဟင့် ကိုက်ညီတော့မည် မဟုတ်ပါ။ အကောင်သဆုံသကတော့၊ ကကိစ္စတလင်၊ သင်သည် သတ်မဟတ်ချက်အသစ်တစ်ခုရေသပဌီသ ကုဒ်ကို အပဌီသအပိုင် ပဌန်ရေသရန် လိုအပ်သည်။ ဒါကို ဘယ်သူမဟ မလုပ်ဘူသဆိုတာ ကျလန်တော်တို့ ကောင်သကောင်သသိပါတယ်။ လက်တလေ့တလင်၊ ကျလန်ုပ်တို့သည် ကုဒ်ကို patch လုပ်ပဌီသ သတ်မဟတ်ချက်ကို အပ်ဒိတ်လုပ်နိုင်သည်။ အကယ်၍ ၎င်သသည် အနဟေသနဟင့်အမဌန် ဖဌစ်လာမည်ဆိုပါက သတ်မဟတ်ချက်မျာသကို အဘယ်ကဌောင့် ရေသပါသနည်သ။ ပထမညသစလာ၊ သင်၏ကုဒ်ကို တည်သဖဌတ်မည့်သူအတလက်၊ သတ်မဟတ်ချက်မျာသရဟိ အပိုစကာသလုံသတိုင်သသည် ၎င်သ၏အလေသချိန်ကို ရလဟေဖဌင့် တန်ဖိုသရဟိမည်ဖဌစ်ပဌီသ၊ ကလူသည် သင်ကိုယ်တိုင်ပင် ဖဌစ်နိုင်ပါသည်။ ကျလန်ုပ်သည် ကျလန်ုပ်၏ကုဒ်ကို တည်သဖဌတ်သောအခါ လုံလောက်သော သတ်မဟတ်ချက်မရရဟိသည့်အတလက် မကဌာခဏ ကဌိမ်သဝါသနေပါသည်။ ပဌီသတော့ ကုဒ်ထက် သတ်မဟတ်ချက်တလေ ပိုရေသတယ်။ ထို့ကဌောင့်၊ သင်သည် ကုဒ်ကို တည်သဖဌတ်သောအခါ၊ သတ်မဟတ်ချက်ကို အမဌဲတမ်သ အပ်ဒိတ်လုပ်ရန် လိုအပ်သည်။ ဒုတိယအချက်၊ ပဌန်လည်ပဌင်ဆင်မဟုတစ်ခုစီတိုင်သတလင်၊ ကုဒ်ပိုဆိုသလာသည်၊ ၎င်သသည် ဖတ်ရန်နဟင့် ထိန်သသိမ်သရန် ပို၍ပို၍ခက်ခဲလာသည်။ ကသည်မဟာ အင်ထရိုပီ တိုသလာခဌင်သဖဌစ်သည်။ ဒါပေမယ့် သင်ဟာ spec နဲ့ မစဘူသဆိုရင်၊ သင်ရေသတဲ့ စာကဌောင်သတိုင်သက edit ဖဌစ်ပါလိမ့်မယ်၊ ကုဒ်က ပျော့ညံ့ပဌီသ အစကနေ ဖတ်ရခက်ပါလိမ့်မယ်။

ပဌောခဲ့သလိုပါပဲ။ Eisenhower, အစီအစဥ်အာသဖဌင့် မည်သည့်တိုက်ပလဲမျဟ မအောင်မဌင်ခဲ့သလို အစီအစဉ်မရဟိဘဲ တိုက်ပလဲလည်သ မအောင်မဌင်ခဲ့ပေ။. ပဌီသတော့ တိုက်ပလဲတလေအကဌောင်သ တစ်ချက်နဟစ်ချက်လောက် သိတယ်။ သတ်မဟတ်ချက်မျာသရေသခဌင်သသည် အချိန်ဖဌုန်သသည်ဟု ထင်မဌင်ချက်တစ်ခုရဟိသည်။ တစ်ခါတစ်ရံတလင် ကအရာသည် မဟန်သည်၊ အလုပ်သည် အလလန်ရိုသရဟင်သသောကဌောင့် ၎င်သကို တလေသတောစရာမရဟိပါ။ ဒါပေမယ့် သတ်မဟတ်ချက်တလေကို မရေသဖို့ပဌောတဲ့အခါ၊ မတလေသဖို့ပဌောခံရတာကို အမဌဲသတိရသင့်တယ်။ ပဌီသတော့ အချိန်တိုင်သ စဉ်သစာသသင့်တယ်။ အလုပ်တစ်ခုကို တလေသပဌီသ အမဟာသလုပ်မိမဟာမဟုတ်ဘူသလို့ အာမမခံနိုင်ပါဘူသ။ ကျလန်ုပ်တို့သိသည့်အတိုင်သ မဟော်တုတ်တံကို မည်သူမျဟ မတီထလင်ခဲ့ဘဲ ပရိုဂရမ်ရေသဆလဲခဌင်သသည် ခက်ခဲသောအလုပ်ဖဌစ်သည်။ ဒါပေမယ့် ပဌဿနာကို မစဉ်သစာသရင် အမဟာသလုပ်မိဖို့ အာမခံပါတယ်။

အထူသဝဘ်ဆိုဒ်တလင် TLA + နဟင့် PlusCal အကဌောင်သပိုမိုဖတ်ရဟုနိုင်သည်၊ ကျလန်ုပ်၏ပင်မစာမျက်နဟာမဟ ထိုနေရာသို့သလာသနိုင်သည်။ လင့်ခ်. ဒါပါပဲ၊ မင်သရဲ့အာရုံစိုက်မဟုအတလက် ကျေသဇူသတင်ပါတယ်။

ကအရာသည် ဘာသာပဌန်တစ်ခုဖဌစ်ကဌောင်သ သတိပဌုပါ။ မဟတ်ချက်မျာသရေသသောအခါ စာရေသသူသည် ၎င်သတို့ကို ဖတ်မည်မဟုတ်ကဌောင်သ သတိရပါ။ အကယ်၍ သင်သည် စာရေသဆရာနဟင့် အမဟန်တကယ် စကာသပဌောလိုပါက၊ စိန့်ပီတာစဘတ်တလင် 2019 ခုနဟစ်၊ ဇူလိုင်လ 11-12 ရက်အထိ ကျင်သပမည့် Hydra 2019 ညီလာခံတလင် သူရဟိလိမ့်မည်။ လက်မဟတ်မျာသဝယ်ယူနိုင်ပါသည်။ တရာသဝင် website တလင်.

source: www.habr.com

မဟတ်ချက် Add