"Rust sistem proqramlaşdırmasının gələcəyidir, C yeni assemblerdir" - Intel-in aparıcı mühəndislərindən birinin çıxışı

Son Açıq Mənbə Texnologiya Zirvəsində (OSTS) Josh Triplett, Intel şirkətinin baş mühəndisi dedi ki, onun şirkəti Rustun yaxın gələcəkdə hələ də sistemlərə və aşağı səviyyəli inkişafa hakim olan C dili ilə “paritetə” çatmasında maraqlıdır. Çıxışında “Intel and Rust: The Future of Systems Programming” başlığı altında o, həmçinin sistem proqramlaşdırmasının tarixindən, C-nin standart sistem proqramlaşdırma dilinə çevrilməsindən, Rust-un hansı xüsusiyyətlərinin ona C-dən üstünlüyünü verdiyindən və tamamilə necə işləyə biləcəyindən danışdı. proqramlaşdırmanın bu sahəsində C-ni əvəz edin.

"Rust sistem proqramlaşdırmasının gələcəyidir, C yeni assemblerdir" - Intel-in aparıcı mühəndislərindən birinin çıxışı

Sistem proqramlaşdırması, proqram təminatının işlənib hazırlanması və idarə edilməsidir ki, bu proqram tətbiqetmələrin yaradılması platforması kimi çıxış edir, sonuncunun prosessor, operativ yaddaş, giriş/çıxış cihazları və şəbəkə avadanlığı ilə qarşılıqlı əlaqəsini təmin edir. Sistem proqram təminatı, aparatın özünün necə işlədiyinə dair təfərrüatları araşdırmadan tətbiqi proqram təminatı yaratmağa kömək edən interfeyslər şəklində xüsusi abstraksiya yaradır.

Triplett özü sistem proqramlaşdırmasını “tətbiq olmayan hər şey” kimi təyin edir. Buraya BIOS, proqram təminatı, yükləyicilər və əməliyyat sistemi ləpələri, müxtəlif daxili aşağı səviyyəli kodlar və virtual maşın tətbiqləri kimi şeylər daxildir. Maraqlıdır ki, Triplett hesab edir ki, veb-brauzer həm də sistem proqram təminatıdır, çünki brauzer çoxdan “sadəcə proqram” olmaqdan artıq, müstəqil “veb-saytlar və veb proqramlar üçün platformaya” çevrilib.

Keçmişdə əksər sistem proqramları, o cümlədən BIOS, yükləyicilər və mikroproqramlar montaj dilində yazılmışdır. 1960-cı illərdə eksperimentlər yüksək səviyyəli dillər üçün aparat dəstəyi verməyə başladı və bu, PL/S, BLISS, BCPL və ALGOL 68 kimi dillərin yaradılmasına gətirib çıxardı.

Daha sonra, 1970-ci illərdə Dennis Ritchie Unix əməliyyat sistemi üçün C proqramlaşdırma dilini yaratdı. Yazı dəstəyi belə olmayan B proqramlaşdırma dilində yaradılmış C əməliyyat sistemləri və sürücülərin yazılması üçün ən uyğun olan güclü yüksək səviyyəli funksiyalarla dolu idi. UNIX-in bir neçə komponenti, o cümlədən onun nüvəsi, nəticədə C dilində yenidən yazılmışdır. Sonradan, Oracle verilənlər bazası, Windows mənbə kodunun çox hissəsi və Linux əməliyyat sistemi də daxil olmaqla bir çox digər sistem proqramları da C dilində yazılmışdır.

C bu istiqamətdə böyük dəstək aldı. Bəs tərtibatçıları ona keçməyə nə məcbur etdi? Triplett hesab edir ki, tərtibatçıları bir proqramlaşdırma dilindən digərinə keçməyə sövq etmək üçün sonuncu əvvəlcə köhnə funksiyaları itirmədən yeni funksiyalar təqdim etməlidir.

Birincisi, dil "ağlabatan dərəcədə təsir edici" yeni xüsusiyyətlər təqdim etməlidir. “O, daha yaxşı ola bilməzdi. Keçid üçün lazım olan səyləri və mühəndislik vaxtını əsaslandırmaq əhəmiyyətli dərəcədə daha yaxşı olmalıdır”, o izah edir. Assembly dili ilə müqayisədə C-nin təklif edəcəyi çox şey var idi. O, bir növ təhlükəsiz davranışı dəstəklədi, yüksək səviyyəli konstruksiyalarla daha yaxşı daşınma və performans təmin etdi və ümumilikdə daha oxunaqlı kod yaratdı.

İkincisi, dil köhnə funksiyaları dəstəkləməlidir, yəni C-yə keçid tarixində tərtibatçılar onun assembler dilindən heç də az funksional olmadığına əmin olmalı idilər. Triplett izah edir: "Yeni bir dil yalnız daha yaxşı ola bilməz, həm də yaxşı olmalıdır." Daha sürətli olması və montaj dilinin istifadə edə biləcəyi hər hansı bir məlumat növünü dəstəkləməklə yanaşı, C Triplett'in "qaçış lyuku" adlandırdığı şeyə də sahib idi - yəni montaj dili kodunu özünə daxil etməyi dəstəkləyir.

"Rust sistem proqramlaşdırmasının gələcəyidir, C yeni assemblerdir" - Intel-in aparıcı mühəndislərindən birinin çıxışı

Triplett hesab edir ki, C indi illər əvvəl assembler dilinə çevrilir. "C yeni montajçıdır" dedi. İndi tərtibatçılar nəinki C-də yığılmış və artıq həll edilə bilməyən problemləri həll edəcək, həm də maraqlı yeni funksiyalar təklif edəcək yeni yüksək səviyyəli dil axtarırlar. Belə bir dil tərtibatçıları ona keçməyə məcbur etmək üçün kifayət qədər cəlbedici olmalıdır, təhlükəsiz olmalıdır, yaddaşın avtomatik idarə edilməsini təmin etməlidir və s.

“C-dən daha yaxşı olmaq istəyən hər hansı bir dil, həqiqətən də cəlbedici bir alternativ olmaq istəyirsə, sadəcə bufer daşqın qorunmasından daha çox şey təklif etməlidir. Tərtibatçılar istifadəyə yararlılıq və performans, özünü izah edən və daha az sətirdə daha çox iş görən kod yazmaqla maraqlanır. Təhlükəsizlik məsələləri də həll edilməlidir. İstifadə rahatlığı və performans əl-ələ verir. Nəyəsə nail olmaq üçün nə qədər az kod yazmalısan, təhlükəsizliklə bağlı və ya olmasın hər hansı bir səhv etmək şansın bir o qədər az olacaq”, - Triplett izah edir.

Rust və C-nin müqayisəsi

Hələ 2006-cı ildə Mozilla əməkdaşı Qreydon Hoare şəxsi layihə kimi Rust yazmağa başladı. Və 2009-cu ildə Mozilla öz ehtiyacları üçün Rust-un inkişafına sponsorluq etməyə başladı və həmçinin dili daha da inkişaf etdirmək üçün komandanı genişləndirdi.

Mozilla-nın yeni dillə maraqlanmasının səbəblərindən biri Firefox-un 4 milyondan çox C++ kodunda yazılması və kifayət qədər kritik boşluqlara malik olmasıdır. Rust təhlükəsizlik və paralellik nəzərə alınmaqla qurulmuşdur və bu, brauzerin arxitekturasını tamamilə yenidən dizayn etmək üçün Quantum layihəsinin bir hissəsi kimi Firefox-un bir çox komponentlərini yenidən yazmaq üçün ideal seçimdir. Mozilla həmçinin Rust-dan hazırkı Firefox render mühərrikini əvəz edəcək HTML render mühərriki olan Servo-nu inkişaf etdirmək üçün istifadə edir. Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu və bir çox başqa şirkətlər də daxil olmaqla bir çox digər şirkətlər Rust-dan öz layihələri üçün istifadə etməyə başladılar.

Rust C dilinin ən vacib problemlərindən birini həll edir.O, avtomatik yaddaş idarəetməsini təklif edir ki, tərtibatçılar onu tətbiqdəki hər bir obyekt üçün əl ilə ayırıb sonra boşaltmaq məcburiyyətində qalmasınlar. Rust dilini digər müasir dillərdən fərqləndirən cəhət ondan ibarətdir ki, onun yaddaşdan istifadə olunmamış obyektləri avtomatik silən zibil yığıcısı yoxdur və Java üçün Java Runtime Environment kimi onun işləməsi üçün tələb olunan iş vaxtı mühiti yoxdur. Bunun əvəzinə, Rust mülkiyyət, borc alma, istinadlar və ömür anlayışlarına malikdir. “Rust, sahibinin ondan istifadə etdiyini və ya sadəcə borc aldığını göstərmək üçün obyektə zəngləri elan etmək üçün bir sistemə malikdir. Əgər siz sadəcə olaraq obyekti borc götürsəniz, tərtibçi bunu izləyəcək və siz ona istinad etdiyiniz müddətdə orijinalın yerində qalmasını təmin edəcək. Rust həmçinin obyektin istifadəsi başa çatan kimi yaddaşdan silinməsini təmin edəcək və əlavə vaxt tələb etmədən kompilyasiya zamanı koda müvafiq zəng daxil edəcək,” Triplett deyir.

Doğma iş vaxtının olmaması da Rust-un müsbət xüsusiyyəti sayıla bilər. Triplett hesab edir ki, onun işlədiyi dilləri sistem proqramlaşdırma alətləri kimi istifadə etmək çətindir. Onun izah etdiyi kimi: "Hər hansı bir koda zəng etməzdən əvvəl bu iş vaxtını işə salmalısınız, funksiyaları çağırmaq üçün bu iş vaxtından istifadə etməlisiniz və iş vaxtının özü gözlənilməz vaxtlarda arxanızda əlavə kod işlədə bilər."

Rust həmçinin təhlükəsiz paralel proqramlaşdırma təmin etməyə çalışır. Yaddaşın təhlükəsizliyini təmin edən eyni xüsusiyyətlər, hansı ipin hansı obyektə sahib olduğu və hansı obyektlərin iplər arasında ötürülə biləcəyi və hansının kilidə ehtiyacı olduğu kimi şeyləri izləyir.

Bütün bu xüsusiyyətlər Rust-u inkişaf etdiricilər üçün onu sistem proqramlaşdırması üçün yeni bir vasitə kimi seçmək üçün kifayət qədər cəlbedici edir. Bununla belə, paralel hesablamalar baxımından Rust hələ də C-dən bir qədər geri qalır.

Triplett, sistemlərin proqramlaşdırılması sahəsində C ilə tam bərabərləşə, onu ötüb keçə bilməsi üçün Rust-a lazımi xüsusiyyətlərin tətbiqinə diqqət yetirəcək xüsusi işçi qrupu yaratmaq niyyətindədir. IN Reddit-də mövzu, çıxışına həsr olunmuş, o, "FFI/C Parity qrupunun yaradılma prosesində olduğunu və hələ işə başlamadığını" söylədi, hələlik istənilən sualları cavablandırmağa hazırdır və gələcəkdə mütləq dərhal planlarını dərc edəcəkdir. bütün maraqlı tərəflər üçün onun təşəbbüsünün bir hissəsi kimi Rustun inkişafı üçün.

Güman etmək olar ki, FFI/C Parity qrupu ilk növbədə Rust-da çox yivli dəstəyin təkmilləşdirilməsinə, yeni Intel Xeon Scalable prosessorlarında peyda olan üzən nöqtə formatı olan BFLOAT16 dəstəyinin tətbiqinə, eləcə də montajın stabilləşdirilməsinə diqqət yetirəcək. kod əlavələri.



Mənbə: 3dnews.ru

Добавить комментарий