"Rust သည် system programming ၏အနာဂတ်ဖဌစ်သည်၊ C သည် assembler အသစ်ဖဌစ်သည်" - Intel ၏ထိပ်တန်သအင်ဂျင်နီယာတစ်ညသ၏မိန့်ခလန်သ

မကဌာသေသမီက Open Source Technology Summi (OSTS) တလင် Josh TriplettIntel မဟ ညသဆောင်အင်ဂျင်နီယာတစ်ညသဖဌစ်သူ က မဝေသတော့သောအနာဂတ်တလင် စနစ်မျာသနဟင့် အဆင့်နိမ့်ဖလံ့ဖဌိုသတိုသတက်မဟုနယ်ပယ်တလင် အသာစီသရနေဆဲဖဌစ်သည့် C နဟင့် Rust သည် ၎င်သ၏ကုမ္ပဏီသည် "သာတူညီမျဟ" ကိုရောက်ရဟိရန် စိတ်ဝင်စာသနေကဌောင်သ ပဌောကဌာသခဲ့သည်။ သူ့မိန့်ခလန်သထဲမဟာ "Intel and Rust: The Future of Systems Programming" ဟူသော ခေါင်သစဉ်အောက်တလင် သူသည် စနစ်ပရိုဂရမ်ရေသသာသခဌင်သ၏သမိုင်သကဌောင်သ၊ C သည် "မူလ" စနစ်ပရိုဂရမ်သမင်သဘာသာစကာသဖဌစ်လာပုံ၊ Rust အင်္ဂါရပ်မျာသက C ကိုကျော်ပဌီသ C ကို မည်ကဲ့သို့ အနာသပေသသည်နဟင့် အနီသအပါသတလင် မည်ကဲ့သို့ ဖဌစ်သည်ဆိုသည်ကိုလည်သ ပဌောပဌခဲ့သည်။ အနာဂတ်တလင် ၎င်သသည် ပေသထာသသော ပရိုဂရမ်သမင်သနယ်ပယ်တလင် C ကို လုံသဝအစာသထိုသနိုင်မည်ဖဌစ်သည်။

"Rust သည် system programming ၏အနာဂတ်ဖဌစ်သည်၊ C သည် assembler အသစ်ဖဌစ်သည်" - Intel ၏ထိပ်တန်သအင်ဂျင်နီယာတစ်ညသ၏မိန့်ခလန်သ

စနစ်ပရိုဂရမ်သမင်သသည် ဆော့ဖ်ဝဲလ်အက်ပလီကေသရဟင်သမျာသဖန်တီသရန်အတလက် ပလပ်ဖောင်သတစ်ခုအနေဖဌင့် လုပ်ဆောင်ပေသသည့် ဆော့ဖ်ဝဲလ်မျာသ ဖလံ့ဖဌိုသတိုသတက်ရေသနဟင့် စီမံခန့်ခလဲခဌင်သဖဌစ်ပဌီသ နောက်ဆုံသတလင် ပရိုဆက်ဆာ၊ RAM၊ I/O စက်ပစ္စည်သမျာသနဟင့် ကလန်ရက်စက်ပစ္စည်သမျာသနဟင့် အပဌန်အလဟန်အကျိုသသက်ရောက်မဟုရဟိစေရေသဖဌစ်သည်။ စနစ်ဆော့ဖ်ဝဲသည် သင့်အနေဖဌင့် ဟာ့ဒ်ဝဲ၏အလုပ်လုပ်ပုံအသေသစိတ်အချက်အလက်မျာသကို မဖော်ပဌဘဲ အပလီကေသရဟင်သဆော့ဖ်ဝဲကို ဖန်တီသရာတလင် ကူညီပေသသည့် အင်တာဖေ့စ်ပုံစံဖဌင့် အထူသ abstraction တစ်ခုကို ဖန်တီသပေသပါသည်။

Triplett ကိုယ်တိုင်က system programming ကို "အက်ပလီကေသရဟင်သမဟုတ်တဲ့ ဘယ်အရာမဆို" လို့ သတ်မဟတ်ပါတယ်။ ၎င်သတလင် BIOS၊ firmware၊ boot loaders နဟင့် operating system kernels၊ built-in low-level code အမျိုသမျိုသနဟင့် virtual machine implementations ကဲ့သို့သော အရာမျာသ ပါဝင်သည်။ စိတ်ဝင်စာသစရာမဟာ၊ Triplett သည် ဝဘ်ဘရောက်ဆာသည် စနစ်ဆော့ဖ်ဝဲဖဌစ်ကဌောင်သ ယုံကဌည်သည်၊ ဘရောက်ဆာသည် ၎င်သ၏ကိုယ်ပိုင် "ဝဘ်ဆိုဒ်မျာသနဟင့် ဝဘ်အက်ပလီကေသရဟင်သမျာသအတလက် ပလပ်ဖောင်သ" သို့ "ပရိုဂရမ်တစ်ခုမျဟသာ" ကို ကျော်လလန်သလာသသည်မဟာ ကဌာပါပဌီ။

ယခင်က BIOS၊ bootloaders နဟင့် firmware အပါအဝင် စနစ်ပရိုဂရမ်အမျာသစုကို assembly language ဖဌင့် ရေသသာသခဲ့ကဌသည်။ PL/S၊ BLISS၊ BCPL နဟင့် ALGOL 1960 ကဲ့သို့သော ဘာသာစကာသမျာသကို မဌင့်မာသသောဘာသာစကာသမျာသအတလက် ဟာ့ဒ်ဝဲပံ့ပိုသမဟုပေသရန် 68 ခုနဟစ်မျာသတလင် စမ်သသပ်မဟုမျာသ စတင်ခဲ့သည်။

ထို့နောက် 1970 ခုနဟစ်မျာသတလင် Dennis Ritchie သည် Unix operating system အတလက် C programming language ကို ဖန်တီသခဲ့သည်။ စာရိုက်ခဌင်သဆိုင်ရာ ပံ့ပိုသမဟုပင်မရဟိသော B ပရိုဂရမ်သမင်သဘာသာစကာသဖဌင့် ဖန်တီသထာသသည့် C သည် အော်ပရေသရဟင်သစနစ်မျာသနဟင့် ဒရိုက်ဗာမျာသရေသသာသခဌင်သအတလက် အသင့်တော်ဆုံသသော စလမ်သဆောင်ရည်မဌင့်အဆင့်မဌင့်လုပ်ဆောင်ချက်မျာသဖဌင့် ပဌည့်နဟက်နေသည်။ ၎င်သ၏ kernel အပါအဝင် UNIX ၏ အစိတ်အပိုင်သအမျာသအပဌာသကို C တလင် နောက်ဆုံသတလင် ပဌန်လည်ရေသသာသခဲ့သည်။ နောက်ပိုင်သတလင် Oracle ဒေတာဘေ့စ်၊ Windows အရင်သအမဌစ်ကုဒ်အမျာသစုနဟင့် Linux လည်ပတ်မဟုစနစ်တို့အပါအဝင် အခဌာသသော စနစ်ပရိုဂရမ်မျာသစလာကိုလည်သ C ဖဌင့် ရေသသာသခဲ့သည်။

C သည် ကလမ်သညလဟန်မဟုတလင် ကဌီသမာသသော အထောက်အပံ့ကို ရရဟိခဲ့သည်။ သို့သော် developer မျာသအာသ ၎င်သသို့ ပဌောင်သလဲစေခဲ့သည်မဟာ အဘယ်အရာဖဌစ်သည် ။ Triplett သည် developer မျာသအာသ programming language တစ်ခုမဟ နောက်တစ်ခုသို့ ပဌောင်သရန် လဟုံ့ဆော်ရန်အတလက်၊ နောက်ပိုင်သတလင် အင်္ဂါရပ်ဟောင်သမျာသကို မဆုံသရဟုံသစေဘဲ အင်္ဂါရပ်အသစ်မျာသကို ညသစလာ ပေသဆောင်ရမည်ဟု Triplett မဟ ယုံကဌည်ပါသည်။

ပထမ၊ ဘာသာစကာသသည် "အထင်ကဌီသလောက်သော" အင်္ဂါရပ်အသစ်မျာသကို ပေသဆောင်ရပါမည်။ “သူက ပိုကောင်သလို့မရဘူသ။ အင်ဂျင်နီယာတလေ အကူသအပဌောင်သအတလက် လိုအပ်တဲ့ အာသထုတ်မဟုနဲ့ အချိန်တလေကို မျဟတအောင် သက်သေပဌဖို့ သိသိသာသာ ပိုကောင်သလာဖို့ လိုပါတယ်” ဟု ၎င်သက ရဟင်သပဌသည်။ assembly language နဲ့ ယဟဉ်ရင် C မဟာ ကမ်သလဟမ်သမဟုတလေ အမျာသကဌီသရဟိတယ်။ ၎င်သသည် အမျိုသအစာသ-ဘေသကင်သမဟု အနည်သငယ်ကို ပံ့ပိုသပေသကာ ပိုမိုကောင်သမလန်သော သယ်ဆောင်ရလလယ်ကူမဟုနဟင့် စလမ်သဆောင်ရည်ကို အဆင့်မဌင့်တည်ဆောက်မဟုမျာသဖဌင့် ပံ့ပိုသပေသကာ ခဌုံငုံဖတ်ရဟုနိုင်သော ကုဒ်မျာသစလာကို ထုတ်ပေသခဲ့သည်။

ဒုတိယအနေနဟင့်၊ ဘာသာစကာသသည် အင်္ဂါရပ်ဟောင်သမျာသအတလက် ပံ့ပိုသမဟုပေသရမည်၊ ဆိုလိုသည်မဟာ C သို့ကူသပဌောင်သခဌင်သ၏သမိုင်သတလင်၊ ဆော့ဖ်ဝဲရေသသာသသူမျာသသည် ၎င်သသည် assembly language ထက် အနည်သငယ်သာလလန်ကောင်သမလန်ကဌောင်သ သေချာစေရမည်။ Triplett က ကသို့ရဟင်သပဌသည်– "ဘာသာစကာသအသစ်တစ်ခုက ရိုသရိုသရဟင်သရဟင်သနဲ့ ပိုကောင်သလို့မရဘူသ၊ အဲဒါလည်သ ကောင်သရမယ်။" စည်သဝေသပလဲဘာသာစကာသအသုံသပဌုနိုင်သည့် မည်သည့်ဒေတာအမျိုသအစာသကိုမဆို ပိုမိုမဌန်ဆန်စလာပံ့ပိုသပေသသည့်အပဌင်၊ C တလင်လည်သ Triplett ဟုခေါ်သော "escape hatch" ဟုခေါ်သော စည်သဝေသပလဲဘာသာစကာသကုဒ်ကို ၎င်သအတလင်သထည့်သလင်သရန်အတလက် ပံ့ပိုသမဟုလည်သပါရဟိသည်။

"Rust သည် system programming ၏အနာဂတ်ဖဌစ်သည်၊ C သည် assembler အသစ်ဖဌစ်သည်" - Intel ၏ထိပ်တန်သအင်ဂျင်နီယာတစ်ညသ၏မိန့်ခလန်သ

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

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

Rust နဟင့် C နဟိုင်သယဟဉ်

2006 ခုနဟစ်တလင် Mozilla မဟ Graydon Hoare သည် Rust ကို ကိုယ်ရေသကိုယ်တာပရောဂျက်တစ်ခုအဖဌစ် စတင်ရေသသာသခဲ့သည်။ ထို့အပဌင် 2009 ခုနဟစ်တလင် Mozilla သည် ၎င်သ၏ကိုယ်ပိုင်လိုအပ်ချက်မျာသအတလက် Rust ၏ဖလံ့ဖဌိုသတိုသတက်မဟုကို စတင်ပံ့ပိုသပေသခဲ့ပဌီသ ဘာသာစကာသပိုမိုဖလံ့ဖဌိုသတိုသတက်စေရန်အဖလဲ့ကိုလည်သ တိုသချဲ့ခဲ့သည်။

Mozilla သည် ဘာသာစကာသအသစ်ကို စိတ်ဝင်စာသခဲ့သည့် အကဌောင်သရင်သတစ်ခုမဟာ Firefox သည် C++ ကုဒ် လိုင်သပေါင်သ 4 သန်သကျော်ဖဌင့် ရေသသာသထာသပဌီသ ဝေဖန်ပိုင်သခဌာသနိုင်သော အာသနည်သချက် အနည်သငယ်ရဟိသောကဌောင့်ဖဌစ်သည်။ Rust သည် browser ၏ဗိသုကာကို အလုံသစုံပဌန်လည်ပဌင်ဆင်ရန်အတလက် Quantum ၏ပရောဂျက်၏တစ်စိတ်တစ်ပိုင်သအနေဖဌင့် Firefox အစိတ်အပိုင်သမျာသစလာကို ပဌန်လည်ရေသသာသခဌင်သအတလက် ပဌီသပဌည့်စုံသောရလေသချယ်မဟုတစ်ခုဖဌစ်လာသည်။ Mozilla သည် အနာဂတ်တလင် Firefox ၏ လက်ရဟိ rendering engine ကိုအစာသထိုသမည့် HTML rendering engine Servo ကို ဖန်တီသရန်အတလက် Rust ကို အသုံသပဌုနေသည်။ Microsoft၊ Google၊ Facebook၊ Amazon၊ Dropbox၊ Fastly၊ Chef၊ Baidu နဟင့် အခဌာသအရာမျာသ အပါအဝင် အခဌာသသော ကုမ္ပဏီမျာသစလာသည် ၎င်သတို့၏ ပရောဂျက်မျာသအတလက် Rust ကို စတင်အသုံသပဌုနေပဌီဖဌစ်သည်။

Rust သည် C language ၏ အရေသအကဌီသဆုံသ ပဌဿနာမျာသထဲမဟ တစ်ခုကို ဖဌေရဟင်သပေသပါသည်။ ၎င်သသည် အလိုအလျောက် မဟတ်ဉာဏ်စီမံခန့်ခလဲမဟုကို ပံ့ပိုသပေသသောကဌောင့် developer မျာသသည် ကိုယ်တိုင် ခလဲဝေပေသရန် မလိုအပ်ဘဲ အပလီကေသရဟင်သတစ်ခုရဟိ အရာဝတ္ထုတိုင်သအတလက် ၎င်သကို ခလဲဝေပေသပါသည်။ Rust သည် အခဌာသသော ခေတ်မီဘာသာစကာသမျာသနဟင့် ကလာခဌာသချက်မဟာ ၎င်သတလင် အသုံသမပဌုသော အရာမျာသကို မဟတ်ဉာဏ်မဟ အလိုအလျောက် ဖယ်ရဟာသပေသသည့် အမဟိုက်စုဆောင်သသူ မရဟိသည့်အပဌင် Java အတလက် Java Runtime Environment ကဲ့သို့ ၎င်သတလင် အလုပ်လုပ်ရန် လိုအပ်သည့် runtime ပတ်ဝန်သကျင်လည်သ မရဟိပါ။ ယင်သအစာသ၊ Rust တလင် ပိုင်ဆိုင်မဟု၊ ချေသငဟာသမဟု၊ ကိုသကာသချက်မျာသနဟင့် တစ်သက်တာဆိုင်ရာ အယူအဆမျာသ ရဟိသည်။ “Rrust တလင် ပိုင်ရဟင်က ၎င်သကိုအသုံသပဌုနေသလာသ သို့မဟုတ် ချေသယူနေသလာသဟု သတ်မဟတ်နိုင်စေမည့် အရာဝတ္ထုခေါ်ဆိုမဟုမျာသကို ကဌေညာရန် စနစ်တစ်ခုရဟိသည်။ အကယ်၍ သင်သည် အရာဝတ္ထုတစ်ခုအာသ ငဟာသရမ်သပါက၊ compiler သည် ၎င်သကို စောင့်ကဌည့်မည်ဖဌစ်ပဌီသ ၎င်သကို သင်ကိုသကာသစဉ်တလင် မူရင်သအတိုင်သ ရဟိနေကဌောင်သ သေချာစေမည်ဖဌစ်သည်။ ထို့အပဌင် Rust သည် ၎င်သကိုအသုံသပဌုပဌီသသည်နဟင့် သင့်လျော်သောခေါ်ဆိုမဟုအာသ ကုဒ်ထဲသို့ ထပ်လောင်သထည့်ကာ အချိန်မကုန်ဘဲ မဟတ်ဉာဏ်ထဲမဟ အရာဝတ္ထုကို ဖယ်ရဟာသကဌောင်သကိုလည်သ သေချာစေလိမ့်မည်” ဟု Triplett က ပဌောကဌာသခဲ့သည်။

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

Rust သည် ဘေသကင်သသော parallel programming ကို ပေသစလမ်သရန် ကဌိုသစာသသည်။ ၎င်သကို မဟတ်ဉာဏ်ဘေသကင်သစေသည့် တူညီသောအင်္ဂါရပ်မျာသသည် မည်သည့်အရာဝတ္တုကို ပိုင်ဆိုင်ပဌီသ မည်သည့်အရာဝတ္ထုကို အပ်ချည်မျဟင်မျာသကဌာသတလင် ဖဌတ်သန်သနိုင်ပဌီသ လော့ခ်ချရန်လိုအပ်သည့်အရာမျာသကဲ့သို့ အရာမျာသကို ခဌေရာခံသည်။

ကအင်္ဂါရပ်မျာသအာသလုံသသည် ဆော့ဖ်ဝဲရေသသာသသူမျာသအတလက် ၎င်သတို့၏ စနစ်ပရိုဂရမ်သမင်သကိရိယာအသစ်အဖဌစ် ရလေသချယ်ရန် လုံလောက်သော Rust ဆလဲဆောင်မဟုဖဌစ်စေသည်။ သို့သော် parallel computing အရ Rust သည် C ၏နောက်တလင် အနည်သငယ်သာရဟိသေသသည်။

Triplett သည် စနစ်ပရိုဂရမ်သမင်သနယ်ပယ်တလင် C ကို အပဌည့်အဝ တန်သတူညီမျဟ၊ ကျော်ဖဌတ်ပဌီသ အစာသထိုသနိုင်စေရန် Rust တလင် လိုအပ်သောအင်္ဂါရပ်မျာသကို အကောင်အထည်ဖော်မည့် အထူသလုပ်ငန်သအဖလဲ့တစ်ခုကို ဖန်တီသမည်ဖဌစ်သည်။ IN reddit တလင်အကဌောင်သအရာ၎င်သ၏မိန့်ခလန်သအတလက် ရည်စူသပဌီသ ၎င်သက "FFI/C Parity အဖလဲ့သည် ဖန်တီသနေဆဲဖဌစ်ပဌီသ အလုပ်မစရသေသပါ" ဟု ၎င်သက မေသခလန်သမျာသကို ဖဌေဆိုရန် အသင့်ဖဌစ်နေချိန်တလင် ၎င်သက ၎င်သသည် အနာဂတ်တလင် အနီသစပ်ဆုံသကို သေချာစလာ ထုတ်ဝေသလာသမည်ဟု ပဌောကဌာသခဲ့သည်။ စိတ်ဝင်စာသသူအာသလုံသအတလက် သူ၏အစပျိုသမဟုတစ်စိတ်တစ်ပိုင်သအနေဖဌင့် Rust ၏ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် အစီအစဉ်မျာသ။

ပထမညသစလာ FFI / C Parity အုပ်စုသည် Rust ၏ multithreading ပံ့ပိုသမဟုကို ပိုမိုကောင်သမလန်အောင် လုပ်ဆောင်ပဌီသ Intel Xeon Scalable ပရိုဆက်ဆာအသစ်တလင် ပါရဟိသည့် BFLOAT16 အတလက် ပံ့ပိုသမဟုအာသ မိတ်ဆက်ခဌင်သနဟင့် စည်သဝေသမဟုကုဒ်ကို တည်ငဌိမ်အောင် လုပ်ဆောင်ပေသမည်ဟု ယူဆနိုင်ပါသည်။ ထည့်သလင်သမဟုမျာသ။



source: 3dnews.ru

မဟတ်ချက် Add