"Rust është e ardhmja e programimit të sistemit, C është montimi i ri" - fjalimi i një prej inxhinierëve kryesorë të Intel

Në mbledhjen e fundit të teknologjisë me burim të hapur (OSTS) Josh Triplett, një inxhinier i lartë në Intel, tha se kompania e tij është e interesuar që Rust të arrijë "barazi" me gjuhën C që ende dominon sistemet dhe zhvillimin e nivelit të ulët në të ardhmen e afërt. Në fjalën e tij Nën titullin "Intel and Rust: e ardhmja e programimit të sistemeve", ai foli gjithashtu për historinë e programimit të sistemeve, se si C u bë gjuha e programimit të sistemeve të paracaktuar, cilat veçori të Rust i japin atij një avantazh ndaj C dhe se si mund të ishte plotësisht zëvendësoni C në këtë fushë të programimit.

"Rust është e ardhmja e programimit të sistemit, C është montimi i ri" - fjalimi i një prej inxhinierëve kryesorë të Intel

Programimi i sistemit është zhvillimi dhe menaxhimi i softuerit që shërben si një platformë për krijimin e aplikacioneve aplikative, duke siguruar që këto të fundit të ndërveprojnë me procesorin, RAM-in, pajisjet hyrëse/dalëse dhe pajisjet e rrjetit. Softueri i sistemit krijon një abstraksion të veçantë në formën e ndërfaqeve që ndihmojnë në krijimin e softuerit aplikativ pa u thelluar në detaje se si funksionon vetë hardueri.

Vetë Triplett e përkufizon programimin e sistemeve si "çdo gjë që nuk është një aplikacion". Ai përfshin gjëra të tilla si BIOS, firmware, bootloaders dhe kernelet e sistemit operativ, lloje të ndryshme të kodeve të ngulitura të nivelit të ulët dhe zbatime të makinës virtuale. Është interesante që Triplett beson se një shfletues ueb është gjithashtu softuer sistemi, pasi shfletuesi është bërë prej kohësh më shumë se "thjesht një program", duke u bërë një "platformë e pavarur për faqet e internetit dhe aplikacionet në internet".

Në të kaluarën, shumica e programeve të sistemit, duke përfshirë BIOS, ngarkuesit dhe firmware, ishin shkruar në gjuhën e asamblesë. Në vitet 1960, eksperimentet filluan të ofrojnë mbështetje harduerike për gjuhët e nivelit të lartë, duke çuar në krijimin e gjuhëve të tilla si PL/S, BLISS, BCPL dhe ALGOL 68.

Më pas, në vitet 1970, Dennis Ritchie krijoi gjuhën e programimit C për sistemin operativ Unix. Krijuar në gjuhën e programimit B, e cila as nuk kishte mbështetje për shtypjen, C ishte e mbushur me funksione të fuqishme të nivelit të lartë që ishin më të përshtatshmet për të shkruar sisteme operative dhe drejtues. Disa komponentë të UNIX, duke përfshirë kernelin e tij, u rishkruan përfundimisht në C. Më pas, shumë programe të tjera të sistemit, duke përfshirë bazën e të dhënave Oracle, një pjesë të madhe të kodit burimor të Windows dhe sistemin operativ Linux, u shkruan gjithashtu në C.

C ka marrë mbështetje të jashtëzakonshme në këtë drejtim. Por çfarë saktësisht i bëri zhvilluesit të kalojnë në të? Triplett beson se për të motivuar zhvilluesit të kalojnë nga një gjuhë programimi në tjetrën, kjo e fundit duhet së pari të ofrojë veçori të reja pa humbur veçoritë e vjetra.

Së pari, gjuha duhet të ofrojë veçori të reja "të arsyeshme mbresëlënëse". “Ai nuk mund të ishte më i mirë. Duhet të jetë shumë më mirë për të justifikuar përpjekjet dhe kohën inxhinierike që duhet për të bërë tranzicionin,” shpjegon ai. Krahasuar me gjuhën e asamblesë, C kishte shumë gjëra për të ofruar. Ai mbështeti sjellje disi të sigurta për tipin, siguroi transportueshmëri dhe performancë më të mirë me konstruksione të nivelit të lartë dhe gjeneroi kod shumë më të lexueshëm në përgjithësi.

Së dyti, gjuha duhet të ofrojë mbështetje për veçoritë e vjetra, që do të thotë se në historinë e tranzicionit në C, zhvilluesit duhej të ishin të sigurt se ajo nuk ishte më pak funksionale sesa gjuha e asamblesë. Triplett shpjegon: "Një gjuhë e re nuk mund të jetë thjesht më e mirë, por gjithashtu duhet të jetë po aq e mirë." Përveç të qenit më i shpejtë dhe mbështetjes së çdo lloji të të dhënave që mund të përdorte gjuha e asamblesë, C kishte gjithashtu atë që Triplett e quajti "hapje shpëtimi" - domethënë, ai mbështeti futjen e kodit të gjuhës së asamblesë brenda vetes.

"Rust është e ardhmja e programimit të sistemit, C është montimi i ri" - fjalimi i një prej inxhinierëve kryesorë të Intel

Triplett beson se C tani po bëhet ajo që ishte gjuha e asamblesë shumë vite më parë. "C është montuesi i ri," deklaron ai. Tani zhvilluesit po kërkojnë për një gjuhë të re të nivelit të lartë që jo vetëm që do të zgjidhë problemet që janë grumbulluar në C që nuk mund të rregullohen më, por gjithashtu do të ofrojë veçori të reja emocionuese. Një gjuhë e tillë duhet të jetë mjaft bindëse për t'i bërë zhvilluesit të kalojnë në të, duhet të jetë e sigurt, të sigurojë menaxhim automatik të kujtesës dhe shumë më tepër.

“Çdo gjuhë që dëshiron të jetë më e mirë se C duhet të ofrojë shumë më tepër sesa thjesht mbrojtje nga tejmbushja e tamponit nëse vërtet dëshiron të jetë një alternativë bindëse. Zhvilluesit janë të interesuar për përdorshmërinë dhe performancën, duke shkruar kodin që është vetë-shpjegues dhe që kryen më shumë punë në më pak rreshta. Duhet të adresohen gjithashtu çështjet e sigurisë. Lehtësia e përdorimit dhe performanca shkojnë dorë për dore. Sa më pak kod duhet të shkruani për të arritur diçka, aq më pak mundësi keni për të bërë ndonjë gabim, të lidhur me sigurinë ose jo,” shpjegon Triplett.

Krahasimi i Rust dhe C

Në vitin 2006, Graydon Hoare, një punonjës i Mozilla-s, filloi të shkruante Rust si një projekt personal. Dhe në vitin 2009, Mozilla filloi të sponsorizonte zhvillimin e Rust për nevojat e veta, dhe gjithashtu zgjeroi ekipin për të zhvilluar më tej gjuhën.

Një nga arsyet pse Mozilla u interesua për gjuhën e re është se Firefox-i ishte shkruar në mbi 4 milionë rreshta të kodit C++ dhe kishte mjaft dobësi kritike. Rust u ndërtua duke pasur parasysh sigurinë dhe konkurencën, duke e bërë atë një zgjedhje ideale për rishkrimin e shumë prej komponentëve të Firefox-it si pjesë e projektit Quantum për të ridizajnuar plotësisht arkitekturën e shfletuesit. Mozilla po përdor gjithashtu Rust për të zhvilluar Servo, një motor përkthimi HTML që përfundimisht do të zëvendësojë motorin aktual të paraqitjes së Firefox-it. Shumë kompani të tjera kanë filluar të përdorin Rust për projektet e tyre, duke përfshirë Microsoft, Google, Facebook, Amazon, Dropbox, Fastly, Chef, Baidu dhe shumë të tjera.

Rust zgjidh një nga problemet më të rëndësishme të gjuhës C. Ofron menaxhim automatik të memories në mënyrë që zhvilluesit të mos kenë nevojë ta ndajnë manualisht dhe më pas ta lirojnë atë për çdo objekt në aplikacion. Ajo që e bën Rust të ndryshme nga gjuhët e tjera moderne është se ajo nuk ka një grumbullues mbeturinash që heq automatikisht objektet e papërdorura nga memoria, as nuk ka mjedisin e funksionimit të kërkuar për ta bërë atë të funksionojë, si Java Runtime Environment për Java. Në vend të kësaj, Rust ka konceptet e pronësisë, huamarrjes, referencave dhe jetëgjatësisë. “Rust ka një sistem për deklarimin e thirrjeve në një objekt për të treguar nëse pronari po e përdor atë apo thjesht po e merr hua. Nëse thjesht huazoni një objekt, përpiluesi do ta mbajë shënim këtë dhe do të sigurojë që origjinali të mbetet në vend për aq kohë sa ju e referoni. Rust do të sigurojë gjithashtu që objekti të hiqet nga memoria sapo të përfundojë përdorimi i tij, duke futur një thirrje përkatëse në kod në kohën e përpilimit pa kohë shtesë, "thotë Triplett.

Mungesa e një kohëzgjatjeje amtare mund të konsiderohet gjithashtu një tipar pozitiv i Rust. Triplett beson se gjuhët në të cilat funksionon janë të vështira për t'u përdorur si mjete programimi të sistemeve. Siç shpjegon ai: "Duhet të inicializoni këtë kohë ekzekutimi përpara se të mund të telefononi ndonjë kod, duhet ta përdorni këtë kohë ekzekutimi për të thirrur funksione dhe vetë koha e ekzekutimit mund të ekzekutojë kod shtesë pas shpine në kohë të papritura."

Rust gjithashtu përpiqet të sigurojë programim paralel të sigurt. Të njëjtat veçori që e bëjnë atë të sigurt në memorie mbajnë gjurmët e gjërave, si p.sh. se cili fije zotëron cilin objekt dhe cilat objekte mund të kalohen midis fijeve dhe cilat kanë nevojë për një bllokim.

Të gjitha këto veçori e bëjnë Rust mjaft bindës që zhvilluesit ta zgjedhin atë si një mjet të ri për programimin e sistemeve. Sidoqoftë, për sa i përket llogaritjes paralele, Rust është ende pak prapa C.

Triplett synon të krijojë një grup të posaçëm pune që do të fokusohet në futjen e veçorive të nevojshme në Rust në mënyrë që ai të mund të barazojë plotësisht, të tejkalojë dhe të zëvendësojë C në fushën e programimit të sistemeve. NË thread në Reddit, kushtuar fjalës së tij, ai tha se “grupi i Paritetit FFI/C është në proces të krijimit dhe ende nuk ka filluar punën”, tani për tani ai është i gatshëm t'i përgjigjet çdo pyetjeje dhe në të ardhmen do të publikojë patjetër planet imediate. për zhvillimin e Rust si pjesë e iniciativës së tij për të gjithë të interesuarit.

Mund të supozohet se grupi FFI/C Parity do të fokusohet para së gjithash në përmirësimin e mbështetjes me shumë fije në Rust, duke prezantuar mbështetjen për BFLOAT16, një format me pikë lundruese që është shfaqur në procesorët e rinj Intel Xeon Scalable, si dhe montimin stabilizues. futjet e kodeve.



Burimi: 3dnews.ru

Shto një koment