1 added
1 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>3 ноя 2022</li>
2
<ul><li>3 ноя 2022</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Рассказываем о быстром и надёжном языке программирования от Mozilla, который назвали совсем не в честь компьютерной игры.</p>
4
</ul><p>Рассказываем о быстром и надёжном языке программирования от Mozilla, который назвали совсем не в честь компьютерной игры.</p>
5
<p>Шеф-редактор Skillbox Media "Код". Пишет о разработке, софт-скиллах и культовых личностях в IT. Обожает Swift, продукты Apple и мемы про код.</p>
5
<p>Шеф-редактор Skillbox Media "Код". Пишет о разработке, софт-скиллах и культовых личностях в IT. Обожает Swift, продукты Apple и мемы про код.</p>
6
<p>Rust появился семь лет назад и почти сразу стал любимчиком программистов по версии<a>Stack Overflow</a>. Его используют Microsoft, Twitter, VK, Dropbox и другие гиганты IT-индустрии. Разбираемся, чем так хорош этот язык, что у него под капотом и подходит ли он новичкам.</p>
6
<p>Rust появился семь лет назад и почти сразу стал любимчиком программистов по версии<a>Stack Overflow</a>. Его используют Microsoft, Twitter, VK, Dropbox и другие гиганты IT-индустрии. Разбираемся, чем так хорош этот язык, что у него под капотом и подходит ли он новичкам.</p>
7
<p>Rust - это язык программирования общего назначения, заточенный под разработку высоконагруженных систем. На нём пишут веб-приложения, браузерные движки, блокчейны и другие сложные платформы, которые обрабатывают запросы миллионов пользователей. Разберём его главные фишки.</p>
7
<p>Rust - это язык программирования общего назначения, заточенный под разработку высоконагруженных систем. На нём пишут веб-приложения, браузерные движки, блокчейны и другие сложные платформы, которые обрабатывают запросы миллионов пользователей. Разберём его главные фишки.</p>
8
<p><strong>Компиляция.</strong>Перед запуском код на Rust сразу переводится на машинный язык - то есть превращается в набор нулей и единиц. Этим Rust отличается, например, от <a>JavaScript</a>, где код сначала прогоняется через интерпретатор, а уже потом идёт на процессор. Фишка компиляции в том, что так программы запускаются быстрее и потребляют меньше памяти.</p>
8
<p><strong>Компиляция.</strong>Перед запуском код на Rust сразу переводится на машинный язык - то есть превращается в набор нулей и единиц. Этим Rust отличается, например, от <a>JavaScript</a>, где код сначала прогоняется через интерпретатор, а уже потом идёт на процессор. Фишка компиляции в том, что так программы запускаются быстрее и потребляют меньше памяти.</p>
9
<p><strong>Мультипарадигмальность.</strong>Парадигма программирования определяет стиль, в котором разработчики пишут код. Rust поддерживает сразу несколько парадигм: функциональное, декларативное и объектно-ориентированное программирование. Чаще всего компании используют последний подход, но Rust может работать в любом режиме.</p>
9
<p><strong>Мультипарадигмальность.</strong>Парадигма программирования определяет стиль, в котором разработчики пишут код. Rust поддерживает сразу несколько парадигм: функциональное, декларативное и объектно-ориентированное программирование. Чаще всего компании используют последний подход, но Rust может работать в любом режиме.</p>
10
<p><strong>Высокий уровень абстракции.</strong>Команды на Rust представляют собой простые английские слова: input, let, match и так далее. Поэтому код на нём легко читать и проверять. В то же время язык поддерживает использование некоторых низкоуровневых средств для более тонкой работы с железом.</p>
10
<p><strong>Высокий уровень абстракции.</strong>Команды на Rust представляют собой простые английские слова: input, let, match и так далее. Поэтому код на нём легко читать и проверять. В то же время язык поддерживает использование некоторых низкоуровневых средств для более тонкой работы с железом.</p>
11
<p>Главная фишка Rust - сочетание скорости и надёжности. С одной стороны, язык даёт программисту полный доступ к памяти, а с другой - страхует его от ошибок и "выстрелов в ногу". Поэтому на Rust пишут софт, для которого важна стабильная работа в тяжёлых условиях: многопоточные системы, ПО для сложных вычислений и так далее.</p>
11
<p>Главная фишка Rust - сочетание скорости и надёжности. С одной стороны, язык даёт программисту полный доступ к памяти, а с другой - страхует его от ошибок и "выстрелов в ногу". Поэтому на Rust пишут софт, для которого важна стабильная работа в тяжёлых условиях: многопоточные системы, ПО для сложных вычислений и так далее.</p>
12
<p>В начале нулевых было два подхода к созданию компьютерных языков: в одном делали упор на скорость, а в другом - на безопасность. Например, программы на C++ работали быстро, но могли дать сбой из-за случайной ошибки программиста. А Java, напротив, снижал риски для разработчика, но из-за этого программы теряли в темпе.</p>
12
<p>В начале нулевых было два подхода к созданию компьютерных языков: в одном делали упор на скорость, а в другом - на безопасность. Например, программы на C++ работали быстро, но могли дать сбой из-за случайной ошибки программиста. А Java, напротив, снижал риски для разработчика, но из-за этого программы теряли в темпе.</p>
13
<p>Замысел создателей Rust был в том, чтобы соединить мощь C++ со стабильностью Java и выжать максимум из обоих подходов:</p>
13
<p>Замысел создателей Rust был в том, чтобы соединить мощь C++ со стабильностью Java и выжать максимум из обоих подходов:</p>
14
<p>"Наша целевая аудитория - это разочарованные разработчики C++. То есть мы сами. Если вы тоже вынуждены работать с C++ из-за его производительности, но ищете что-то более безопасное и менее "болезненное“ - мы надеемся, что сможем это предоставить".</p>
14
<p>"Наша целевая аудитория - это разочарованные разработчики C++. То есть мы сами. Если вы тоже вынуждены работать с C++ из-за его производительности, но ищете что-то более безопасное и менее "болезненное“ - мы надеемся, что сможем это предоставить".</p>
15
<p><strong>Грэйдон Хор,</strong>автор языка программирования Rust</p>
15
<p><strong>Грэйдон Хор,</strong>автор языка программирования Rust</p>
16
-
<p>Изначально язык развивался как авторский проект программиста Mozilla Грэйдона Хора, а потом полностью перешёл под управление компании. Браузер Firefox тогда переживал обновление движка, а Rust помог реализовать некоторые важные штуки - например, загрузку сайтов в режиме многопоточности.</p>
16
+
<p>Изначально язык развивался как авторский проект программиста Mozilla Грэйдона Хора, а потом полностью перешёл под управление компании. Браузер Firefox тогда переживал обновление движка, а Rust помог реализовать некоторые важные штуки - например, за��рузку сайтов в режиме многопоточности.</p>
17
<p>Кстати, своё название язык получил в честь грибов порядка Ржавчинные (англ. Rust Fungi). Эти грибы обладают особой живучестью - по мнению автора, такими должны были стать и программы на Rust.</p>
17
<p>Кстати, своё название язык получил в честь грибов порядка Ржавчинные (англ. Rust Fungi). Эти грибы обладают особой живучестью - по мнению автора, такими должны были стать и программы на Rust.</p>
18
<p>Так как основой для Rust послужил C++, внешне они очень похожи. Посмотрите, как выглядит одна и та же функция, написанная на этих языках:</p>
18
<p>Так как основой для Rust послужил C++, внешне они очень похожи. Посмотрите, как выглядит одна и та же функция, написанная на этих языках:</p>
19
<em>Скриншот: PVS-Studio / Skillbox Media</em><p>Такой синтаксис называют си-подобным - потому что его корни восходят к языку С, который появился ещё в далёких семидесятых. Сейчас это фактически стандарт корпоративной разработки - если знаете такой синтаксис, сможете быстро пересесть на Java, Swift, C# и любой другой современный язык.</p>
19
<em>Скриншот: PVS-Studio / Skillbox Media</em><p>Такой синтаксис называют си-подобным - потому что его корни восходят к языку С, который появился ещё в далёких семидесятых. Сейчас это фактически стандарт корпоративной разработки - если знаете такой синтаксис, сможете быстро пересесть на Java, Swift, C# и любой другой современный язык.</p>
20
<p>Вот, например, как выглядит простая программа на Rust для вывода текста на экран:</p>
20
<p>Вот, например, как выглядит простая программа на Rust для вывода текста на экран:</p>
21
fn main() { //Объявление главной функции. println!("Привет, читатель!"); //Вывод строки на экран. }<p>Разберём, что здесь написано:</p>
21
fn main() { //Объявление главной функции. println!("Привет, читатель!"); //Вывод строки на экран. }<p>Разберём, что здесь написано:</p>
22
<ul><li>fn main() - обязательная функция в любой программе на Rust, её ещё называют точкой входа. Внутри main() прописывают всё, что нужно программе для запуска.</li>
22
<ul><li>fn main() - обязательная функция в любой программе на Rust, её ещё называют точкой входа. Внутри main() прописывают всё, что нужно программе для запуска.</li>
23
<li>println!(" ") - команда, которая выводит текст на экран. В нашем случае это "Привет, мир!".</li>
23
<li>println!(" ") - команда, которая выводит текст на экран. В нашем случае это "Привет, мир!".</li>
24
<li>{} - фигурные скобки, которые обозначают границы тела функции.</li>
24
<li>{} - фигурные скобки, которые обозначают границы тела функции.</li>
25
</ul><p>Ещё одна фишка Rust - компактность кода. Создатели языка программирования с самого начала делали ставку на скорость разработки, поэтому все важные команды можно записать максимально коротко. Например, чтобы объявить функцию в JavaScript, надо каждый раз прописывать слово function - а в Rust достаточно короткого fn. Мелочь, а приятно :)</p>
25
</ul><p>Ещё одна фишка Rust - компактность кода. Создатели языка программирования с самого начала делали ставку на скорость разработки, поэтому все важные команды можно записать максимально коротко. Например, чтобы объявить функцию в JavaScript, надо каждый раз прописывать слово function - а в Rust достаточно короткого fn. Мелочь, а приятно :)</p>
26
<p>Короткий ответ - в безопасном и экономичном управлении памятью. Когда вы пишете код на С++, вам нужно работать с ней вручную: расставлять указатели, чистить программу от мусора, следить за утечками. Если программа упадёт из-за какой-то ошибки или уязвимости, вы несёте за это полную ответственность.</p>
26
<p>Короткий ответ - в безопасном и экономичном управлении памятью. Когда вы пишете код на С++, вам нужно работать с ней вручную: расставлять указатели, чистить программу от мусора, следить за утечками. Если программа упадёт из-за какой-то ошибки или уязвимости, вы несёте за это полную ответственность.</p>
27
<p>У Rust совершенно другой подход - вся работа с памятью происходит под капотом языка по строго определённым правилам:</p>
27
<p>У Rust совершенно другой подход - вся работа с памятью происходит под капотом языка по строго определённым правилам:</p>
28
<ul><li>У любого значения (например, числа) есть переменная-владелец.</li>
28
<ul><li>У любого значения (например, числа) есть переменная-владелец.</li>
29
<li>В каждый момент времени у значения может быть только один владелец.</li>
29
<li>В каждый момент времени у значения может быть только один владелец.</li>
30
<li>Если переместить владельца в другую часть кода, значение обнуляется.</li>
30
<li>Если переместить владельца в другую часть кода, значение обнуляется.</li>
31
</ul><p>Если нарушить одно из этих правил, компилятор выдаст ошибку и откажется собирать программу. Если в коде появится проблема, вы узнаете об этом сразу и сможете на лету её исправить. Наконец, если программа на Rust прошла сборку и запустилась, она будет работать стабильно даже в стрессовых условиях.</p>
31
</ul><p>Если нарушить одно из этих правил, компилятор выдаст ошибку и откажется собирать программу. Если в коде появится проблема, вы узнаете об этом сразу и сможете на лету её исправить. Наконец, если программа на Rust прошла сборку и запустилась, она будет работать стабильно даже в стрессовых условиях.</p>
32
<p>С другой стороны, можно отключить безопасный режим с помощью блока unsafe и управлять памятью полностью вручную. Это нужно, например, чтобы писать низкоуровневый код для аппаратных средств: умных часов, видеокамер, микроконтроллеров и других устройств.</p>
32
<p>С другой стороны, можно отключить безопасный режим с помощью блока unsafe и управлять памятью полностью вручную. Это нужно, например, чтобы писать низкоуровневый код для аппаратных средств: умных часов, видеокамер, микроконтроллеров и других устройств.</p>
33
<p>Так как Rust умеет выжимать максимум из железа, на нём часто пишут высоконагруженные части приложений и сервисов. Например, вот что разрабатывают с его помощью крупные международные и российские IT-компании:</p>
33
<p>Так как Rust умеет выжимать максимум из железа, на нём часто пишут высоконагруженные части приложений и сервисов. Например, вот что разрабатывают с его помощью крупные международные и российские IT-компании:</p>
34
<ul><li>Mozilla - движок Quantum, на котором работает браузер Mozilla Firefox;</li>
34
<ul><li>Mozilla - движок Quantum, на котором работает браузер Mozilla Firefox;</li>
35
<li>Coursera - компоненты платформы онлайн-обучения;</li>
35
<li>Coursera - компоненты платформы онлайн-обучения;</li>
36
<li>Microsoft - низкоуровневые элементы ОС Windows;</li>
36
<li>Microsoft - низкоуровневые элементы ОС Windows;</li>
37
<li>Rambler - серверную логику веб-приложений;</li>
37
<li>Rambler - серверную логику веб-приложений;</li>
38
<li>"ВКонтакте" - инструменты сборки и управления исходным кодом.</li>
38
<li>"ВКонтакте" - инструменты сборки и управления исходным кодом.</li>
39
</ul><p>Теперь пройдёмся по сферам, где этот язык программирования широко применяется.</p>
39
</ul><p>Теперь пройдёмся по сферам, где этот язык программирования широко применяется.</p>
40
<p><strong>Криптовалюты и блокчейн.</strong>Чтобы блокчейны могли совершать защищённые транзакции между миллионами разных устройств, нужен быстрый и стабильно работающий код - а программирование на Rust как раз это позволяет. Например, на нём работает один из самых популярных клиентов для платформы Ethereum -<a>Parity</a>.</p>
40
<p><strong>Криптовалюты и блокчейн.</strong>Чтобы блокчейны могли совершать защищённые транзакции между миллионами разных устройств, нужен быстрый и стабильно работающий код - а программирование на Rust как раз это позволяет. Например, на нём работает один из самых популярных клиентов для платформы Ethereum -<a>Parity</a>.</p>
41
<p><strong>Операционные системы.</strong>В теории на Rust можно с нуля написать полноценную операционку с драйверами, файловым менеджером, браузером и другой начинкой. На практике конкурировать с Apple и Microsoft мало кто хочет, поэтому успешных проектов пока не так много. Можно вспомнить разве что ОС для умных устройств<a>Tock</a>и защищённую операционную систему<a>Redox</a>.</p>
41
<p><strong>Операционные системы.</strong>В теории на Rust можно с нуля написать полноценную операционку с драйверами, файловым менеджером, браузером и другой начинкой. На практике конкурировать с Apple и Microsoft мало кто хочет, поэтому успешных проектов пока не так много. Можно вспомнить разве что ОС для умных устройств<a>Tock</a>и защищённую операционную систему<a>Redox</a>.</p>
42
Операционная система Redox, полностью написанная на Rust<em>Скриншот: Skillbox Media</em><p><strong>Сайты и веб-приложения.</strong>Благодаря тому, что Rust устойчив к нагрузкам, его можно использовать для разработки серверной логики сайтов. Например, облачный сервис Dropbox переписал на нём свою систему хранения файлов - а это десятки тысяч серверных машин, куда постоянно загружают гигабайты новых данных.</p>
42
Операционная система Redox, полностью написанная на Rust<em>Скриншот: Skillbox Media</em><p><strong>Сайты и веб-приложения.</strong>Благодаря тому, что Rust устойчив к нагрузкам, его можно использовать для разработки серверной логики сайтов. Например, облачный сервис Dropbox переписал на нём свою систему хранения файлов - а это десятки тысяч серверных машин, куда постоянно загружают гигабайты новых данных.</p>
43
<p><strong>Браузерные движки.</strong>Не зря же Rust придумали в Mozilla - язык изначально заточен именно под браузерную разработку. В нём есть фишки для быстрой отрисовки веб-страниц в режиме многопоточности - можно разбить загрузку сайта на несколько задач и распределить их между ядрами процессора.</p>
43
<p><strong>Браузерные движки.</strong>Не зря же Rust придумали в Mozilla - язык изначально заточен именно под браузерную разработку. В нём есть фишки для быстрой отрисовки веб-страниц в режиме многопоточности - можно разбить загрузку сайта на несколько задач и распределить их между ядрами процессора.</p>
44
Браузер Mozilla Firefox, движок для которого частично написан на Rust<em>Скриншот: Skillbox Media</em><p><strong>Машинное обучение.</strong>Rust поддерживает<a>множество библиотек для работы с большими данными</a>: тренировку алгоритмов, визуализацию данных, линейную алгебру, работу с векторами, обработку изображений - всё что угодно. Если в будущем вы видите себя в Data Science - присмотритесь к Rust.</p>
44
Браузер Mozilla Firefox, движок для которого частично написан на Rust<em>Скриншот: Skillbox Media</em><p><strong>Машинное обучение.</strong>Rust поддерживает<a>множество библиотек для работы с большими данными</a>: тренировку алгоритмов, визуализацию данных, линейную алгебру, работу с векторами, обработку изображений - всё что угодно. Если в будущем вы видите себя в Data Science - присмотритесь к Rust.</p>
45
<p>Вот за что язык ценят компании и разработчики:</p>
45
<p>Вот за что язык ценят компании и разработчики:</p>
46
<ul><li><strong>Скорость и безопасность.</strong>Как мы писали выше, программы на Rust работают быстро и ломаются только в безвыходных ситуациях.</li>
46
<ul><li><strong>Скорость и безопасность.</strong>Как мы писали выше, программы на Rust работают быстро и ломаются только в безвыходных ситуациях.</li>
47
<li><strong>Статическая типизация.</strong>В Rust проверка типов переменных происходит ещё на этапе компиляции - это плюс к надёжности языка.</li>
47
<li><strong>Статическая типизация.</strong>В Rust проверка типов переменных происходит ещё на этапе компиляции - это плюс к надёжности языка.</li>
48
<li><strong>Совместимость с C++</strong>. В программах на Rust можно без проблем вызывать блоки кода из С и C++ - и наоборот.</li>
48
<li><strong>Совместимость с C++</strong>. В программах на Rust можно без проблем вызывать блоки кода из С и C++ - и наоборот.</li>
49
<li><strong>Заботливый компилятор.</strong>Если в программе случится ошибка, компилятор расскажет, что пошло не так, и даст советы, как всё починить.</li>
49
<li><strong>Заботливый компилятор.</strong>Если в программе случится ошибка, компилятор расскажет, что пошло не так, и даст советы, как всё починить.</li>
50
<li><strong>Кросс-платформенность.</strong>Rust запускается почти на любом устройстве: от компьютеров и смартфонов до банкоматов и умных часов.</li>
50
<li><strong>Кросс-платформенность.</strong>Rust запускается почти на любом устройстве: от компьютеров и смартфонов до банкоматов и умных часов.</li>
51
<li><strong>Многопоточность.</strong>Программы на Rust умеют выполнять несколько операций одновременно, эффективно используя мощности процессора.</li>
51
<li><strong>Многопоточность.</strong>Программы на Rust умеют выполнять несколько операций одновременно, эффективно используя мощности процессора.</li>
52
<li><strong>Высокие зарплаты программистов</strong>. По данным "Хабр Карьеры", средняя зарплата разработчика -<a>242 тысячи рублей</a>. Деньги действительно большие, но есть нюанс - о нём ниже.</li>
52
<li><strong>Высокие зарплаты программистов</strong>. По данным "Хабр Карьеры", средняя зарплата разработчика -<a>242 тысячи рублей</a>. Деньги действительно большие, но есть нюанс - о нём ниже.</li>
53
</ul><p>Есть у Rust и недостатки - их немного, но давайте их тоже разберём:</p>
53
</ul><p>Есть у Rust и недостатки - их немного, но давайте их тоже разберём:</p>
54
<ul><li><strong>Ограниченная поддержка ООП.</strong>Например, нельзя без костылей реализовать полноценное наследование кода и классы.</li>
54
<ul><li><strong>Ограниченная поддержка ООП.</strong>Например, нельзя без костылей реализовать полноценное наследование кода и классы.</li>
55
<li><strong>Частые обновления.</strong>Синтаксис Rust меняется с каждой новой версией, поэтому разработчикам приходится постоянно переучиваться. С другой стороны, язык в итоге становится безопаснее и удобнее в использовании.</li>
55
<li><strong>Частые обновления.</strong>Синтаксис Rust меняется с каждой новой версией, поэтому разработчикам приходится постоянно переучиваться. С другой стороны, язык в итоге становится безопаснее и удобнее в использовании.</li>
56
<li><strong>Низкая популярность</strong>. На HeadHunter мы нашли всего<a>140 вакансий</a>для Rust-разработчиков по всей России - при этом компании в основном ищут опытных специалистов, а предложений для джунов совсем немного.</li>
56
<li><strong>Низкая популярность</strong>. На HeadHunter мы нашли всего<a>140 вакансий</a>для Rust-разработчиков по всей России - при этом компании в основном ищут опытных специалистов, а предложений для джунов совсем немного.</li>
57
</ul><p>Несмотря на любовь программистов к Rust, у этого языка довольно высокий порог входа. Чтобы начать работать, нужно долго учиться: осваивать сам язык, параллелизм, работу с памятью и другие сложные концепции. Поэтому ответ на вопрос будет зависеть от вашего опыта и скиллов.</p>
57
</ul><p>Несмотря на любовь программистов к Rust, у этого языка довольно высокий порог входа. Чтобы начать работать, нужно долго учиться: осваивать сам язык, параллелизм, работу с памятью и другие сложные концепции. Поэтому ответ на вопрос будет зависеть от вашего опыта и скиллов.</p>
58
<p><strong>Если вы только начинаете изучать программирование</strong>, лучше подыскать что-то более востребованное и лёгкое в освоении. Скажем, тот же<a>JavaScript</a> - сейчас это один из самых популярных языков в России. На нём пишут всю видимую часть интернета: интерфейсы, кнопки, слайдеры и прочую красоту. Если хотите писать код и сразу видеть результат - лучше варианта не найти.</p>
58
<p><strong>Если вы только начинаете изучать программирование</strong>, лучше подыскать что-то более востребованное и лёгкое в освоении. Скажем, тот же<a>JavaScript</a> - сейчас это один из самых популярных языков в России. На нём пишут всю видимую часть интернета: интерфейсы, кнопки, слайдеры и прочую красоту. Если хотите писать код и сразу видеть результат - лучше варианта не найти.</p>
59
<p><strong>Но если вы уже умеете программировать</strong>на C++ или Java и кто-то предлагает вам сменить профиль - есть смысл задуматься о переходе. Rust - быстрый, безопасный и компактный язык, он отлично подходит для разработки сложных проектов и систем. С ним вы будете застрахованы от случайных ошибок и утечек памяти.</p>
59
<p><strong>Но если вы уже умеете программировать</strong>на C++ или Java и кто-то предлагает вам сменить профиль - есть смысл задуматься о переходе. Rust - быстрый, безопасный и компактный язык, он отлично подходит для разработки сложных проектов и систем. С ним вы будете застрахованы от случайных ошибок и утечек памяти.</p>
60
<a>Курс с трудоустройством: "Профессия Разработчик С++
с нуля + ИИ" Узнать о курсе</a>
60
<a>Курс с трудоустройством: "Профессия Разработчик С++
с нуля + ИИ" Узнать о курсе</a>