"Rusto estas la estonteco de sistema programado, C estas la nova asemblero" - parolado de unu el la ĉefaj inĝenieroj de Intel

Ĉe la lastatempa Open Source Technology Summi (OSTS) Josh Triplett, altranga inĝeniero ĉe Intel, diris, ke lia firmao interesiĝas pri ke Rust atingu "egalecon" kun la C-lingvo, kiu ankoraŭ regas sistemojn kaj malaltnivelan disvolviĝon en la proksima estonteco. En lia parolado Sub la titolo "Intel and Rust: The Future of Systems Programming", li ankaŭ parolis pri la historio de sistemprogramado, kiel C iĝis la defaŭlta sistema programlingvo, kiaj trajtoj de Rust donas al ĝi avantaĝon super C, kaj kiel ĝi povis tute. anstataŭigu C en ĉi tiu kampo de programado.

"Rusto estas la estonteco de sistema programado, C estas la nova asemblero" - parolado de unu el la ĉefaj inĝenieroj de Intel

Sistemprogramado estas la evoluo kaj administrado de programaro kiu funkcias kiel platformo por kreado de aplikaĵaplikoj, certigante ĉi-lastajn interagi kun la procesoro, RAM, eniga/eliga aparatoj kaj retekipaĵo. Sistemprogramaro kreas specialan abstraktadon en la formo de interfacoj kiuj helpas krei aplikaĵon sen enprofundiĝi en la detalojn pri kiel la aparataro mem funkcias.

Triplett mem difinas sistemajn programadon kiel "io ajn, kio ne estas aplikaĵo." Ĝi inkluzivas aferojn kiel BIOS, firmvaro, ekŝargilojn kaj operaciumajn kernojn, diversajn specojn de enigita malaltnivela kodo kaj virtuala maŝinefektivigoj. Kurioze, Triplett opinias, ke TTT-legilo ankaŭ estas sistema programaro, ĉar la retumilo antaŭ longe fariĝis pli ol "nur programo", fariĝante memstara "platformo por retejoj kaj retejoj."

En la pasinteco, la plej multaj sistemprogramoj, inkluzive de BIOS, ekŝargiloj kaj firmvaro, estis skribitaj en asembla lingvo. En la 1960-aj jaroj, eksperimentoj komencis disponigi aparatarsubtenon por altnivelaj lingvoj, kaŭzante la kreadon de lingvoj kiel ekzemple PL/S, BLISS, BCPL, kaj ALGOL 68.

Tiam, en la 1970-aj jaroj, Dennis Ritchie kreis la C programlingvon por la Unikso-simila sistemo. Kreita en la programlingvo B, kiu eĉ ne havis tajpan subtenon, C estis plenigita de potencaj altnivelaj funkcioj, kiuj plej taŭgas por verki operaciumojn kaj ŝoforojn. Pluraj komponentoj de UNIKSO, inkluzive de ĝia kerno, estis poste reverkitaj en C. Poste, multaj aliaj sistemprogramoj, inkluzive de la Oracle-datumbazo, multe de la Vindoza fontkodo, kaj la Linukso operaciumo, ankaŭ estis skribitaj en C.

C ricevis enorman subtenon en ĉi tiu direkto. Sed kio ĝuste igis programistojn ŝanĝi al ĝi? Triplett opinias, ke por instigi programistojn ŝanĝi de unu programlingvo al alia, ĉi-lasta unue devas provizi novajn funkciojn sen perdi malnovajn funkciojn.

Unue, la lingvo devas proponi novajn funkciojn "racie imponajn". “Li ne povus esti pli bona. Devas esti signife pli bone pravigi la penadon kaj inĝenieran tempon necesan por fari la transiron,” li klarigas. Kompare kun asembla lingvo, C havis multajn aferojn por oferti. Ĝi apogis iom tip-sekuran konduton, disponigis pli bonan porteblon kaj efikecon per altnivelaj konstrukcioj, kaj generis multe pli legeblan kodon entute.

Due, la lingvo devas provizi subtenon por malnovaj funkcioj, kio signifas, ke en la historio de la transiro al C, programistoj devis certigi, ke ĝi ne estas malpli funkcia ol asembla lingvo. Triplett klarigas: "Nova lingvo ne nur povas esti pli bona, ĝi ankaŭ devas esti same bona." Krom esti pli rapida kaj subtenanta ajnan datumtipon kiun asembla lingvo povus uzi, C ankaŭ havis tion, kion Triplett nomis "eskap-luko" - nome, ĝi apogis enmeti asemblalingvan kodon en si mem.

"Rusto estas la estonteco de sistema programado, C estas la nova asemblero" - parolado de unu el la ĉefaj inĝenieroj de Intel

Triplett opinias, ke C nun fariĝas tia, kia asembla lingvo estis antaŭ multaj jaroj. "C estas la nova asemblero," li deklaras. Nun programistoj serĉas novan altnivelan lingvon, kiu ne nur solvos la problemojn, kiuj amasiĝis en C, kiuj ne plu povas esti riparitaj, sed ankaŭ ofertos ekscitajn novajn funkciojn. Tia lingvo devas esti sufiĉe konvinka por igi programistojn ŝanĝi al ĝi, devas esti sekura, disponigi aŭtomatan memoradministradon, kaj multe pli.

"Ĉiu lingvo, kiu volas esti pli bona ol C, devas oferti multe pli ol nur bufran superfluan protekton, se ĝi vere volas esti konvinka alternativo. Programistoj interesiĝas pri uzebleco kaj efikeco, skribante kodon memklarigebla kaj faras pli da laboro en malpli da linioj. Sekurecproblemoj ankaŭ devas esti traktitaj. Facileco de uzado kaj rendimento iras kune. Ju malpli da kodo vi devas skribi por atingi ion, des malpli da ŝanco vi havas fari ajnajn erarojn, sekurerilatajn aŭ ne,” klarigas Triplett.

Komparo de Rust kaj C

Reen en 2006, Graydon Hoare, Mozilla dungito, komencis verki Rust kiel persona projekto. Kaj en 2009, Mozilo komencis sponsori la evoluon de Rust por siaj propraj bezonoj, kaj ankaŭ vastigis la teamon por plue evoluigi la lingvon.

Unu el la kialoj, kial Mozilla interesiĝis pri la nova lingvo, estas, ke Fajrovulpo estis skribita en pli ol 4 milionoj da linioj de C++-kodo kaj havis sufiĉe multajn kritikajn vundeblecojn. Rust estis konstruita kun sekureco kaj samtempeco en menso, igante ĝin ideala elekto por reverki multajn el la komponentoj de Firefox kiel parto de la Quantum-projekto por tute restrukturi la arkitekturon de la retumilo. Mozilo ankaŭ uzas Rust por evoluigi Servo, HTML-bildigan motoron kiu poste anstataŭigos la nunan Firefox-bildigan motoron. Multaj aliaj kompanioj komencis uzi Rust por siaj projektoj, inkluzive de Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu kaj multaj pli.

Rust solvas unu el la plej gravaj problemoj de la C-lingvo Ĝi ofertas aŭtomatan memoradministradon, por ke programistoj ne devu permane asigni kaj liberigi ĝin por ĉiu objekto en la aplikaĵo. Kio diferencas Rust de aliaj modernaj lingvoj estas, ke ĝi ne havas rubkolektilon, kiu aŭtomate forigas neuzatajn objektojn el memoro, nek ĝi havas la rultempan medion necesan por funkcii, kiel la Java Runtime Environment por Java. Anstataŭe, Rust havas la konceptojn de proprieto, pruntepreno, referencoj kaj vivdaŭro. "Rust havas sistemon por deklari vokojn al objekto por indiki ĉu la posedanto uzas ĝin aŭ nur pruntas ĝin. Se vi simple prunteprenas objekton, la kompililo konservos ĉi tion kaj certigos, ke la originalo restas en loko tiel longe kiel vi referencas ĝin. Rust ankaŭ certigos, ke la objekto estas forigita de memoro tuj kiam ĝia uzo finiĝos, enmetante respondan vokon en la kodon je kompiltempo sen plia tempo,” diras Triplett.

La manko de indiĝena rultempo ankaŭ povas esti konsiderita pozitiva kvalito de Rust. Triplett opinias, ke la lingvoj sur kiuj ĝi funkcias estas malfacile uzeblaj kiel sistemaj programaj iloj. Kiel li klarigas: "Vi devas pravigi ĉi tiun rultempon antaŭ ol vi povas voki ajnan kodon, vi devas uzi ĉi tiun rultempon por voki funkciojn, kaj la rultempo mem povas ruli plian kodon malantaŭ via dorso en neatenditaj tempoj."

Rust ankaŭ klopodas por disponigi sekuran paralelan programadon. La samaj funkcioj, kiuj igas ĝin sekura memoro, konservas aferojn kiel kiu fadeno posedas kiun objekton kaj kiuj objektoj povas esti pasigitaj inter fadenoj kaj kiuj bezonas seruron.

Ĉiuj ĉi tiuj funkcioj igas Rust sufiĉe konvinka por ke programistoj elektu ĝin kiel novan ilon por sistemaj programado. Tamen, laŭ paralela komputado, Rust ankoraŭ estas iomete malantaŭ C.

Triplett intencas krei specialan laborgrupon, kiu koncentriĝos pri enkonduko de la necesaj funkcioj en Rust, por ke ĝi plene egalu, superu kaj anstataŭu C en la kampo de sistemaj programado. EN fadeno sur Reddit, dediĉita al sia parolado, li diris, ke "la grupo FFI/C Parity estas en procezo de kreado kaj ankoraŭ ne komencis labori", ĉar nun li pretas respondi ajnajn demandojn, kaj estonte li certe publikigos tujajn planojn. por la evoluo de Rust kiel parto de lia iniciato por ĉiuj interesitaj partioj.

Oni povas supozi, ke la FFI/C Parity-grupo antaŭ ĉio koncentriĝos pri plibonigo de multfadena subteno en Rust, enkondukante subtenon por BFLOAT16, glitkoma formato, kiu aperis en la novaj procesoroj Intel Xeon Scalable, kaj ankaŭ stabiligi asembleon. kodaj enmetoj.



fonto: 3dnews.ru

Aldoni komenton