"Ang kalawang ay ang kinabukasan ng system programming, ang C ay ang bagong assembler" - pananalita ng isa sa mga nangungunang inhinyero ng Intel

Sa kamakailang Open Source Technology Summi (OSTS) Josh TriplettSinabi ni , isang senior engineer sa Intel, na ang kanyang kumpanya ay interesado sa Rust na maabot ang "pagkakapantay-pantay" sa wikang C na nangingibabaw pa rin sa mga sistema at mababang antas ng pag-unlad sa malapit na hinaharap. Sa kanyang talumpati Sa ilalim ng pamagat na "Intel and Rust: The Future of Systems Programming," binanggit din niya ang tungkol sa kasaysayan ng mga system programming, kung paano naging default na programming language ng system ang C, anong mga feature ng Rust ang nagbibigay ng kalamangan sa C, at kung paano ito ganap na magagawa. palitan ang C sa larangang ito ng programming.

"Ang kalawang ay ang kinabukasan ng system programming, ang C ay ang bagong assembler" - pananalita ng isa sa mga nangungunang inhinyero ng Intel

Ang system programming ay ang pagbuo at pamamahala ng software na nagsisilbing platform para sa paglikha ng mga application application, na tinitiyak na ang huli ay nakikipag-ugnayan sa processor, RAM, input/output device at network equipment. Lumilikha ang software ng system ng isang espesyal na abstraction sa anyo ng mga interface na tumutulong sa paglikha ng software ng application nang hindi sinisiyasat ang mga detalye kung paano gumagana ang hardware mismo.

Tinukoy mismo ni Triplett ang mga system programming bilang "anumang bagay na hindi isang application." Kabilang dito ang mga bagay tulad ng BIOS, firmware, mga bootloader at mga kernel ng operating system, iba't ibang uri ng naka-embed na mababang antas na code, at mga pagpapatupad ng virtual machine. Nang kawili-wili, naniniwala si Triplett na ang isang web browser ay software din ng system, dahil ang browser ay matagal nang naging higit pa sa "isang programa lamang", nagiging isang standalone na "platform para sa mga website at web application."

Noong nakaraan, karamihan sa mga program ng system, kabilang ang BIOS, mga bootloader at firmware, ay isinulat sa wika ng pagpupulong. Noong 1960s, nagsimula ang mga eksperimento na magbigay ng suporta sa hardware para sa mga high-level na wika, na humahantong sa paglikha ng mga wika tulad ng PL/S, BLISS, BCPL, at ALGOL 68.

Pagkatapos, noong 1970s, nilikha ni Dennis Ritchie ang C programming language para sa Unix operating system. Nilikha sa B programming language, na walang kahit na suporta sa pag-type, ang C ay napuno ng makapangyarihang mataas na antas na mga function na pinakaangkop para sa pagsusulat ng mga operating system at driver. Ilang bahagi ng UNIX, kabilang ang kernel nito, ay muling isinulat sa C. Kasunod nito, maraming iba pang mga program ng system, kabilang ang Oracle database, karamihan sa Windows source code, at ang Linux operating system, ay isinulat din sa C.

Nakatanggap si C ng napakalaking suporta sa direksyong ito. Ngunit ano nga ba ang dahilan kung bakit lumipat dito ang mga developer? Naniniwala si Triplett na para ma-motivate ang mga developer na lumipat mula sa isang programming language patungo sa isa pa, dapat munang magbigay ang huli ng mga bagong feature nang hindi nawawala ang mga lumang feature.

Una, ang wika ay dapat mag-alok ng "makatwirang kahanga-hanga" na mga bagong tampok. "Hindi siya maaaring maging mas mahusay. Kailangang maging mas mahusay upang bigyang-katwiran ang pagsisikap at oras ng pag-inhinyero na kinakailangan upang magawa ang paglipat, "paliwanag niya. Kung ikukumpara sa assembly language, ang C ay may maraming bagay na maiaalok. Sinuportahan nito ang medyo ligtas na uri ng pag-uugali, nagbigay ng mas mahusay na portability at pagganap na may mataas na antas ng mga konstruksyon, at nakabuo ng mas nababasa na code sa pangkalahatan.

Pangalawa, ang wika ay dapat magbigay ng suporta para sa mga lumang tampok, na nangangahulugang sa kasaysayan ng paglipat sa C, kailangang tiyakin ng mga developer na ito ay hindi gaanong gumagana kaysa sa wika ng pagpupulong. Ipinaliwanag ni Triplett: "Ang isang bagong wika ay hindi lamang maaaring maging mas mahusay, dapat din itong maging kasinghusay." Bilang karagdagan sa pagiging mas mabilis at pagsuporta sa anumang uri ng data na magagamit ng wika ng pagpupulong, mayroon din ang C ng tinatawag ng Triplett na "escape hatch"β€”ibig sabihin, sinusuportahan nito ang pagpasok ng code ng wika ng pagpupulong sa loob mismo.

"Ang kalawang ay ang kinabukasan ng system programming, ang C ay ang bagong assembler" - pananalita ng isa sa mga nangungunang inhinyero ng Intel

Naniniwala si Triplett na ang C ay nagiging kung ano ang assembly language ay maraming taon na ang nakalipas. "C ang bagong assembler," deklara niya. Ngayon ang mga developer ay naghahanap ng isang bagong mataas na antas ng wika na hindi lamang malulutas ang mga problema na naipon sa C na hindi na maaaring ayusin, ngunit nag-aalok din ng mga kapana-panabik na bagong tampok. Ang nasabing wika ay dapat na sapat na nakakahimok upang makakuha ng mga developer na lumipat dito, dapat na ligtas, magbigay ng awtomatikong pamamahala ng memorya, at marami pa.

"Anumang wika na gustong maging mas mahusay kaysa sa C ay dapat mag-alok ng higit pa sa buffer overflow na proteksyon kung talagang gusto nitong maging isang nakakahimok na alternatibo. Interesado ang mga developer sa kakayahang magamit at pagganap, pagsulat ng code na nagpapaliwanag sa sarili at mas gumagana sa mas kaunting linya. Kailangan ding tugunan ang mga isyu sa seguridad. Ang kadalian ng paggamit at pagganap ay magkasabay. Ang mas kaunting code na kailangan mong isulat upang makamit ang isang bagay, mas kaunting pagkakataon na mayroon kang anumang mga pagkakamali, may kaugnayan sa seguridad o hindi, "paliwanag ni Triplett.

Paghahambing ng Rust at C

Noong 2006, si Graydon Hoare, isang empleyado ng Mozilla, ay nagsimulang magsulat ng Rust bilang isang personal na proyekto. At noong 2009, sinimulan ng Mozilla ang pag-isponsor ng pagpapaunlad ng Rust para sa sarili nitong mga pangangailangan, at pinalawak din ang koponan upang higit pang mapaunlad ang wika.

Isa sa mga dahilan kung bakit interesado si Mozilla sa bagong wika ay ang Firefox ay isinulat sa mahigit 4 na milyong linya ng C++ code at may kaunting mga kritikal na kahinaan. Binuo ang kalawang na nasa isip ang seguridad at pagkakatugma, na ginagawa itong mainam na pagpipilian para sa muling pagsulat ng marami sa mga bahagi ng Firefox bilang bahagi ng proyektong Quantum upang ganap na muling idisenyo ang arkitektura ng browser. Ginagamit din ng Mozilla ang Rust upang bumuo ng Servo, isang HTML rendering engine na kalaunan ay papalitan ang kasalukuyang Firefox rendering engine. Maraming iba pang kumpanya ang nagsimulang gumamit ng Rust para sa kanilang mga proyekto, kabilang ang Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu at marami pa.

Niresolba ng kalawang ang isa sa pinakamahahalagang problema ng wikang C. Nag-aalok ito ng awtomatikong pamamahala ng memorya kaya hindi na kailangang manu-manong ilaan ng mga developer at pagkatapos ay palayain ito para sa bawat bagay sa application. Ang pinagkaiba ng Rust sa iba pang modernong wika ay wala itong basurero na awtomatikong nag-aalis ng mga hindi nagamit na bagay mula sa memorya, at wala rin itong runtime na kapaligiran na kinakailangan para gumana ito, tulad ng Java Runtime Environment para sa Java. Sa halip, ang Rust ay may mga konsepto ng pagmamay-ari, paghiram, mga sanggunian, at panghabambuhay. "Ang kalawang ay may sistema para sa pagdedeklara ng mga tawag sa isang bagay upang ipahiwatig kung ginagamit ito ng may-ari o hinihiram lamang ito. Kung hihiram ka lang ng isang bagay, susubaybayan ito ng compiler at titiyakin na ang orihinal ay mananatili sa lugar hangga't ito ay tinutukoy mo. Titiyakin din ng kalawang na ang bagay ay maalis mula sa memorya sa sandaling makumpleto ang paggamit nito, na naglalagay ng kaukulang tawag sa code sa oras ng pag-compile nang walang karagdagang oras, "sabi ni Triplett.

Ang kakulangan ng isang katutubong runtime ay maaari ding ituring na isang positibong tampok ng Rust. Naniniwala si Triplett na ang mga wikang ginagamit nito ay mahirap gamitin bilang mga tool sa programming ng system. Tulad ng ipinaliwanag niya: "Dapat mong simulan ang runtime na ito bago ka makatawag ng anumang code, dapat mong gamitin ang runtime na ito upang tumawag ng mga function, at ang runtime mismo ay maaaring magpatakbo ng karagdagang code sa likod mo sa hindi inaasahang oras."

Nagsusumikap din ang Rust na magbigay ng secure na parallel programming. Ang parehong mga tampok na ginagawang ligtas ang memorya ay sumusubaybay sa mga bagay tulad ng kung aling thread ang nagmamay-ari kung aling bagay at kung aling mga bagay ang maaaring ipasa sa pagitan ng mga thread at kung saan kailangan ng lock.

Ang lahat ng mga tampok na ito ay ginagawang sapat na nakakahimok ang Rust para sa mga developer na piliin ito bilang isang bagong tool para sa programming ng system. Gayunpaman, sa mga tuntunin ng parallel computing, ang Rust ay nasa likod pa rin ng kaunti sa C.

Nilalayon ng Triplett na lumikha ng isang espesyal na grupo ng pagtatrabaho na tututuon sa pagpapakilala ng mga kinakailangang tampok sa Rust upang ganap nitong mapantayan, malampasan at palitan ang C sa larangan ng mga system programming. SA thread sa Reddit, na nakatuon sa kanyang talumpati, sinabi niya na "ang pangkat ng FFI/C Parity ay nasa proseso ng paglikha at hindi pa nagsisimula sa trabaho," sa ngayon ay handa siyang sagutin ang anumang mga katanungan, at sa hinaharap ay tiyak na maglalathala siya ng mga agarang plano. para sa pagpapaunlad ng Rust bilang bahagi ng kanyang inisyatiba para sa lahat ng mga interesadong partido.

Maaaring ipagpalagay na ang pangkat ng FFI/C Parity ay una sa lahat ay tututuon sa pagpapabuti ng suporta sa multi-threading sa Rust, na nagpapakilala ng suporta para sa BFLOAT16, isang floating point na format na lumitaw sa mga bagong Intel Xeon Scalable processors, pati na rin ang pag-stabilize ng assembly mga pagpapasok ng code.



Pinagmulan: 3dnews.ru

Magdagdag ng komento