"Rust - бул системалык программалоонун келечеги, C - жаңы ассемблер" - Intelдин алдыңкы инженерлеринин бири

Жакында өткөн ачык булак технологиясы саммитинде (OSTS) Джош Триплетт, Intel компаниясынын улук инженери, анын компаниясы Rustтун жакынкы келечекте дагы системалар жана төмөнкү деңгээлдеги өнүгүү үстөмдүк кылган Си тили менен "паритетине" жетүүгө кызыкдар экенин айтты. Анын суйлеген сезунде "Intel жана Rust: Системалык программалоонун келечеги" деген темада ал ошондой эле системалык программалоонун тарыхы, Си кантип демейки системалык программалоо тили болуп калганы, Rustтун кандай өзгөчөлүктөрү ага Сиге караганда артыкчылык бергени жана ал кантип толугу менен бүтө аларын айтып берди. программалоонун бул чөйрөсүндө C алмаштырыңыз.

"Rust - бул системалык программалоонун келечеги, C - жаңы ассемблер" - Intelдин алдыңкы инженерлеринин бири

Системалык программалоо - бул программалык камсыздоону иштеп чыгуу жана башкаруу, ал тиркеме тиркемелерин түзүү үчүн платформа катары кызмат кылат, акыркыларынын процессор, оперативдүү эс, киргизүү/чыгарма түзүлүштөрү жана тармактык жабдуулар менен өз ара аракеттенүүсүн камсыз кылуу. Системалык программалык камсыздоо интерфейстер түрүндөгү атайын абстракцияны түзөт, алар аппараттык жабдыктын өзү кантип иштээри жөнүндө майда-чүйдөсүнө чейин изилдебестен, колдонмо программалык камсыздоону түзүүгө жардам берет.

Триплетт өзү системалык программалоону “колдонмо болуп саналбаган бардык нерсе” деп аныктайт. Ал BIOS, микропрограмма, жүктөөчүлөр жана операциялык системанын өзөктөрү, камтылган төмөнкү деңгээлдеги коддун ар кандай түрлөрү жана виртуалдык машинаны ишке ашыруу сыяктуу нерселерди камтыйт. Кызыктуусу, Триплетт веб-браузерди системалык программалык камсыздоо деп эсептейт, анткени браузер эбак эле "программа" эмес, өз алдынча "веб-сайттар жана веб-тиркемелер үчүн платформа" болуп калган.

Мурда көпчүлүк системалык программалар, анын ичинде BIOS, жүктөөчүлөр жана микропрограммалар ассемблер тилинде жазылган. 1960-жылдары эксперименттер PL/S, BLISS, BCPL жана ALGOL 68 сыяктуу тилдерди түзүүгө алып келген жогорку деңгээлдеги тилдерге аппараттык колдоо көрсөтө баштады.

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

С бул багытта зор колдоого ээ болду. Бирок иштеп чыгуучулар ага өтүүгө эмне себеп болду? Триплетт иштеп чыгуучуларды бир программалоо тилинен экинчисине өтүүгө түрткү берүү үчүн, экинчиси адегенде эски функцияларды жоготпостон жаңы функцияларды бериши керек деп эсептейт.

Биринчиден, тил "эстүүлүктүү таасирдүү" жаңы мүмкүнчүлүктөрдү сунуш кылышы керек. «Ал мындан жакшыраак болушу мүмкүн эмес. Өткөөлдү ишке ашыруу үчүн талап кылынган күч-аракетти жана инженердик убакытты актоо үчүн кыйла жакшыраак болушу керек ", - деп түшүндүрөт ал. Ассемблер тили менен салыштырганда, С сунуш кыла турган нерселер көп болчу. Ал кандайдыр бир типтеги коопсуз жүрүм-турумду колдоду, жогорку деңгээлдеги конструкциялар менен жакшыраак көчүрүүнү жана аткарууну камсыз кылды жана жалпысынан алда канча окула турган кодду жаратты.

Экинчиден, тил эски функцияларды колдоону камсыз кылышы керек, демек, Сиге өтүү тарыхында иштеп чыгуучулар анын функционалдык ассемблер тилинен кем эмес экенине ишениши керек болчу. Триплетт мындай деп түшүндүрөт: "Жаңы тил жакшыраак болушу мүмкүн эмес, ал ошондой эле жакшы болушу керек." Тезирээк жана ассемблер тили колдоно ала турган ар кандай маалымат түрүн колдоодон тышкары, Си ошондой эле Триплетттин "качуу люку" деп атаган нерсеге ээ болгон, тактап айтканда, анын ичинде ассемблер тилинин кодун киргизүүнү колдогон.

"Rust - бул системалык программалоонун келечеги, C - жаңы ассемблер" - Intelдин алдыңкы инженерлеринин бири

Триплетт Си азыр көп жылдар мурун ассемблер тилине айланып баратат деп эсептейт. "С жаңы монтаждоочу", - деп жарыялайт ал. Азыр иштеп чыгуучулар C тилинде топтолгон, мындан ары оңдоого болбой турган көйгөйлөрдү чечпестен, кызыктуу жаңы функцияларды сунуштаган жаңы жогорку деңгээлдеги тилди издеп жатышат. Мындай тил иштеп чыгуучуларга ага өтүү үчүн жетиштүү ынанымдуу болушу керек, коопсуз болушу керек, эстутумду автоматтык башкарууну камсыз кылышы керек жана башкалар.

“С тилинен жакшыраак болгусу келген ар бир тил, эгерде ал чындап эле ынанымдуу альтернатива болууну кааласа, буфердик толуп кетүүдөн коргоону гана сунушташы керек. Иштеп чыгуучулар колдонууга жана аткарууга, өзүн-өзү түшүндүрүүчү код жазууга жана азыраак саптарда көбүрөөк иштөөгө кызыкдар. Коопсуздук маселелери да чечилиши керек. Колдонуу жана аткаруунун жөнөкөйлүгү жанаша жүрөт. Бир нерсеге жетүү үчүн канчалык азыраак код жазышыңыз керек болсо, коопсуздукка байланыштуу болобу же жокпу, ката кетирүү мүмкүнчүлүгүңүз ошончолук аз болот”, - деп түшүндүрөт Триплетт.

Rust менен C. салыштыруу

2006-жылы Mozilla кызматкери Грейдон Хоар жеке долбоор катары Rustти жаза баштаган. Ал эми 2009-жылы, Mozilla өз муктаждыктары үчүн Rust өнүктүрүүгө демөөрчүлүк баштады, ошондой эле тилди андан ары өнүктүрүү үчүн команданы кеңейтүү.

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

Rust C тилинин эң маанилүү көйгөйлөрүнүн бирин чечет, ал эстутумду автоматтык түрдө башкарууну сунуштайт, андыктан иштеп чыгуучулар аны тиркемедеги ар бир объект үчүн кол менен бөлүп, анан бошотпойт. Rust башка заманбап тилдерден айырмаланып турган нерсе, анын эстутумдан пайдаланылбаган объекттерди автоматтык түрдө алып салуучу таштанды жыйгычы жок жана Java үчүн Java Runtime Environment сыяктуу иштөө үчүн талап кылынган иштөө чөйрөсү жок. Анын ордуна, Rust ээлик кылуу, карыз алуу, шилтемелер жана өмүр бою түшүнүктөрү бар. «Растта объектке чалууларды жарыялоо системасы бар, анын ээси аны пайдаланып жатканын же жөн эле карызга алып жатканын көрсөтүү үчүн. Эгер сиз жөн гана объектти карызга алсаңыз, компилятор буга көз салып турат жана сиз ага шилтеме кылганыңызда оригинал ордунда калышын камсыздайт. Rust дагы кошумча убакытсыз компиляция убагында кодго тиешелүү чалууну киргизип, объектти колдонуу аяктагандан кийин дароо эс тутумдан алып салууну камсыздайт”, - дейт Триплетт.

Жергиликтүү иштөө убактысынын жоктугу да Rustтун оң өзгөчөлүгү катары каралышы мүмкүн. Триплетт ал иштеген тилдерди системалык программалоо куралдары катары колдонуу кыйын деп эсептейт. Ал түшүндүргөндөй: "Кандайдыр бир кодду чакырардан мурун бул иштөө убактысын инициализациялашыңыз керек, бул иштөө убактысын функцияларды чакыруу үчүн колдонушуңуз керек жана иштөө убактысынын өзү күтүлбөгөн убакта артыңыздан кошумча кодду иштетиши мүмкүн."

Rust ошондой эле коопсуз параллелдүү программалоону камсыз кылууга умтулат. Эстутумду коопсуз кылган ошол эле функциялар кайсы жип кайсы объектке таандык экенин жана жиптердин ортосунда кайсы объекттерди өткөрүүгө болоорун жана кайсынысын кулпуга муктаж болгон нерселерге көз салып турат.

Бардык ушул өзгөчөлүктөр Rustту иштеп чыгуучуларга системалык программалоонун жаңы куралы катары тандоого жетиштүү кылат. Бирок, параллелдүү эсептөө жагынан Rust дагы эле С.

Триплетт системалык программалоо чөйрөсүндө C менен толук теңдеш, ашып түшүү жана алмаштыруу үчүн зарыл болгон функцияларды Rustко киргизүүгө багытталган атайын жумушчу топ түзүүгө ниеттенүүдө. IN Reddit боюнча жип, өзүнүн сөзүнө арналган, ал "FFI/C Parity тобу түзүлүүдө жана али иштей элек" деди, азырынча ал бардык суроолорго жооп берүүгө даяр жана келечекте сөзсүз түрдө жакынкы пландарды жарыялайт. бардык кызыкдар тараптар үчүн анын демилгесинин бөлүгү катары Rust өнүктүрүү үчүн.

FFI/C Parity тобу биринчи кезекте Rust'та көп агымдуу колдоону жакшыртууга, BFLOAT16, жаңы Intel Xeon Scalable процессорлорунда пайда болгон калкыма чекит форматын колдоону киргизүүгө, ошондой эле стабилдештирүүчү монтажга басым жасайт деп болжолдоого болот. кодду киргизүү.



Source: 3dnews.ru

Комментарий кошуу