"Rust - bu tizim dasturlashning kelajagi, C - yangi assembler" - Intelning etakchi muhandislaridan biri nutqi

Yaqinda bo'lib o'tgan Ochiq manba texnologiyalari sammitida (OSTS) Josh Triplett, Intel kompaniyasining katta muhandisi, uning kompaniyasi Rustning yaqin kelajakda tizimlar va past darajadagi rivojlanishda hali ham hukmronlik qiladigan C tili bilan "paritet" ga erishishdan manfaatdor ekanligini aytdi. O'z nutqida "Intel va Rust: tizimli dasturlashning kelajagi" sarlavhasi ostida u, shuningdek, tizim dasturlash tarixi, C qanday qilib standart tizim dasturlash tiliga aylangani, Rustning qaysi xususiyatlari unga C dan ustunlik berishi va u qanday qilib to'liq foydalanishi mumkinligi haqida gapirdi. ushbu dasturlash sohasida C ni almashtiring.

"Rust - bu tizim dasturlashning kelajagi, C - yangi assembler" - Intelning etakchi muhandislaridan biri nutqi

Tizimli dasturlash - bu amaliy dasturlarni yaratish uchun platforma bo'lib xizmat qiladigan dasturiy ta'minotni ishlab chiqish va boshqarish, ularning protsessor, operativ xotira, kiritish/chiqarish qurilmalari va tarmoq uskunalari bilan o'zaro ta'sirini ta'minlash. Tizimli dasturiy ta'minot interfeyslar ko'rinishidagi maxsus abstraktsiyani yaratadi, bu apparatning o'zi qanday ishlashini batafsil o'rganmasdan amaliy dasturiy ta'minotni yaratishga yordam beradi.

Triplettning o'zi tizimli dasturlashni "ilova bo'lmagan har qanday narsa" deb ta'riflaydi. U BIOS, proshivka, yuklash moslamalari va operatsion tizim yadrolari, turli xil o'rnatilgan past darajadagi kodlar va virtual mashina ilovalari kabi narsalarni o'z ichiga oladi. Qizig'i shundaki, Triplett veb-brauzer ham tizimli dasturiy ta'minot deb hisoblaydi, chunki brauzer allaqachon "shunchaki dastur" emas, balki mustaqil "veb-saytlar va veb-ilovalar uchun platforma" ga aylangan.

Ilgari ko'pgina tizim dasturlari, jumladan BIOS, yuklash dasturlari va proshivkalar assembler tilida yozilgan. 1960-yillarda tajribalar yuqori darajadagi tillar uchun apparat ta'minotini ta'minlay boshladi, bu esa PL/S, BLISS, BCPL va ALGOL 68 kabi tillarni yaratishga olib keldi.

Keyin, 1970-yillarda Dennis Ritchie Unix operatsion tizimi uchun C dasturlash tilini yaratdi. Hatto yozishni qo'llab-quvvatlamaydigan B dasturlash tilida yaratilgan C operatsion tizimlar va drayverlarni yozish uchun eng mos keladigan kuchli yuqori darajadagi funktsiyalar bilan to'ldirilgan. UNIX ning bir qancha komponentlari, jumladan uning yadrosi, oxir-oqibat C tilida qayta yozildi. Keyinchalik, ko'plab boshqa tizim dasturlari, jumladan Oracle ma'lumotlar bazasi, Windows manba kodining katta qismi va Linux operatsion tizimi ham C tilida yozildi.

C bu yo'nalishda katta yordam oldi. Ammo ishlab chiquvchilarni unga o'tishga nima majbur qildi? Triplettning fikricha, ishlab chiquvchilarni bir dasturlash tilidan ikkinchisiga o‘tishga undash uchun, avvalo, ikkinchisi eski funksiyalarni yo‘qotmagan holda yangi funksiyalarni taqdim etishi kerak.

Birinchidan, til "oqilona ta'sirli" yangi xususiyatlarni taklif qilishi kerak. “U bundan yaxshiroq bo'lishi mumkin emas edi. O'tishni amalga oshirish uchun zarur bo'lgan kuch va muhandislik vaqtini oqlash ancha yaxshi bo'lishi kerak ", deb tushuntiradi u. Assembly tili bilan solishtirganda, C taklif qiladigan narsalar juda ko'p edi. U ma'lum darajada xavfsiz xatti-harakatlarni qo'llab-quvvatladi, yuqori darajadagi konstruktsiyalar bilan yaxshiroq portativlik va ishlashni ta'minladi va umuman olganda ancha o'qilishi mumkin bo'lgan kodni yaratdi.

Ikkinchidan, til eski xususiyatlarni qo'llab-quvvatlashi kerak, ya'ni C ga o'tish tarixida ishlab chiquvchilar uning funktsionalligi assembler tilidan kam emasligiga ishonch hosil qilishlari kerak edi. Triplett tushuntiradi: "Yangi til shunchaki yaxshiroq bo'lishi mumkin emas, u ham yaxshi bo'lishi kerak." Tezroq bo'lishi va montaj tilidan foydalanishi mumkin bo'lgan har qanday ma'lumot turini qo'llab-quvvatlashdan tashqari, C Triplett "qochish lyuk" deb atagan narsaga ham ega edi, ya'ni u o'zida assembler tili kodini kiritishni qo'llab-quvvatladi.

"Rust - bu tizim dasturlashning kelajagi, C - yangi assembler" - Intelning etakchi muhandislaridan biri nutqi

Triplettning fikricha, C endi ko'p yillar oldin assembler tiliga aylanmoqda. "C - yangi assembler", deb e'lon qiladi u. Endi ishlab chiquvchilar nafaqat C tilida to'plangan va endi tuzatib bo'lmaydigan muammolarni hal qiladigan, balki qiziqarli yangi xususiyatlarni taqdim etadigan yangi yuqori darajadagi tilni qidirmoqdalar. Bunday til ishlab chiquvchilarni unga o'tishga majbur qilish uchun etarlicha jozibali bo'lishi kerak, xavfsiz bo'lishi kerak, xotirani avtomatik boshqarishni ta'minlaydi va yana ko'p narsalar.

“C tilidan yaxshiroq bo'lishni xohlaydigan har qanday til, agar u haqiqatan ham jozibali muqobil bo'lishni istasa, shunchaki buferdan himoya qilishdan ko'ra ko'proq narsani taklif qilishi kerak. Ishlab chiquvchilar qulaylik va ishlash, o'z-o'zidan tushunarli va kamroq satrlarda ko'proq ish qiladigan kod yozishga qiziqishadi. Xavfsizlik masalalarini ham hal qilish kerak. Foydalanish qulayligi va unumdorligi yonma-yon ketadi. Biror narsaga erishish uchun qancha kamroq kod yozishingiz kerak bo'lsa, xavfsizlik bilan bog'liq yoki yo'q xato qilish imkoniyati shunchalik kam bo'ladi”, deb tushuntiradi Triplett.

Rust va C ni solishtirish

2006 yilda Mozilla xodimi Greydon Xoar shaxsiy loyiha sifatida Rustni yozishni boshladi. Va 2009 yilda Mozilla o'z ehtiyojlari uchun Rustning rivojlanishiga homiylik qilishni boshladi, shuningdek, tilni yanada rivojlantirish uchun jamoani kengaytirdi.

Mozilla-ning yangi tilga qiziqishining sabablaridan biri shundaki, Firefox 4 milliondan ortiq C++ kodida yozilgan va bir qancha muhim zaifliklarga ega edi. Rust brauzer arxitekturasini butunlay qayta ishlab chiqish uchun Quantum loyihasining bir qismi sifatida Firefox-ning ko'plab komponentlarini qayta yozish uchun ideal tanlov bo'lib, xavfsizlik va parallellikni hisobga olgan holda qurilgan. Mozilla, shuningdek, Rust-dan hozirgi Firefox renderlash mexanizmini almashtiradigan Servo, HTML renderlash mexanizmini ishlab chiqish uchun foydalanmoqda. Ko'pgina boshqa kompaniyalar o'z loyihalari uchun Rust-dan foydalanishni boshladilar, jumladan Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu va boshqalar.

Rust C tilining eng muhim muammolaridan birini hal qiladi.U avtomatik xotira boshqaruvini taklif qiladi, shuning uchun ishlab chiquvchilar uni ilovadagi har bir ob'ekt uchun qo'lda ajratib, keyin bo'shatishlari shart emas. Rustning boshqa zamonaviy tillardan farqi shundaki, unda foydalanilmagan ob'ektlarni xotiradan avtomatik ravishda olib tashlaydigan axlat yig'uvchi yoki Java uchun Java Runtime Environment kabi ishlashi uchun zarur bo'lgan ish vaqti muhiti mavjud emas. Buning o'rniga, Rust egalik, qarz olish, ma'lumotnomalar va umr bo'yi tushunchalariga ega. “Rust-da ob'ektga qo'ng'iroqlarni e'lon qilish tizimi mavjud bo'lib, u egasi undan foydalanayotganini yoki shunchaki qarzga olganligini ko'rsatadi. Agar siz oddiygina ob'ektni qarzga olsangiz, kompilyator buni kuzatib boradi va siz unga havola qilguningizcha asl nusxasi joyida qolishiga ishonch hosil qiladi. Rust shuningdek, ob'ekt foydalanish tugashi bilan xotiradan olib tashlanishini ta'minlaydi va kompilyatsiya vaqtida kodga qo'shimcha vaqtsiz tegishli qo'ng'iroqni kiritadi ", deydi Triplett.

Mahalliy ish vaqtining yo'qligi ham Rustning ijobiy xususiyati deb hisoblanishi mumkin. Triplettning fikricha, u ishlaydigan tillarni tizim dasturlash vositalari sifatida ishlatish qiyin. U tushuntirganidek: "Har qanday kodga qo'ng'iroq qilishdan oldin ushbu ish vaqtini ishga tushirishingiz kerak, funksiyalarni chaqirish uchun ushbu ish vaqtini ishlatishingiz kerak va ish vaqtining o'zi kutilmagan paytlarda sizning orqangizda qo'shimcha kodni ishga tushirishi mumkin."

Rust ham xavfsiz parallel dasturlashni ta'minlashga intiladi. Uni xotira xavfsizligini ta'minlaydigan bir xil xususiyatlar, masalan, qaysi ip qaysi ob'ektga tegishli ekanligini va qaysi ob'ektlarni iplar o'rtasida o'tkazish mumkinligini va qaysi biri qulfga muhtojligini kuzatib boradi.

Bu xususiyatlarning barchasi Rustni ishlab chiquvchilar uchun tizimni dasturlash uchun yangi vosita sifatida tanlashga majbur qiladi. Biroq, parallel hisoblash nuqtai nazaridan Rust hali ham C dan biroz orqada.

Triplett tizimli dasturlash sohasida C ni toʻliq tenglashtirishi, undan oshib ketishi va oʻrnini bosishi uchun Rust-ga kerakli funksiyalarni joriy etishga eʼtibor qaratadigan maxsus ishchi guruh yaratmoqchi. IN Reddit-dagi mavzu, o'z nutqiga bag'ishlangan, u "FFI/C Parity guruhi yaratilish jarayonida va hali ish boshlamagan", dedi u, hozircha u har qanday savollarga javob berishga tayyor va kelajakda u aniq rejalarni e'lon qiladi. barcha manfaatdor tomonlar uchun uning tashabbusi doirasida Rust rivojlanishi uchun.

Taxmin qilish mumkinki, FFI/C Parity guruhi birinchi navbatda Rust-da ko'p tarmoqli qo'llab-quvvatlashni yaxshilashga, yangi Intel Xeon Scalable protsessorlarida paydo bo'lgan suzuvchi nuqta formati BFLOAT16-ni qo'llab-quvvatlashni joriy etishga, shuningdek, yig'ilishni barqarorlashtirishga e'tibor qaratadi. kodlarni kiritish.



Manba: 3dnews.ru

a Izoh qo'shish