«Rust – жүйелік бағдарламалаудың болашағы, С – жаңа ассемблер» – Intel жетекші инженерлерінің бірінің сөзі

Жақында өткен ашық бастапқы технологиялар саммитінде (OSTS) Джош Триплетт, Intel жетекші инженері, оның компаниясы Rust-тың жақын болашақта жүйелер мен төмен деңгейлі даму саласында әлі де басым болып отырған С-мен «паритетке» жетуіне мүдделі екенін айтты. Өз сөзінде «Intel және Rust: Жүйелік бағдарламалаудың болашағы» деген тақырыпта ол сондай-ақ жүйелік бағдарламалаудың тарихы, Си қалай «әдепкі» жүйелік бағдарламалау тілі болды, Rust қандай мүмкіндіктері оны С-ден артық ететіні және жақын арада қалай болатыны туралы айтты. болашақта ол бағдарламалаудың берілген аймағындағы С-ді толығымен алмастыра алады.

«Rust – жүйелік бағдарламалаудың болашағы, С – жаңа ассемблер» – Intel жетекші инженерлерінің бірінің сөзі

Жүйелік бағдарламалау – қолданбалы қосымшаларды құру платформасы қызметін атқаратын бағдарламалық жасақтаманы әзірлеу және басқару, соңғысының процессормен, жедел жадымен, енгізу-шығару құрылғыларымен және желілік жабдықпен өзара әрекеттесуін қамтамасыз етеді. Жүйелік бағдарламалық қамтамасыз ету интерфейстер түріндегі арнайы абстракцияны жасайды, ол аппараттық құралдың өзі қалай жұмыс істейтінін егжей-тегжейлі қарастырмай-ақ қолданбалы бағдарламалық жасақтаманы жасауға көмектеседі.

Триплетттің өзі жүйелік бағдарламалауды «қолданбалы емес кез келген нәрсе» деп анықтайды. Ол BIOS, микробағдарлама, жүктеуді жүктеушілер және операциялық жүйе ядролары, кірістірілген төмен деңгейлі кодтың әртүрлі түрлері және виртуалды машинаны іске асыру сияқты нәрселерді қамтиды. Бір қызығы, Триплетт веб-шолғышты да жүйелік бағдарламалық қамтамасыз ету деп санайды, өйткені браузер әлдеқашан «бағдарлама ғана» емес, тәуелсіз «веб-сайттар мен веб-қосымшаларға арналған платформаға» айналды.

Бұрын жүйелік бағдарламалардың көпшілігі, соның ішінде BIOS, жүктеушілер және микробағдарламалар ассемблер тілінде жазылған. PL/S, BLISS, BCPL және ALGOL 1960 сияқты тілдерге әкелетін жоғары деңгейлі тілдерге аппараттық қолдау көрсету үшін эксперименттер 68 жылдары басталды.

Содан кейін, 1970 жылдары Деннис Ричи Unix операциялық жүйесі үшін Си бағдарламалау тілін жасады. В бағдарламалау тілінде жасалған, тіпті теруді қолдауы да жоқ, C операциялық жүйелер мен драйверлерді жазуға ең қолайлы жоғары деңгейлі қуатты функциялармен толтырылған. UNIX-тің бірнеше құрамдас бөліктері, соның ішінде оның ядросы, сайып келгенде, C тілінде қайта жазылды. Кейінірек көптеген басқа жүйелік бағдарламалар, соның ішінде Oracle дерекқоры, Windows бастапқы кодының көпшілігі және Linux операциялық жүйесі де Си тілінде жазылды.

С бұл бағытта үлкен қолдауға ие болды. Бірақ әзірлеушілердің оған ауысуына не себеп болды? Триплетт әзірлеушілерді бір бағдарламалау тілінен екіншісіне ауысуға ынталандыру үшін, соңғысы алдымен ескі мүмкіндіктерді жоғалтпай жаңа мүмкіндіктерді қамтамасыз етуі керек деп санайды.

Біріншіден, тіл «жеткілікті әсерлі» жаңа мүмкіндіктерді ұсынуы керек. «Ол бұдан жақсырақ болуы мүмкін емес. Инженерлер ауысу үшін қажет күш пен уақытты негіздеу әлдеқайда жақсы болуы керек », - деп түсіндіреді ол. Ассемблер тілімен салыстырғанда Си тілінің ұсынатыны көп болды. Ол түр қауіпсіздігін біршама қолдады, жоғары деңгейлі конструкциялармен жақсырақ тасымалдануды және өнімділікті қамтамасыз етті және жалпы алғанда әлдеқайда оқылатын кодты жасады.

Екіншіден, тіл ескі мүмкіндіктерді қолдауды қамтамасыз етуі керек, яғни Си тіліне көшу тарихында әзірлеушілер оның функционалдық ассемблер тілінен кем емес екеніне сенімді болуы керек еді. Триплетт былай түсіндіреді: «Жаңа тіл жай ғана жақсы болуы мүмкін емес, ол сондай-ақ жақсы болуы керек». Жылдамырақ және ассемблер тілі қолдана алатын кез келген деректер түрлерін қолдаумен қатар, Си-де Триплетт «қашу люкі» деп атаған нәрсеге ие болды, атап айтқанда, оның ішіне ассемблер тілінің кодын енгізуді қолдау.

«Rust – жүйелік бағдарламалаудың болашағы, С – жаңа ассемблер» – Intel жетекші инженерлерінің бірінің сөзі

Триплетт Си тілі көптеген жылдар бұрын ассемблер тіліне айналуда деп санайды. «С - жаңа ассемблер», - дейді ол. Әзірлеушілер енді C тілінің бұдан былай түзетілмейтін мәселелерін шешіп қана қоймай, сонымен қатар қызықты жаңа мүмкіндіктерді ұсынатын жаңа жоғары деңгейлі тілді іздеуде. Мұндай тіл әзірлеушілерді оған ауысуға мәжбүрлеу үшін жеткілікті әсерлі болуы керек, қауіпсіз болуы керек, жадты автоматты басқаруды қамтамасыз етуі керек және т.б.

«С-ден жақсырақ болғысы келетін кез келген тіл, егер ол шынымен сенімді балама болғысы келсе, буфердің толып кетуінен қорғаудан әлдеқайда көп нәрсені ұсынуы керек. Әзірлеушілер ыңғайлылық пен өнімділікке, өздігінен түсіндірілетін және аз жолдарда көбірек жұмыс істейтін кодты жазуға қызығушылық танытады. Қауіпсіздік мәселелерін де шешу қажет. Пайдаланудың қарапайымдылығы мен өнімділігі онымен бірге жүреді. Бір нәрсеге қол жеткізу үшін неғұрлым аз код жазу керек болса, қауіпсіздікке қатысты немесе қауіпсіздікке қатысты емес қателерді жасау мүмкіндігі соғұрлым аз болады», - деп түсіндіреді Триплетт.

Rust және C. салыстыру

2006 жылы Mozilla қызметкері Грейдон Хоар Rust-ты жеке жоба ретінде жаза бастады. Ал 2009 жылы Mozilla өз қажеттіліктері үшін Rust әзірлеуіне демеушілік көрсете бастады, сонымен қатар тілді одан әрі дамыту үшін топты кеңейтті.

Mozilla-ның жаңа тілге қызығушылық танытуының себептерінің бірі Firefox-тың C++ кодының 4 миллионнан астам жолында жазылғаны және бірнеше маңызды осалдықтары болғаны. Rust қауіпсіздік пен параллельді ескере отырып құрастырылған, бұл браузердің архитектурасын толықтай жөндеуге арналған Quantum жобасының бөлігі ретінде көптеген Firefox компоненттерін қайта жазу үшін тамаша таңдау жасайды. Mozilla сонымен қатар болашақта Firefox-тың ағымдағы көрсету механизмін алмастыратын HTML рендеринг механизмін Servo әзірлеу үшін Rust пайдаланады. Көптеген басқа компаниялар Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu және т.б. қоса алғанда, Rust-ті өз жобалары үшін пайдалана бастады.

Rust C тілінің ең маңызды мәселелерінің бірін шешеді.Ол жадты автоматты басқаруды ұсынады, сондықтан әзірлеушілер оны қолданбадағы әрбір нысан үшін қолмен бөліп, содан кейін бөлуді қажет етпейді. Rust-тың басқа заманауи тілдерден ерекшелігі - оның жадтан пайдаланылмаған нысандарды автоматты түрде алып тастайтын қоқыс жинағышы немесе Java үшін Java Runtime Environment сияқты жұмыс істеу үшін қажет жұмыс ортасының болмауы. Оның орнына, Rust-те меншік, қарыз алу, сілтемелер және өмір сүру уақыты ұғымдары бар. «Rust-те нысанды шақыруларды жариялау жүйесі бар, ол иесі оны пайдаланып жатқанын немесе жай ғана қарыз алып жатқанын анықтауға мүмкіндік береді. Егер сіз жай ғана нысанды қарызға алсаңыз, компилятор оны қадағалайды және сіз оған сілтеме жасаған кезде түпнұсқаның орнында қалуын қамтамасыз етеді. Сондай-ақ Rust қосымша уақытсыз компиляция уақытында кодқа тиісті қоңырауды енгізе отырып, оны пайдалануды аяқтаған бойда оның жадтан жойылуын қамтамасыз етеді», - дейді Триплетт.

Жергілікті орындалу уақытының болмауы да Rust-тың оң ерекшелігі деп санауға болады. Триплетт онымен жұмыс істейтін тілдерді жүйелік бағдарламалау құралы ретінде пайдалану қиын деп санайды. Ол түсіндіреді: «Кез келген кодты шақырмас бұрын осы жұмыс уақытын инициализациялау керек, функцияларды шақыру үшін осы орындалу уақытын пайдалану керек және орындалу уақытының өзі күтпеген уақытта сіздің артыңызда қосымша кодты іске қосуы мүмкін».

Rust сонымен қатар қауіпсіз параллельді бағдарламалауды қамтамасыз етуге тырысады. Оны жадты қауіпсіз ететін мүмкіндіктер қай ағынның қандай нысанға иелік ететінін және ағындар арасында қандай нысандарды өткізуге болатынын және қайсысы құлыптауды қажет ететінін бақылайды.

Барлық осы мүмкіндіктер Rust-ті әзірлеушілерге жаңа жүйелік бағдарламалау құралы ретінде таңдауға жеткілікті түрде мәжбүр етеді. Дегенмен, параллельді есептеулер тұрғысынан Rust әлі де C-ден сәл артта қалды.

Триплетт жүйелік бағдарламалау саласында C тілін толығымен теңестіріп, басып озып, алмастыра алатындай Rust-та қажетті мүмкіндіктерді жүзеге асыратын арнайы жұмыс тобын құрмақшы. IN reddit-тегі тақырып, өз сөзіне арнап, ол «FFI/C Parity тобы құрылу үстінде және әлі жұмысын бастамағанын» айтты, сонымен бірге ол кез келген сұрақтарға жауап беруге дайын және болашақта ол міндетті түрде жақын арада жариялайды. барлық мүдделі тараптар үшін оның бастамасының бөлігі ретінде Rust дамыту жоспарлары.

Ең алдымен, FFI / C Parity тобы Rust-тің көп ағынды қолдауын жақсартумен, жаңа Intel Xeon Scalable процессорларында пайда болған өзгермелі нүкте пішімі BFLOAT16 қолдауын енгізумен, сондай-ақ құрастыру кодын тұрақтандырумен айналысады деп болжауға болады. кірістірулер.



Ақпарат көзі: 3dnews.ru

пікір қалдыру