"Rust on järjestelmäohjelmoinnin tulevaisuus, C on uusi kokoaja" - puhe yhden Intelin johtavista insinööreistä

Äskettäisessä Open Source Technology Summissa (OSTS) Josh TriplettIntelin vanhempi insinööri sanoi, että hänen yrityksensä on kiinnostunut siitä, että Rust saavuttaa "pariteetin" C-kielen kanssa, joka edelleen hallitsee järjestelmiä ja matalan tason kehitystä lähitulevaisuudessa. Hänen puheessaan Otsikon "Intel and Rust: The Future of Systems Programming" alla hän puhui myös järjestelmäohjelmoinnin historiasta, kuinka C:stä tuli järjestelmän oletusohjelmointikieli, mitkä Rustin ominaisuudet antavat sille etua C:hen verrattuna ja kuinka se voisi täysin korvaa C tällä ohjelmointialueella.

"Rust on järjestelmäohjelmoinnin tulevaisuus, C on uusi kokoaja" - puhe yhden Intelin johtavista insinööreistä

Järjestelmäohjelmointi on ohjelmistojen kehittämistä ja hallintaa, joka toimii alustana sovellussovellusten luomiselle varmistaen, että jälkimmäiset ovat vuorovaikutuksessa prosessorin, RAM-muistin, syöttö-/tulostuslaitteiden ja verkkolaitteiden kanssa. Järjestelmäohjelmisto luo erityisen abstraktion rajapintojen muodossa, jotka auttavat luomaan sovellusohjelmistoja ilman, että syvennytään itse laitteiston toiminnan yksityiskohtiin.

Triplett itse määrittelee järjestelmäohjelmoinnin "kaikeksi, mikä ei ole sovellus". Se sisältää asioita, kuten BIOS, laiteohjelmisto, käynnistyslataimet ja käyttöjärjestelmän ytimet, erilaiset sulautetut matalan tason koodit ja virtuaalikoneen toteutukset. Mielenkiintoista on, että Triplett uskoo, että verkkoselain on myös järjestelmäohjelmisto, koska selaimesta on jo kauan sitten tullut enemmän kuin "vain ohjelma" ja siitä on tullut erillinen "sivusto verkkosivustoille ja verkkosovelluksille".

Aiemmin useimmat järjestelmäohjelmat, mukaan lukien BIOS, käynnistyslataimet ja laiteohjelmisto, kirjoitettiin asennuskielellä. 1960-luvulla kokeet alkoivat tarjota laitteistotukea korkean tason kielille, mikä johti kielten, kuten PL/S, BLISS, BCPL ja ALGOL 68, luomiseen.

Sitten 1970-luvulla Dennis Ritchie loi C-ohjelmointikielen Unix-käyttöjärjestelmää varten. B-ohjelmointikielellä luotu C, jossa ei ollut edes kirjoitustukea, oli täynnä tehokkaita korkean tason toimintoja, jotka soveltuivat parhaiten käyttöjärjestelmien ja ohjainten kirjoittamiseen. Useat UNIXin osat, mukaan lukien sen ydin, kirjoitettiin lopulta uudelleen C-kielellä. Myöhemmin monet muut järjestelmäohjelmat, mukaan lukien Oracle-tietokanta, suuri osa Windowsin lähdekoodista ja Linux-käyttöjärjestelmä, kirjoitettiin myös C-kielellä.

C on saanut valtavasti tukea tähän suuntaan. Mutta mikä tarkalleen sai kehittäjät siirtymään siihen? Triplett uskoo, että motivoidakseen kehittäjiä vaihtamaan ohjelmointikielestä toiseen, jälkimmäisen on ensin tarjottava uusia ominaisuuksia menettämättä vanhoja ominaisuuksia.

Ensinnäkin kielen on tarjottava "kohtuullisen vaikuttavia" uusia ominaisuuksia. "Hän ei voisi olla parempi. Sen on oltava huomattavasti paremmin perusteltua siirtymiseen kuluvaa työtä ja suunnitteluaikaa”, hän selittää. Assembly-kieleen verrattuna C:llä oli paljon tarjottavaa. Se tuki jonkin verran tyyppiturvallista käyttäytymistä, tarjosi paremman siirrettävyyden ja suorituskyvyn korkean tason rakenteilla ja loi yleisesti paljon luettavamman koodin.

Toiseksi kielen on tuettava vanhoja ominaisuuksia, mikä tarkoittaa, että C:hen siirtymisen historiassa kehittäjien täytyi olla varma, että se oli yhtä toimiva kuin assembly-kieli. Triplett selittää: "Uusi kieli ei voi olla vain parempi, sen on myös oltava yhtä hyvä." Sen lisäksi, että C oli nopeampi ja tuki mitä tahansa datatyyppiä, jota assembly-kieli voisi käyttää, C:llä oli myös Triplettin kutsuma "escape hatch" - eli se tuki konekielikoodin lisäämistä itsessään.

"Rust on järjestelmäohjelmoinnin tulevaisuus, C on uusi kokoaja" - puhe yhden Intelin johtavista insinööreistä

Triplett uskoo, että C:stä on nyt tulossa se, mitä assembly-kieli oli monta vuotta sitten. "C on uusi kokoaja", hän julistaa. Nyt kehittäjät etsivät uutta korkean tason kieltä, joka ei ainoastaan ​​ratkaise C:ssä kertyneet ongelmat, joita ei enää voida korjata, vaan tarjoaa myös jännittäviä uusia ominaisuuksia. Tällaisen kielen on oltava tarpeeksi houkutteleva saadakseen kehittäjät vaihtamaan siihen, sen on oltava turvallinen, tarjottava automaattinen muistinhallinta ja paljon muuta.

"Jokaisen kielen, joka haluaa olla parempi kuin C, on tarjottava paljon enemmän kuin pelkkä puskurin ylivuotosuojaus, jos se todella haluaa olla houkutteleva vaihtoehto. Kehittäjät ovat kiinnostuneita käytettävyydestä ja suorituskyvystä, kirjoittamalla koodia, joka on itsestään selvä ja tekee enemmän työtä pienemmillä riveillä. Myös turvallisuuskysymykset on otettava huomioon. Helppokäyttöisyys ja suorituskyky kulkevat käsi kädessä. Mitä vähemmän koodia sinun on kirjoitettava saavuttaaksesi jotain, sitä vähemmän sinulla on mahdollisuus tehdä virheitä, olivatpa ne tietoturvallisia tai eivät, Triplett selittää.

Rustin ja C:n vertailu

Vuonna 2006 Mozillan työntekijä Graydon Hoare aloitti Rustin kirjoittamisen henkilökohtaisena projektina. Ja vuonna 2009 Mozilla alkoi sponsoroida Rustin kehitystä omiin tarpeisiinsa ja myös laajensi tiimiä kehittämään kieltä edelleen.

Yksi syistä, miksi Mozilla oli kiinnostunut uudesta kielestä, on se, että Firefox oli kirjoitettu yli 4 miljoonalla C++-koodirivillä ja siinä oli useita kriittisiä haavoittuvuuksia. Rust rakennettiin turvallisuutta ja samanaikaisuutta ajatellen, joten se on ihanteellinen valinta monien Firefoxin osien uudelleenkirjoittamiseen osana Quantum-projektia, jolla selaimen arkkitehtuuri suunnitellaan kokonaan uudelleen. Mozilla käyttää myös Rustia kehittääkseen Servoa, HTML-renderöintimoottoria, joka lopulta korvaa nykyisen Firefox-renderöintimoottorin. Monet muut yritykset ovat alkaneet käyttää Rustia projekteihinsa, mukaan lukien Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu ja monet muut.

Rust ratkaisee yhden C-kielen tärkeimmistä ongelmista. Se tarjoaa automaattisen muistinhallinnan, joten kehittäjien ei tarvitse varata ja sitten vapauttaa sitä manuaalisesti jokaiselle sovelluksen objektille. Rust eroaa muista nykyaikaisista kielistä on se, että siinä ei ole roskankerääjää, joka automaattisesti poistaisi käyttämättömät objektit muistista, eikä siinä ole sen toimimiseen vaadittavaa ajonaikaista ympäristöä, kuten Java Runtime Environment for Java. Sen sijaan Rustilla on käsitteet omistus, lainaus, viittaukset ja elinikä. ”Rustissa on järjestelmä, joka ilmoittaa puheluista esineeseen, onko omistajalla käytössä vai vain lainaamassa sitä. Jos vain lainaat objektin, kääntäjä seuraa sitä ja varmistaa, että alkuperäinen pysyy paikallaan niin kauan kuin viittaat siihen. Rust varmistaa myös, että objekti poistetaan muistista heti, kun sen käyttö on valmis, lisäämällä vastaavan kutsun koodiin käännöshetkellä ilman lisäaikaa”, Triplett sanoo.

Ruostin positiivisena piirteenä voidaan pitää myös alkuperäisen suoritusajan puutetta. Triplett uskoo, että sen käyttämiä kieliä on vaikea käyttää järjestelmän ohjelmointityökaluina. Kuten hän selittää: "Sinun on alustettava tämä ajonaika, ennen kuin voit kutsua mitään koodia, sinun on käytettävä tätä ajonaikaa toimintojen kutsumiseen, ja itse ajonaika voi suorittaa lisäkoodia selkäsi takana odottamattomina aikoina."

Rust pyrkii myös tarjoamaan turvallisen rinnakkaisohjelmoinnin. Samat ominaisuudet, jotka tekevät muistista turvallisen, seuraavat asioita, kuten mikä säie omistaa minkä objektin ja mitkä objektit voidaan siirtää säikeiden välillä ja mitkä tarvitsevat lukituksen.

Kaikki nämä ominaisuudet tekevät Rustista tarpeeksi houkuttelevan, jotta kehittäjät voivat valita sen uudeksi työkaluksi järjestelmäohjelmointiin. Rinnakkaislaskennan suhteen Rust on kuitenkin edelleen hieman C:tä jäljessä.

Triplett aikoo perustaa erityisen työryhmän, joka keskittyy tuomaan Rustiin tarvittavat ominaisuudet niin, että se pystyy täysin vastaamaan, ohittamaan ja korvaamaan C:n järjestelmäohjelmoinnin alalla. SISÄÄN lanka Redditissäpuhelleen omistettuna hän sanoi, että "FFI/C Parity -ryhmää ollaan luomassa, eikä se ole vielä aloittanut työtään", toistaiseksi hän on valmis vastaamaan kaikkiin kysymyksiin, ja tulevaisuudessa hän julkaisee ehdottomasti välittömät suunnitelmat. Rustin kehittämiseen osana hänen aloitettaan kaikille kiinnostuneille osapuolille.

Voidaan olettaa, että FFI/C Parity -ryhmä keskittyy ensisijaisesti Rustin monisäikeisen tuen parantamiseen, uusiin Intel Xeon Scalable -prosessoreihin ilmestyneen liukulukumuodon BFLOAT16 tuen käyttöönottoon sekä stabilointikokoonpanoon. koodin lisäykset.



Lähde: 3dnews.ru

Lisää kommentti