Äîðîãó ìîëîäûì
Èñïîëüçîâàíèå ÿçûêà ïðîãðàììèðîâàíèÿ Rust âìåñòî áîëåå ïîïóëÿðíûõ, õîòÿ è ãîðàçäî áîëåå ñòàðûõ ðåøåíèé, îêàçàëîñü ïîëíîñòüþ îïðàâäàííî. Êàê ïîêàçàë îïûò Google, ñ ïîìîùüþ Rust ìîæíî âäâîå óâåëè÷èòü ïðîèçâîäèòåëüíîñòü êîìàíäû ðàçðàáîò÷èêîâ â ñðàâíåíèè ñ èñïîëüçîâàíèåì C++. Ïðîãðàììèñòû, ïåðåøåäøèå íà Rust, íàïåðåáîé ãîâîðÿò î òîì, ÷òî îí íàìíîãî ïðîùå Ñ++ âî âñåõ àñïåêòàõ.
Î ïðåèìóùåñòâàõ Rust íàä C++ çàÿâèë òåõíè÷åñêèé äèðåêòîð Google Ëàíñ Áåðãñòðîì (Lance Bergstrom), âûñòóïàÿ íà êîíôåðåíöèè Rust Nation UK â Ëîíäîíå (Âåëèêáðèòàíèÿ).  êîìàíäå Google Áåðãñòðîì êóðèðóåò, â ÷àñòíîñòè ðàçðàáîòêó èíñòðóìåíòîâ è áèáëèîòåê äëÿ Android. Îí çàÿâèë, ÷òî Google àêòèâíî ïåðåíîñèò ñâîé ñîôò, íåêîãäà íàïèñàííûé íà C++, íà áîëåå ñîâðåìåííûé ÿçûê Rust. Ïî åãî ñëîâàì, Google íàñòîëüêî óâåðîâàë â Rust, ÷òî ïåðåïèñûâàåò íà íåì äàæå êîä, íàïèñàííûé íà Go, òàêæå èçâåñòíîì êàê Golang – ÿçûêå ïðîãðàììèðîâàíèÿ, ñîçíàííîì â íåäðàõ ñàìîãî Google.
Rust – ýòî îäèí èç ñàìûõ ìîëîäûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ. Åãî èñòîðèÿ íà÷àëàñü â ñîîáùåñòâå Mozilla â 2006 ã. à äî âåðñèè 1.0 îí äîðîñ ëèøü ê 2015 ã. Äëÿ ñðàâíåíèÿ, Ñ++ ïîÿâèëñÿ íà äåñÿòêè ëåò ðàíüøå – â 1983 ã. Íà ìîìåíò âûõîäà ìàòåðèàëà åìó èñïîëíèëñÿ 41 ãîä ïðîòèâ 18 ëåò ó Rust.
×òî ïðèìå÷àòåëüíî, âíóøèòåëüíûé ïîòåíöèàë â Rust ïåðâûìè ðàçãëÿäåëè õàêåðû è âèðóñìåéêåðû. Îíè ñòàëè ïèñàòü ñâîé âðåäîíîñíûé ñîôò íà ýòîì ÿçûêå, ïîòîìó ÷òî çà ñ÷åò ýòîãî àíòèâèðóñíûì ñèñòåìàì ãîðàçäî ñëîæíåå äàåòñÿ èõ îáíàðóæåíèå. Ïàðàëëåëüíî îíè èñïîëüçóþò åùå è Go, íî ïðåäïî÷òåíèå âñå æå îòäàþò Rust. Âïðî÷åì, è îáû÷íûå ïðîãðàììèñòû òîæå ïîñòåïåííî ïåðåõîäÿò íà Rust – îòíîñèòåëüíî ìàññîâûì ýòî ÿâëåíèå ñòàëî âî âòîðîé ïîëîâèíå 2023 ã.
Ñîìíåíèÿ åùå îñòàþòñÿ
Google – íå åäèíñòâåííàÿ êðóïíàÿ ÈÒ-êîðïîðàöèÿ, êîòîðàÿ âñåðüåç çàäóìàëàñü î ïåðåõîäå ñ äðóãèõ ÿçûêîâ ïðîãðàììèðîâàíèÿ íà Rust, íî îäíà èç íåìíîãèõ, êòî ðåøèëñÿ íà ýòîò øàã. Áåðãñòðîì ïðèâåë ê êà÷åñòâå ïðèìåðà îáëà÷íûé ñåðâèñ Dropbox è ñîôò äëÿ äèçàéíåðîâ Figma, âëàäåëüöû êîòîðûõ òîæå ñìîòðåëè â ñòîðîíó Rust â 2016 è 2018 ãã. ñîîòâåòñòâåííî, íî òàê è íå ðåøèëèñü íà÷àòü ïåðåõîä. Ïî ñëîâàì Áåðãñòðîìà, èõ òîãäà ñìóòèëà èìåííî ïðîèçâîäèòåëüíîñòü òðóäà ïðîãðàììèñòîâ ïîñëå ïåðåõîäà íà íîâûé ÿçûê.
Òåïåðü æå Google íà ñîáñòâåííîì ïðèìåðå ïîêàçàë, ÷òî áîÿòüñÿ ïàäåíèÿ ïðîèçâîäèòåëüíîñòè ïðè ïåðåõîäå íà Rust íå ñòîèò. Ýòè ñîìíåíèÿ èíòåðíåò-ãèãàíò ðàçâåÿë, íî, êàê îòìåòèë Áåðãñòðîì, îïàñåíèÿ ïî ïîâîäó íàäåæíîñòè è áåçîïàñíîñòè ýòîãî ÿçûêà ïîêà ñîõðàíÿþòñÿ.
«Äàæå øåñòü ìåñÿöåâ íàçàä ýòî áûë äåéñòâèòåëüíî òðóäíûé ðàçãîâîð, – ñêàçàë îí. – ß õîäèë è ðàçãîâàðèâàë ñ ëþäüìè, è îíè ãîâîðèëè: «Ïîäîæäèòå, ïîäîæäèòå, ó âàñ åñòü êëþ÷åâîå ñëîâî unsafe («íåáåçîïàñíûé» – ïðèì. CNews). Ýòî îçíà÷àåò, ÷òî ìû âñå äîëæíû èñïîëüçîâàòü C++ äî òåõ ïîð, ïîêà íå íàñòóïèò ñìåðòü Âñåëåííîé».
Íå Google åäèíûì
Áåðãñòðîì ïîïûòàëñÿ ðàçâåÿòü è ýòè ñîìíåíèÿ. Âûñòóïàÿ íà êîíôåðåíöèè â Ëîíäîíå, îí çàÿâèë, ÷òî êîä Rust ïðè ïðàâèëüíîé ðåàëèçàöèè ìîæåò â çíà÷èòåëüíîé ñòåïåíè, åñëè íå ïîëíîñòüþ, èçáåæàòü òàêèõ ïðîáëåì ñ óòå÷êàìè ïàìÿòè – îñíîâîé ïîäàâëÿþùåãî áîëüøèíñòâà óÿçâèìîñòåé â ñîâðåìåííîì ÏÎ.
Ê ñëîâó, ñîôòâåðíàÿ êîðïîðàöèÿ Microsoft òîæå î÷åíü òåïëî îòíîñèòñÿ ê Rust. Åùå â ñåíòÿáðå 2022 ã. òåõíè÷åñêèé äèðåêòîð Microsoft Azure Ìàðê Ðóññèíîâè÷ (Mark Russinovich) óòâåðæäàë, ÷òî ïðîãðàììíûå ïðîåêòû, êîòîðûå ìîãëè áû áûòü íàïèñàíû íà C/C++, äîëæíû èñïîëüçîâàòü âìåñòî ýòîãî Rust.
Ê íàñòîÿùåìó âðåìåíè äàííàÿ ðåêîìåíäàöèÿ Ðóñèíîâè÷à äàâíî ïåðåñòàëà êàñàòüñÿ èñêëþ÷èòåëüíî íîâûõ ïðîåêòîâ. Òåïåðü îí òîæå ïðèçûâàåò ê ïåðåïèñûâàíèþ ñòàðîãî êîäà íà Rust.  ÷àñòíîñòè, ðàíåå â 2024 ã. Microsoft îáðàòèëàñü ê ðàçðàáîò÷èêàì ñ ïðîñüáîé î ïîìîùè â ïåðåíîñå ñâîåãî êîä ñ ÿçóêà C# íà Rust.
Amazon – åùå îäíà êðóïíåéøàÿ ÈÒ-êîìïàíèÿ, êîòîðàÿ ðàçãëÿäåëà â Rust ïîòåíöèàë. Åå êðóïíåéøèé â ìèðå îáëà÷íûé ñåðâèñ AWS, êàê ñîîáùàë CNews, â íà÷àëå 2022 ã. îòêàçàëñÿ îò âñåõ äðóãèõ ÿçûêîâ ïðîãðàììèðîâàíèÿ èìåííî â ïîëüçó Rust.  êîìïàíèè ïîä÷åðêíóëè, ÷òî íàïèñàííûå íà Rust ïðîãðàììû ïîòðåáëÿþò ñóùåñòâåííî ìåíüøå ðåñóðñîâ íà ôîíå èõ àíàëîãîâ íà Ñ è Ñ++, ÷òî ïîçâîëÿåò ñíèçèòü îáùåìèðîâîå ýíåðãîïîòðåáëåíèå è óìåíüøèòü íàãðóçêó íà îêðóæàþùóþ ñðåäó.
Áåðãñòðîì ãîâîðèò î òîì æå ñàìîì. «Ìû âèäèì ñíèæåíèå èñïîëüçîâàíèÿ ïàìÿòè â ñåðâèñàõ, êîòîðûå ìû ïåðåíåñëè ñ Go», – çàÿâèë îí. Ñðàâíèâàÿ Rust è Ñ++, îí ñêàçàë: «Â êàæäîì ñëó÷àå ìû íàáëþäàëè ñíèæåíèå áîëåå ÷åì â äâà ðàçà îáúåìà óñèëèé, íåîáõîäèìûõ êàê äëÿ ñîçäàíèÿ ñåðâèñîâ íà Rust, òàê è äëÿ ïîääåðæêè è îáíîâëåíèÿ ýòèõ ñåðâèñîâ, íàïèñàííûõ íà íåì. È ýòî î÷åíü âàæíî äëÿ íàñ, ïîòîìó ÷òî êîä C++ î÷åíü äîðîã. Ýòî áîëüøèå êîìàíäû. Ýòî áîëüøîé îáúåì ðàáîòû. Ñóùåñòâóåò ìíîãî ðèñêîâ».
Âîçìîæíû ãðàíäèîçíûå ïåðåìåíû
Íà íà÷àëî àïðåëÿ 2024 ã. Ñ++ âõîäèë â òîï-5 ñàìûõ ïîïóëÿðíûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ â ìèðå ïî âåðñèè Tiobe íàðÿäó ñ Python (îí î÷åíü ëåãîê â îñâîåíèè), Java (åãî î÷åíü ëþáÿò ðîññèéñêèå ïðîãðàììèñòû), Ñ è C#. Rust íàõîäèëñÿ íà 17 ìåñòå, íî îí î÷åíü áûñòðî ïðîêëàäûâàåò ñåáå ïóòü ê ïåðâîé äåñÿòêå. Ýòî åãî ñàìûé ëó÷øèé ðåçóëüòàò íà ìîìåíò âûõîäà ìàòåðèàëà – ãîä íàçàä îí áûë íà 19 ìåñòå, à íà÷èíàë îí ñ 211 ìåñòà â 2012 ã.
Áåðãñòðîì ñêàçàë òàêæå, ÷òî Google ïðîâîäèò àíàëîãè÷íóþ ìèãðàöèþ ðàçðàáîò÷èêîâ ñ Java íà Kotlin (ïåðâûé ðåëèç â 2011 ã.), è ÷òî âðåìÿ, íåîáõîäèìîå äëÿ ïåðåîáó÷åíèÿ ðàçðàáîò÷èêîâ â îáîèõ ñëó÷àÿõ – ñ Java íà Kotlin è ñ C++ íà Rust – îäèíàêîâî. Òî åñòü ÷åðåç äâà ìåñÿöà îêîëî òðåòè ðàçðàáîò÷èêîâ ïî÷óâñòâóþò, ÷òî îíè ñòîëü æå ïðîäóêòèâíû íà íîâîì ÿçûêå, êàê è íà ñòàðîì. Ïî ñëîâàì Áåðãñòðîìà, ÷óòü áîëüøå ïîëîâèíû åãî ðàçðàáîò÷èêîâ ãîâîðÿò, ÷òî Rust ëåã÷å ïðîâåðÿòü.
Íå èñêëþ÷åíî, ÷òî ïðèìåðó Google, Microsoft è Amazon â îáîçðèìîì áóäóùåì ïîñëåäóþò è äðóãèå êðóïíûå êîìïàíèè. À ñ ó÷åòîì êîëè÷åñòâà ðàáîòàþùèõ â èõ øòàòå ðàçðàáîò÷èêîâ è Kotlin, êîòîðûé â ìàðòå 2024 ã. áûë íà 19 ìåñòå ïðîòèâ 35 ãîäîì ðàíåå, è Rust áûñòðî âîðâóòñÿ ñíà÷àëà â òîï-10, à çàòåì è â òîï-5.





