Âûáèðàé : Ïîêóïàé : Èñïîëüçóé
0

«Âñåõ íå ïåðåó÷èòå»: Ïðîãðàììèñòû-ñòàðîâåðû èç ÷èñëà ðàçðàáîò÷èêîâ Linux âöåïèëèñü çóáàìè â C/C++ è íè â êàêóþ íå õîòÿò ïåðåõîäèòü íà Rust

Íåêîòîðûå ó÷àñòâóþùèå â ðàçðàáîòêå ÿäðà Linux ñïåöèàëèñòû íàîòðåç îòêàçàëèñü îòêàçûâàòüñÿ îò èñïîëüçîâàíèÿ ÿçûêîâ C è C++ è ïåðåõîäèòü íà áîëåå ñîâðåìåííûé è ãîðàçäî áîëåå áåçîïàñíûé Rust.  ñîîáùåñòâå ðàçðàáîò÷èêîâ åäâà ëè íå ðàñêîë – ìíîãèå «ñòàðîâåðû» íå æåëàþò ïèñàòü íà Rust, íåñìîòðÿ íà òî, ÷òî Google âñÿ÷åñêè ïîîùðÿåò ïåðåõîä íà íîâûé ÿçûê.

Âû êòî òàêèå? Ìû âàñ íå çâàëè

Ðàçðàáîò÷èêè ÏÎ íà ÿçûêàõ ïðîãðàììèðîâàíèÿ C è C++, êàê âûÿñíèëîñü, î÷åíü íåãàòèâíî îòíîñÿòñÿ ê ïåðåõîäó íà áîëåå ñîâðåìåííûé è òèïîáåçîïàñíûé Rust, ïèøåò The Register. Ýòîò ÿçûê ñòðåìèòåëüíî íàáèðàåò ïîïóëÿðíîñòü, îí ãîðàçäî íîâåå C/C++, êîòîðûå ñòàðøå ìíîãèõ ïðîãðàììèñòîâ, ïèøóùèõ íà íåì, è â íåì, â îòëè÷èå îò C/C++, îòñóòñòâóþò óÿçâèìîñòè, êîòîðûå ïðèâîäÿò ê îøèáêàì ïàìÿòè.

Ïðîòèâ ïåðåõîäà íà Rust â ïðîåêòàõ, êîòîðûå äëèòåëüíîå âðåìÿ, èíîãäà öåëûìè äåñÿòèëåòèÿìè, ïèñàëèñü íà C/C++, âûñòóïàþò î÷åíü ìíîãèå ðàçðàáîò÷èêè. Ñðåäè íèõ è òå, îò ÷üèõ äåéñòâèé çàâèñÿò äåñÿòêè ìèëëèîíîâ ÷åëîâåê ïî âñåìó ìèðó. Ðå÷ü â äàííîì ñëó÷àå î ñïåöèàëèñòîâ èç êîìüþíèòè ðàçðàáîò÷èêîâ ÿäðà Linux è ïîëüçîâàòåëåé ýòîé ÎÑ – ïîñëåäíèõ, êàê ñîîáùàë CNews, ñ êàæäîé íåäåëåé ñòàíîâèòñÿ âñå áîëüøå.

Áåçîïàñíîñòü êîäà çàâèñèò îò ìíîãèõ ôàêòîðîâ, â òîì ÷èñëå è ÿçûêà, íà êîòîðîì îí íàïèñàí

«Âèäèòå ëè â ÷åì äåëî: âû íå çàñòàâèòå íàñ âñåõ èçó÷àòü Rust» (Here's the thing, you're not going to force all of us to learn Rust), — ñêàçàë îäèí èç ðàçðàáîò÷èêîâ ÿäðà Linux âî âðåìÿ îæèâëåííîé äèñêóññèè íà ïðîôèëüíîé êîíôåðåíöèè â íà÷àëå 2024 ã.

Ñèòóàöèÿ íå óëó÷øàåòñÿ, íî Google ñòàðàåòñÿ

Êàê ïèøåò The Register, î÷åíü íåëåãêî çàñòàâèòü ðàçðàáîò÷èêîâ C è C++ «ñìîòðåòü íà ìèð ÷åðåç ïðèçìó Rust» (to see the world with Rust-tinted lenses). Íàïðèìåð, â íà÷àëå ñåíòÿáðÿ 2024 ã. îäèí èç êëþ÷åâûõ ó÷àñòíèêîâ ïðîåêòà ïî ïåðåâîäó ÿäðà Linux íà Rust äëÿ Linux, óøåë â îòñòàâêó, ñîñëàâøèñü, â ÷èñëå ïðî÷åãî, íà ñîïðîòèâëåíèå ðàçðàáîò÷èêîâ ÿäðà Linux ê ïåðåõîäó íà Rust.

Ìåæäó òåì, èìåííî èç-çà èñïîëüçîâàíèÿ ÿçûêà Ñ â ÿäðå Linux ñêîïèëîñü íåìàëî äûð. Íà ýòî åùå â 2021 ã. óêàçàëè äðóãèå ðàçðàáîò÷èêè ÿäðà.

Íà òî, ÷òî ïîðà îòêàçûâàòüñÿ îò Ñ â ïîëüçó Rust íàïèðàåò è èíòåðíåò-ãèãàíò Google. Íà äíÿõ îí ïåðåïèñàë ñîôò äëÿ âèðòóàëüíûõ ìàøèí â Android Virtualization Framework ñ èñïîëüçîâàíèåì Rust è òåïåðü âûïóñêàåò öèêë ñòàòåé, â êîòîðîé íàõâàëèâàåò ýòîò ÿçûê.

Àâòîðû ìàòåðèàëîâ ïîäðîáíî ðàçáèðàþò òåõíè÷åñêèå äåòàëè çàìåíû óñòàðåâøåãî êîäà C è C++ íà Rust.  îäíîé èç ñòàòåé öèêëà íàïèñàíî: «Âû óâèäèòå, êàê ëåãêî ïîâûñèòü áåçîïàñíîñòü ñ ïîìîùüþ ãîòîâûõ çàìåí Rust, è ìû äàæå ïðîäåìîíñòðèðóåì, êàê íàáîð èíñòðóìåíòîâ Rust ìîæåò ðàáîòàòü ñî ñïåöèàëèçèðîâàííûìè öåëÿìè».

 ñòàòüÿõ íåñêîëüêî ðàç óïîìèíàåòñÿ òî, ÷òî Rust áåçîïàñíåå Ñ è Ñ++. Ïî ìíåíèþ àâòîðîâ, Rust ïðåäîñòàâëÿåò ñïîñîá èçáåæàòü ïîïàäàíèÿ â êîä îøèáîê áåçîïàñíîñòè ïàìÿòè, âêëþ÷àÿ ïåðåïîëíåíèå áóôåðà è èñïîëüçîâàíèå ïîñëå îñâîáîæäåíèÿ. «Rust ïðåäîñòàâëÿåò áåçîïàñíóþ äëÿ ïàìÿòè àëüòåðíàòèâó C è C++ ñ ñîïîñòàâèìîé ïðîèçâîäèòåëüíîñòüþ è ðàçìåðîì êîäà. Êðîìå òîãî, îí ïîääåðæèâàåò âçàèìîäåéñòâèå ñ C áåç äîïîëíèòåëüíûõ ñëîæíîñòåé», – îòìå÷åíî â ñòàòüå.

«Ìû ïðèçíàåì âàæíóþ ðîëü Rust â ñîçäàíèè áåçîïàñíîãî è íàäåæíîãî ïðîãðàììíîãî îáåñïå÷åíèÿ íà âñåõ óðîâíÿõ ñòåêà, – ñêàçàë Ëàðñ Áåðãñòðîì (Lars Bergstrom), äèðåêòîð ïî èíæèíèðèíãó ÿçûêîâ ïðîãðàììèðîâàíèÿ Android â Google è ïðåäñåäàòåëü ñîâåòà äèðåêòîðîâ Rust Foundation. –  Google ìû íàðàùèâàåì èñïîëüçîâàíèå Rust â Android, Chromium è äðóãèõ ñèñòåìàõ, ÷òîáû óìåíüøèòü êîëè÷åñòâî óÿçâèìîñòåé áåçîïàñíîñòè ïàìÿòè. Ìû íàöåëåíû íà ñîòðóäíè÷åñòâî ñ ýêîñèñòåìîé Rust, ÷òîáû ñïîñîáñòâîâàòü åå âíåäðåíèþ è ïðåäîñòàâèòü ðàçðàáîò÷èêàì ðåñóðñû è îáó÷åíèå, íåîáõîäèìûå äëÿ óñïåõà. Ýòà ðàáîòà ïî âíåäðåíèþ Rust âî âñòðîåííûå è âñòðîåííûå ñèñòåìû çàòðàãèâàåò åùå îäíó âàæíóþ ÷àñòü ñòåêà».

Òàêæå Google óæå íàãëÿäíî äîêàçàë ïðåèìóùåñòâî Rust íàä Ñ è Ñ++.  àïðåëå 2024 ã. CNews ïèñàë, ÷òî èíòåðíåò-ãèãàíò çàôèêñèðîâàë åäâà ëè íå äâóêðàòíûé ðîñò ïðîäóêòèâíîñòè ðàçðàáîò÷èêîâ, ïèøóùèõ íà Rust, â ñðàâíåíèè ñ èõ êîëëåãàìè, ïðåäïî÷èòàþùèìè Ñ è Ñ++.

Ïðàâèòåëüñòâî òîæå íà ñòîðîíå ïðîãðåññà

Ïðàâèòåëüñòâî ÑØÀ â ïîñëåäíåå âðåìÿ óñèëåííî ðàáîòàåò ïåðåõîäîì íà Rust. Ïðè ïîääåðæêå âåäóùèõ òåõíîëîãè÷åñêèõ ôèðì è íåêîììåð÷åñêèõ èíèöèàòèâ îíî çàíèìàåòñÿ ïåðåïèñûâàíèåì êðèòè÷åñêèõ ïðîåêòîâ è êîìïîíåíòîâ ñ îòêðûòûì èñõîäíûì êîäîì íà Rust. Ñâèäåòåëüñòâîì òîìó ñëóæèò, â ÷àñòíîñòè, ïðîøëîãîäíÿÿ ðåêîìåíäàöèÿ Àãåíòñòâà ïî êèáåðáåçîïàñíîñòè è çàùèòå èíôðàñòðóêòóðû (Cybersecurity & Infrastructure Security Agency, CISA) î òîì, ÷òî ïîñòàâùèêè ïðîãðàììíîãî îáåñïå÷åíèÿ «ñòàâÿò ïåðåä ñîáîé öåëü âûñøåãî óðîâíÿ – ñîêðàòèòü è â êîíå÷íîì èòîãå óñòðàíèòü óÿçâèìîñòè áåçîïàñíîñòè ïàìÿòè â ñâîèõ ëèíåéêàõ ïðîäóêòîâ».

Åñòü è äðóãîé, åùå áîëåå íàãëÿäíûé ïðèìåð.  íà÷àëå àâãóñòà 2024 ã. Óïðàâëåíèå ïåðñïåêòèâíûõ èññëåäîâàòåëüñêèõ ïðîåêòîâ Ìèíèñòåðñòâà îáîðîíû ÑØÀ (DARPA), ñîçäàòåëü ïðîòîòèïà èíòåðíåòà, çàïóñòèëî ïðîåêò ïî ïåðåíîñó óñòàðåâøåãî è íåáåçîïàñíîãî êîäà, íàïèñàííîãî íà ÿçûêå ïðîãðàììèðîâàíèÿ C, íà Rust. Âåäîìñòâî âåñüìà ñåðüåçíî îáåñïîêîåíî «äûðÿâîñòüþ» èñïîëüçóåìîãî èì ñòàðîãî íàïèñàííîãî íà Ñ ïðîãðàììíîãî îáåñïå÷åíèÿ.

×òîáû óïðîñòèòü çàäà÷ó ïî ïåðåõîäó, âåäîìñòâî íàìåðåíî ðàçðàáîòàòü èíñòðóìåíòû äëÿ àâòîìàòèçàöèè ïåðåâîäà êîäà íà Ñ íà êîä, íàïèñàííûé íà ÿçûêå Rust. Ïîäîáíûå èíñòðóìåíòû óæå ñóùåñòâóþò – â àâãóñòå 2023 ã. IBM ñîçäàëà ñïåöèàëüíûé ñåðâèñ, êîòîðûé ïåðåâîäèò êîä ïðîãðàìì, íàïèñàííûõ íà äðåâíåì ÿçûêå ïðîãðàììèðîâàíèÿ COBOL, íà îòíîñèòåëüíî ñîâðåìåííûé è î÷åíü ïîïóëÿðíûé âî âñåì ìèðå Java.

Êîììåíòàðèè