HTML Diff
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>