"Kutu ni mustakabali wa programu ya mfumo, C ndiye mkusanyaji mpya" - hotuba ya mmoja wa wahandisi wakuu wa Intel.

Katika Mkutano wa hivi majuzi wa Open Source Technology (OSTS) Josh Triplett, mhandisi mkuu katika Intel, alisema kampuni yake ina nia ya Rust kufikia "usawa" na lugha ya C ambayo bado inatawala mifumo na maendeleo ya kiwango cha chini katika siku za usoni. Katika hotuba yake Chini ya kichwa "Intel na Rust: Mustakabali wa Upangaji wa Mifumo," pia alizungumza juu ya historia ya upangaji wa mifumo, jinsi C ikawa lugha ya programu ya mifumo chaguo-msingi, ni sifa gani za Rust kuipa faida zaidi ya C, na jinsi inaweza kabisa. badala ya C katika uwanja huu wa programu.

"Kutu ni mustakabali wa programu ya mfumo, C ndiye mkusanyaji mpya" - hotuba ya mmoja wa wahandisi wakuu wa Intel.

Upangaji wa mfumo ni uundaji na usimamizi wa programu ambayo hutumika kama jukwaa la kuunda programu-tumizi, kuhakikisha programu inaingiliana na kichakataji, RAM, vifaa vya kuingiza/towe na vifaa vya mtandao. Programu ya mfumo huunda kifupisho maalum katika mfumo wa miingiliano ambayo husaidia kuunda programu ya programu bila kuzama katika maelezo ya jinsi maunzi yenyewe yanavyofanya kazi.

Triplett mwenyewe anafafanua upangaji wa mifumo kama "chochote ambacho sio programu." Inajumuisha vitu kama vile BIOS, programu dhibiti, vipakiaji viendeshaji na keneli za mfumo wa uendeshaji, aina mbalimbali za msimbo uliopachikwa wa kiwango cha chini, na utekelezaji wa mashine pepe. Inafurahisha, Triplett anaamini kuwa kivinjari pia ni programu ya mfumo, kwani kivinjari kimekuwa zaidi ya "mpango tu", na kuwa "jukwaa la tovuti na programu za wavuti"

Katika siku za nyuma, programu nyingi za mfumo, ikiwa ni pamoja na BIOS, bootloaders na firmware, ziliandikwa kwa lugha ya mkutano. Katika miaka ya 1960, majaribio yalianza kutoa usaidizi wa maunzi kwa lugha za kiwango cha juu, na kusababisha kuundwa kwa lugha kama vile PL/S, BLISS, BCPL, na ALGOL 68.

Kisha, katika miaka ya 1970, Dennis Ritchie aliunda lugha ya programu ya C kwa mfumo wa uendeshaji wa Unix. Iliyoundwa katika lugha ya programu ya B, ambayo haikuwa na usaidizi wa kuandika, C ilijazwa na kazi zenye nguvu za hali ya juu ambazo zilifaa zaidi kuandika mifumo ya uendeshaji na viendeshi. Vipengele kadhaa vya UNIX, ikiwa ni pamoja na kernel yake, hatimaye viliandikwa upya katika C. Baadaye, programu nyingine nyingi za mfumo, ikiwa ni pamoja na hifadhidata ya Oracle, sehemu kubwa ya msimbo wa chanzo cha Windows, na mfumo wa uendeshaji wa Linux, pia ziliandikwa katika C.

C imepokea msaada mkubwa katika mwelekeo huu. Lakini ni nini hasa kilifanya watengenezaji wabadilike? Triplett anaamini kwamba ili kuhamasisha watengenezaji kubadili kutoka lugha moja ya programu hadi nyingine, mwisho lazima kwanza kutoa vipengele vipya bila kupoteza vipengele vya zamani.

Kwanza, lugha lazima itoe vipengele vipya "vinavyovutia". "Hangeweza kuwa bora zaidi. Inapaswa kuwa bora zaidi kuhalalisha juhudi na wakati wa uhandisi inachukua kufanya mabadiliko, "anafafanua. Ikilinganishwa na lugha ya kusanyiko, C alikuwa na mambo mengi ya kutoa. Iliauni tabia ya usalama wa aina fulani, ilitoa uwezo wa kubebeka na utendaji bora na miundo ya kiwango cha juu, na ikatoa msimbo unaosomeka zaidi kwa ujumla.

Pili, lugha lazima itoe usaidizi kwa vipengele vya zamani, ambayo ina maana kwamba katika historia ya mpito kwa C, watengenezaji walipaswa kuwa na uhakika kwamba haikuwa kazi kidogo kuliko lugha ya mkusanyiko. Triplett anaeleza: “Lugha mpya haiwezi kuwa bora zaidi, ni lazima pia iwe nzuri.” Mbali na kuwa haraka na kuunga mkono aina yoyote ya data ambayo lugha ya mkusanyiko inaweza kutumia, C pia ilikuwa na kile Triplett aliita "escape hatch" - yaani, iliauni uwekaji wa msimbo wa lugha ya mkusanyiko ndani yake yenyewe.

"Kutu ni mustakabali wa programu ya mfumo, C ndiye mkusanyaji mpya" - hotuba ya mmoja wa wahandisi wakuu wa Intel.

Triplett anaamini kuwa C sasa inakuwa lugha ya kusanyiko miaka mingi iliyopita. "C ndiye mkusanyaji mpya," anatangaza. Sasa watengenezaji wanatafuta lugha mpya ya hali ya juu ambayo haitasuluhisha tu shida ambazo zimekusanywa katika C ambazo haziwezi kurekebishwa tena, lakini pia kutoa huduma mpya za kupendeza. Lugha kama hiyo lazima iwe ya kulazimisha vya kutosha kupata wasanidi programu kuibadilisha, lazima iwe salama, itoe usimamizi wa kumbukumbu kiotomatiki, na mengi zaidi.

"Lugha yoyote inayotaka kuwa bora kuliko C lazima itoe mengi zaidi ya ulinzi wa kufurika kwa bafa ikiwa inataka kuwa mbadala wa kulazimisha. Wasanidi programu wanavutiwa na utumiaji na utendakazi, kuandika msimbo unaojieleza na hufanya kazi nyingi katika mistari michache. Masuala ya usalama pia yanahitaji kushughulikiwa. Urahisi wa matumizi na utendaji huenda pamoja. Kadiri unavyopaswa kuandika ili kufikia jambo fulani, ndivyo unavyopata fursa ndogo ya kufanya makosa yoyote, yanayohusiana na usalama au la,” anaelezea Triplett.

Ulinganisho wa Rust na C

Huko nyuma mnamo 2006, Graydon Hoare, mfanyakazi wa Mozilla, alianza kuandika Rust kama mradi wa kibinafsi. Na mnamo 2009, Mozilla ilianza kufadhili maendeleo ya Rust kwa mahitaji yake mwenyewe, na pia ilipanua timu ili kukuza zaidi lugha.

Mojawapo ya sababu zilizofanya Mozilla kupendezwa na lugha mpya ni kwamba Firefox iliandikwa kwa zaidi ya mistari milioni 4 ya msimbo wa C++ na ilikuwa na udhaifu mdogo sana. Rust ilijengwa kwa kuzingatia usalama na upatanifu, na kuifanya chaguo bora kwa kuandika upya vipengee vingi vya Firefox kama sehemu ya mradi wa Quantum ili kurekebisha kabisa usanifu wa kivinjari. Mozilla pia inatumia Rust kutengeneza Servo, injini ya uwasilishaji ya HTML ambayo hatimaye itachukua nafasi ya injini ya sasa ya uonyeshaji ya Firefox. Makampuni mengine mengi yameanza kutumia Rust kwa miradi yao, ikiwa ni pamoja na Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu na mengine mengi.

Rust hutatua mojawapo ya matatizo muhimu zaidi ya lugha ya C. Inatoa usimamizi wa kumbukumbu kiotomatiki ili wasanidi wasilazimike kutenga wenyewe na kisha kuifungua kwa kila kitu kwenye programu. Kinachofanya kutu kuwa tofauti na lugha zingine za kisasa ni kwamba haina kikusanya takataka ambacho huondoa kiotomatiki vitu ambavyo havijatumiwa kutoka kwa kumbukumbu, na haina mazingira ya wakati wa kufanya kazi yanayohitajika kuifanya ifanye kazi, kama vile Mazingira ya Java Runtime kwa Java. Badala yake, Kutu ina dhana ya umiliki, kukopa, marejeleo, na maisha. “Kutu kuna utaratibu wa kutangaza simu kwa kitu ili kuashiria iwapo mwenye nacho anakitumia au anakiazima tu. Ikiwa utaazima tu kitu, mkusanyaji atafuatilia hii na kuhakikisha kuwa asili inabaki mahali muda mrefu unapoirejelea. Kutu pia itahakikisha kuwa kitu kimeondolewa kwenye kumbukumbu mara tu matumizi yake yanapokamilika, ikiingiza simu inayolingana kwenye msimbo wakati wa kukusanya bila muda wa ziada, "anasema Triplett.

Ukosefu wa wakati wa kukimbia wa asili unaweza pia kuchukuliwa kuwa kipengele chanya cha Rust. Triplett anaamini kuwa lugha inayotumika ni ngumu kutumia kama zana za upangaji wa mifumo. Kama anavyoeleza: "Lazima uanzishe muda huu wa utekelezaji kabla ya kupiga msimbo wowote, ni lazima utumie muda huu wa kutekeleza simu ili utendakazi, na muda wa utekelezaji wenyewe unaweza kutekeleza msimbo wa ziada nyuma yako kwa nyakati zisizotarajiwa."

Rust pia inajitahidi kutoa programu salama sambamba. Vipengele vile vile vinavyoifanya kumbukumbu iwe salama hufuatilia mambo kama vile nyuzi inamiliki kitu gani na ni vitu gani vinaweza kupitishwa kati ya nyuzi na vinavyohitaji kufuli.

Vipengele hivi vyote hufanya Rust kulazimisha vya kutosha kwa wasanidi programu kuichagua kama zana mpya ya upangaji wa mifumo. Walakini, kwa suala la kompyuta sambamba, kutu bado iko nyuma kidogo ya C.

Triplett inakusudia kuunda kikundi maalum cha kufanya kazi ambacho kitazingatia kuanzisha vipengele muhimu kwenye Rust ili iweze kusawazisha kikamilifu, kuzidi na kuchukua nafasi ya C katika uwanja wa programu ya mifumo. KATIKA thread kwenye Reddit, aliyejitolea kwa hotuba yake, alisema kuwa "kikundi cha FFI/C Parity kiko katika mchakato wa uumbaji na bado hakijaanza kazi," kwa sasa yuko tayari kujibu maswali yoyote, na katika siku zijazo hakika atachapisha mipango ya haraka. kwa maendeleo ya Rust kama sehemu ya mpango wake kwa pande zote zinazohusika.

Inaweza kudhaniwa kuwa kikundi cha Usawa wa FFI/C kwanza kitalenga kuboresha usaidizi wa nyuzi nyingi katika Rust, kuanzisha usaidizi kwa BFLOAT16, umbizo la sehemu inayoelea ambayo imeonekana katika vichakataji vipya vya Intel Xeon Scalable, na vile vile mkusanyiko wa utulivu. kuingizwa kwa kanuni.



Chanzo: 3dnews.ru

Kuongeza maoni