"Roes is die toekoms van stelselprogrammering, C is die nuwe samesteller" - 'n toespraak deur een van die voorste ingenieurs van Intel

By die onlangse Open Source Technology Summi (OSTS) Josh Triplett, 'n senior ingenieur by Intel, het gesê sy maatskappy stel daarin belang dat Rust "pariteit" bereik met die C-taal wat steeds stelsels en laevlakontwikkeling in die nabye toekoms oorheers. In sy toespraak Onder die titel "Intel and Rust: The Future of Systems Programming," het hy ook gepraat oor die geskiedenis van stelselprogrammering, hoe C die verstekstelselprogrammeertaal geword het, watter kenmerke van Rust dit 'n voordeel bo C gee, en hoe dit heeltemal kon vervang C in hierdie veld van programmering.

"Roes is die toekoms van stelselprogrammering, C is die nuwe samesteller" - 'n toespraak deur een van die voorste ingenieurs van Intel

Stelselprogrammering is die ontwikkeling en bestuur van sagteware wat dien as 'n platform vir die skep van toepassingstoepassings, wat verseker dat laasgenoemde in wisselwerking met die verwerker, RAM, toevoer/afvoertoestelle en netwerktoerusting is. Stelselsagteware skep 'n spesiale abstraksie in die vorm van koppelvlakke wat help om toepassingsagteware te skep sonder om in die besonderhede van hoe die hardeware self werk te delf.

Triplett self definieer stelselprogrammering as "enigiets wat nie 'n toepassing is nie." Dit bevat dinge soos BIOS, firmware, selflaailaaiers en bedryfstelselpitte, verskeie tipes ingebedde laevlakkode en virtuele masjien-implementerings. Interessant genoeg glo Triplett dat 'n webblaaier ook stelselsagteware is, aangesien die blaaier lank gelede meer as "net 'n program" geword het, wat 'n selfstandige "platform vir webwerwe en webtoepassings" geword het.

In die verlede was die meeste stelselprogramme, insluitend BIOS, selflaailaaiers en firmware, in samestellende taal geskryf. In die 1960's het eksperimente begin om hardeware-ondersteuning vir hoëvlaktale te verskaf, wat gelei het tot die skepping van tale soos PL/S, BLISS, BCPL en ALGOL 68.

Toe, in die 1970's, het Dennis Ritchie die C-programmeertaal vir die Unix-bedryfstelsel geskep. Geskep in die B-programmeertaal, wat nie eens tikondersteuning gehad het nie, was C gevul met kragtige hoëvlakfunksies wat die beste geskik was vir die skryf van bedryfstelsels en drywers. Verskeie komponente van UNIX, insluitend sy kern, is uiteindelik in C herskryf. Daarna is baie ander stelselprogramme, insluitend die Oracle-databasis, baie van die Windows-bronkode en die Linux-bedryfstelsel, ook in C geskryf.

C het geweldige ondersteuning in hierdie rigting ontvang. Maar wat presies het ontwikkelaars daartoe laat oorskakel? Triplett glo dat om ontwikkelaars te motiveer om van een programmeertaal na 'n ander oor te skakel, laasgenoemde eers nuwe kenmerke moet verskaf sonder om ou kenmerke te verloor.

Eerstens moet die taal "redelik indrukwekkende" nuwe kenmerke bied. “Hy kon nie beter wees nie. Dit moet aansienlik beter wees om die moeite en ingenieurstyd wat dit neem om die oorgang te maak te regverdig,” verduidelik hy. In vergelyking met samestellingstaal, het C baie dinge gehad om te bied. Dit het ietwat tipe-veilige gedrag ondersteun, beter oordraagbaarheid en werkverrigting met hoëvlakkonstruksies verskaf, en in die algemeen baie meer leesbare kode gegenereer.

Tweedens moet die taal ondersteuning bied vir ou kenmerke, wat beteken dat ontwikkelaars in die geskiedenis van die oorgang na C seker moes wees dat dit nie minder funksioneel as samestellingtaal was nie. Triplett verduidelik: "'n Nuwe taal kan nie net beter wees nie, dit moet ook so goed wees." Benewens die feit dat dit vinniger is en enige datatipe ondersteun wat samestellingstaal kan gebruik, het C ook wat Triplett 'n "escape hatch" genoem het – dit het naamlik die invoeging van samestellingtaalkode in homself ondersteun.

"Roes is die toekoms van stelselprogrammering, C is die nuwe samesteller" - 'n toespraak deur een van die voorste ingenieurs van Intel

Triplett glo dat C nou besig is om te word wat assemblertaal baie jare gelede was. "C is die nuwe samesteller," verklaar hy. Nou is ontwikkelaars op soek na 'n nuwe hoëvlaktaal wat nie net die probleme wat in C opgehoop het wat nie meer reggemaak kan word nie, sal oplos, maar ook opwindende nuwe kenmerke sal bied. So 'n taal moet dwingend genoeg wees om ontwikkelaars te kry om na dit oor te skakel, moet veilig wees, outomatiese geheuebestuur verskaf, en nog baie meer.

“Enige taal wat beter as C wil wees, moet veel meer bied as net buffer-oorloopbeskerming as dit werklik ’n dwingende alternatief wil wees. Ontwikkelaars stel belang in bruikbaarheid en werkverrigting, skryf kode wat selfverduidelikend is en meer werk in minder reëls doen. Sekuriteitskwessies moet ook aangespreek word. Gebruiksgemak en werkverrigting gaan hand aan hand. Hoe minder kode jy moet skryf om iets te bereik, hoe minder geleentheid het jy om enige foute te maak, sekuriteitsverwant of nie,” verduidelik Triplett.

Vergelyking van Rust en C

In 2006 het Graydon Hoare, 'n Mozilla-werknemer, Rust as 'n persoonlike projek begin skryf. En in 2009 het Mozilla die ontwikkeling van Rust vir sy eie behoeftes begin borg, en ook die span uitgebrei om die taal verder te ontwikkel.

Een van die redes waarom Mozilla in die nuwe taal belanggestel het, is dat Firefox in meer as 4 miljoen reëls C++-kode geskryf is en heelwat kritieke kwesbaarhede gehad het. Rust is gebou met sekuriteit en gelyktydigheid in gedagte, wat dit 'n ideale keuse maak om baie van Firefox se komponente te herskryf as deel van die Quantum-projek om die blaaier se argitektuur heeltemal te herontwerp. Mozilla gebruik ook Rust om Servo te ontwikkel, 'n HTML-weergawe-enjin wat uiteindelik die huidige Firefox-weergawe-enjin sal vervang. Baie ander maatskappye het Rust vir hul projekte begin gebruik, insluitend Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu en vele meer.

Rust los een van die belangrikste probleme van die C-taal op. Dit bied outomatiese geheuebestuur sodat ontwikkelaars dit nie handmatig hoef toe te ken en dit dan vir elke voorwerp in die toepassing vry te stel nie. Wat Rust anders maak as ander moderne tale, is dat dit nie 'n vullisverwyderaar het wat outomaties ongebruikte voorwerpe uit die geheue verwyder nie, en ook nie die looptyd-omgewing wat nodig is om dit te laat werk nie, soos die Java Runtime Environment vir Java. In plaas daarvan het Rust die konsepte van eienaarskap, leen, verwysings en leeftyd. “Rust het ’n stelsel om oproepe na ’n voorwerp te verklaar om aan te dui of die eienaar dit gebruik of net leen. As jy bloot 'n voorwerp leen, sal die samesteller hiervan tred hou en verseker dat die oorspronklike in plek bly solank jy daarna verwys. Roes sal ook verseker dat die voorwerp uit die geheue verwyder word sodra die gebruik daarvan voltooi is, deur 'n ooreenstemmende oproep in die kode in te voeg tydens samestellingstyd sonder bykomende tyd,” sê Triplett.

Die gebrek aan 'n inheemse looptyd kan ook as 'n positiewe kenmerk van Rust beskou word. Triplett glo dat die tale waarop dit gebruik word, moeilik is om as stelselprogrammeerinstrumente te gebruik. Soos hy verduidelik: "Jy moet hierdie looptyd inisialiseer voordat jy enige kode kan oproep, jy moet hierdie looptyd gebruik om funksies te roep, en die looptyd self kan op onverwagte tye bykomende kode agter jou rug laat loop."

Rust streef ook daarna om veilige parallelle programmering te verskaf. Dieselfde kenmerke wat dit geheue veilig maak, hou tred met dinge soos watter draad watter voorwerp besit en watter voorwerpe tussen drade deurgegee kan word en watter 'n slot nodig het.

Al hierdie kenmerke maak Rust dwingend genoeg vir ontwikkelaars om dit as 'n nuwe instrument vir stelselprogrammering te kies. Wat parallelle rekenaars betref, is Rust egter nog 'n bietjie agter C.

Triplett beoog om 'n spesiale werkgroep te skep wat daarop sal fokus om die nodige kenmerke in Rust in te voer sodat dit C ten volle kan ewenaar, oortref en vervang op die gebied van stelselprogrammering. IN draad op Reddit, opgedra aan sy toespraak, het hy gesê dat "die FFI/C Parity-groep in die proses van skepping is en nog nie begin werk het nie," vir nou is hy gereed om enige vrae te beantwoord, en in die toekoms sal hy beslis onmiddellike planne publiseer vir die ontwikkeling van Rust as deel van sy inisiatief vir alle belangstellendes.

Daar kan aanvaar word dat die FFI/C Parity-groep eerstens sal fokus op die verbetering van multi-threading ondersteuning in Rust, die bekendstelling van ondersteuning vir BFLOAT16, 'n swewende punt formaat wat in die nuwe Intel Xeon Scalable verwerkers verskyn het, asook die stabilisering van samestelling kode invoegings.



Bron: 3dnews.ru

Voeg 'n opmerking