"Rooste on süsteemi programmeerimise tulevik, C on uus kokkupanija" - Inteli ühe juhtiva inseneri kõne

Hiljutisel avatud lähtekoodiga tehnoloogia tippkohtumisel (OSTS) Josh Triplett, Inteli juhtivinsener, ütles, et tema ettevõte on huvitatud sellest, et Rust saavutaks lähitulevikus "pariteedi" C-ga, mis on endiselt domineeriv süsteemide ja madala taseme arenduse valdkonnas. Tema kõnes Pealkirja all "Intel ja Rust: Süsteemide programmeerimise tulevik" rääkis ta ka süsteemide programmeerimise ajaloost, kuidas C-st sai "vaikimisi" süsteemi programmeerimiskeel, millised Rusti funktsioonid annavad talle C ees eelise ja kuidas lähiajal. tulevikus võib see C täielikult asendada antud programmeerimisvaldkonnas.

"Rooste on süsteemi programmeerimise tulevik, C on uus kokkupanija" - Inteli ühe juhtiva inseneri kõne

Süsteemi programmeerimine on tarkvara arendamine ja haldamine, mis toimib rakendusrakenduste loomise platvormina, tagades viimaste interaktsiooni protsessori, RAM-i, I/O-seadmete ja võrguseadmetega. Süsteemitarkvara loob erilise abstraktsiooni liideste kujul, mis aitavad teil luua rakendustarkvara ilma riistvara enda toimimise üksikasjadesse laskumata.

Triplett ise defineerib süsteemide programmeerimist kui "kõike, mis pole rakendus". See hõlmab selliseid asju nagu BIOS, püsivara, alglaadurid ja operatsioonisüsteemi tuumad, mitmesugused sisseehitatud madala taseme koodid ja virtuaalmasina rakendused. Huvitaval kombel usub Triplett, et veebibrauser on ka süsteemitarkvara, kuna brauserist on pikka aega saanud enamat kui "lihtsalt programm", mis on muutunud iseseisvaks "veebisaitide ja veebirakenduste platvormiks".

Varem oli enamik süsteemiprogramme, sealhulgas BIOS, alglaadurid ja püsivara, kirjutatud montaažikeeles. Katsed algasid 1960. aastatel, et pakkuda kõrgetasemelistele keeltele riistvaratuge, mille tulemuseks on sellised keeled nagu PL/S, BLISS, BCPL ja ALGOL 68.

Seejärel, 1970. aastatel, lõi Dennis Ritchie Unixi operatsioonisüsteemi jaoks programmeerimiskeele C. Programmeerimiskeeles B, millel polnud isegi tippimistuge, loodud C oli täidetud võimsate kõrgetasemeliste funktsioonidega, mis sobisid kõige paremini operatsioonisüsteemide ja draiverite kirjutamiseks. Mitmed UNIX-i komponendid, sealhulgas selle tuum, kirjutati lõpuks C-keeles ümber. Seejärel kirjutati C-keeles ka paljud teised süsteemiprogrammid, sealhulgas Oracle'i andmebaas, enamik Windowsi lähtekoodist ja Linuxi operatsioonisüsteem.

C sai selles suunas tohutu toetuse. Aga mis täpselt sundis arendajaid sellele üle minema? Triplett usub, et selleks, et motiveerida arendajaid ühelt programmeerimiskeelelt teisele üle minema, peab viimane esmalt pakkuma uusi funktsioone ilma vanu funktsioone kaotamata.

Esiteks peab keel pakkuma "piisavalt muljetavaldavaid" uusi funktsioone. "Ta ei saa olla parem. See peab oluliselt paremini põhjendama inseneridel üleminekuks kuluvat pingutust ja aega,” selgitab ta. Võrreldes montaažikeelega oli C-l palju pakkuda. See toetas mõnevõrra tüübiohutust, pakkus kõrgetasemeliste konstruktsioonidega paremat teisaldatavust ja jõudlust ning genereeris üldiselt palju loetavama koodi.

Teiseks peab keel pakkuma tuge vanadele funktsioonidele, mis tähendab, et C-le ülemineku ajaloos pidid arendajad olema kindlad, et see pole vähem funktsionaalne kui assemblerkeel. Triplett selgitab: "Uus keel ei saa olla lihtsalt parem, see peab olema ka sama hea." Lisaks sellele, et C on kiirem ja toetab kõiki andmetüüpe, mida montaažikeel saaks kasutada, oli C-l ka see, mida Triplett nimetas "escape hatchiks", nimelt tugi keele koodi sisestamiseks.

"Rooste on süsteemi programmeerimise tulevik, C on uus kokkupanija" - Inteli ühe juhtiva inseneri kõne

Triplett usub, et C-st on nüüd saamas see, mis montaaži tagasi oli. "C on uus monteerija," ütleb ta. Arendajad otsivad nüüd uut kõrgetasemelist keelt, mis mitte ainult ei lahendaks C püsivaid probleeme, mida enam ei saa parandada, vaid pakub ka uusi põnevaid funktsioone. Selline keel peab olema piisavalt mõjuv, et sundida arendajaid sellele üle minema, peab olema turvaline, pakkuma automaatset mäluhaldust ja palju muud.

"Iga keel, mis tahab olla parem kui C, peab pakkuma palju enamat kui puhvri ületäitumise kaitse, kui see tõesti tahab olla mõjuv alternatiiv. Arendajad on huvitatud kasutatavusest ja jõudlusest, sellise koodi kirjutamisest, mis on iseenesestmõistetav ja teeb vähemate ridadega rohkem tööd. Samuti tuleb käsitleda turvaprobleeme. Kasutuslihtsus ja jõudlus käivad sellega käsikäes. Mida vähem koodi peate millegi saavutamiseks kirjutama, seda vähem on teil võimalus teha turvalisusega seotud või mitteseotud vigu,“ selgitab Triplett.

Võrreldes Rust ja C

2006. aastal alustas Graydon Hoare Mozillast Rusti kirjutamist isikliku projektina. Ja 2009. aastal hakkas Mozilla sponsoreerima Rusti arendamist oma vajaduste jaoks ning laiendas ka meeskonda, et keelt edasi arendada.

Üks põhjusi, miks Mozilla uue keele vastu huvi tundis, on see, et Firefox oli kirjutatud üle 4 miljoni C++ koodireaga ja sellel oli üsna vähe kriitilisi turvaauke. Rust ehitati turvalisust ja samaaegsust silmas pidades, mistõttu on see ideaalne valik paljude Firefoxi komponentide ümberkirjutamiseks osana Quantumi projektist, mille eesmärk on brauseri arhitektuur täielikult uuendada. Mozilla kasutab Rusti ka HTML-i renderdusmootori Servo arendamiseks, mis asendab tulevikus Firefoxi praeguse renderdusmootori. Paljud teised ettevõtted on hakanud oma projektide jaoks Rusti kasutama, sealhulgas Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu ja paljud teised.

Rust lahendab ühe C-keele kõige olulisema probleemi. See pakub automaatset mäluhaldust, et arendajad ei peaks seda käsitsi iga rakenduse objekti jaoks eraldama ja seejärel eraldama. Rusti eristab teistest tänapäevastest keeltest see, et sellel pole prügikogujat, mis eemaldaks automaatselt mälust kasutamata objektid, ega ka käituskeskkonda selle käitamiseks, nagu Java Runtime Environment for Java. Selle asemel on Rustil omandiõiguse, laenamise, viidete ja eluea mõisted. “Rustil on süsteem objektikõnede deklareerimiseks, mis võimaldab määrata, kas omanik kasutab seda või laenab lihtsalt. Kui lihtsalt laenate objekti, hoiab kompilaator sellel silma peal ja tagab, et originaal jääb sellele viitamise ajal paigale. Ja Rust tagab ka selle, et objekt eemaldatakse mälust niipea, kui see on selle kasutamise lõpetanud, sisestades kompileerimise ajal koodi ilma täiendava ajata, "ütleb Triplett.

Rusti positiivseks omaduseks võib pidada ka natiivse käitusaja puudumist. Triplett usub, et sellega töötavaid keeli on keeruline süsteemide programmeerimise tööriistana kasutada. Ta selgitab: "Enne kui saate mis tahes koodi kutsuda, peate selle käitusaja lähtestama, peate kasutama seda käitusaega funktsioonide kutsumiseks ja käituskeskkond ise võib ootamatutel aegadel teie selja taga käivitada lisakoodi."

Rust püüab pakkuda ka ohutut paralleelset programmeerimist. Samad funktsioonid, mis muudavad selle mälukindlaks, jälgivad näiteks, millisele lõimele milline objekt kuulub ja milliseid objekte saab lõimede vahel edastada ja millised vajavad lukku.

Kõik need funktsioonid muudavad Rusti piisavalt veenvaks, et arendajad saaksid valida oma uueks süsteemi programmeerimistööriistaks. Paralleelarvutuse osas jääb Rust siiski C-le veidi alla.

Triplett kavatseb luua spetsiaalse töörühma, mis juurutab Rustis vajalikud funktsioonid, et see suudaks süsteemide programmeerimise valdkonnas täielikult võrdsustada, ületada ja asendada C. IN teema redditisoma kõnele pühendatud , ütles ta, et "FFI / C Parity grupp on loomisel ja pole veel tööd alustanud", samas on ta valmis vastama kõigile küsimustele ja tulevikus avaldab ta kindlasti lähima plaanid Rusti arendamiseks osana oma algatusest kõigile huvilistele.

Võib eeldada, et esiteks tegeleb FFI / C Parity grupp Rusti mitmelõimelise toe täiustamisega, BFLOAT16 toe kasutuselevõtuga, ujukomavorminguga, mis ilmus uutes Intel Xeon Scalable protsessorites, samuti koostekoodi stabiliseerimisega. sisestusi.



Allikas: 3dnews.ru

Lisa kommentaar