**Что такое Rust** Rust — это язык программирования общего назначения, заточенный под разработку высоконагруженных систем. На нём пишут веб-приложения, браузерные движки, блокчейны и другие сложные платформы, которые обрабатывают запросы миллионов пользователей. Разберём его главные фишки. **Компиляция.** Перед запуском код на Rust сразу переводится на машинный язык — то есть превращается в набор нулей и единиц. Этим Rust отличается, например, от [JavaScript](https://skillbox.ru/media/code/chto-takoe-javascript-i-zachem-on-nuzhen/?utm_source=media&utm_medium=link&utm_campaign=all_all_media_links_links_articles_all_all_skillbox), где код сначала прогоняется через интерпретатор, а уже потом идёт на процессор. Фишка компиляции в том, что так программы запускаются быстрее и потребляют меньше памяти. **Мультипарадигмальность.** Парадигма программирования определяет стиль, в котором разработчики пишут код. Rust поддерживает сразу несколько парадигм: функциональное, декларативное и объектно-ориентированное программирование. Чаще всего компании используют последний подход, но Rust может работать в любом режиме. **Высокий уровень абстракции.** Команды на Rust представляют собой простые английские слова: input, let, match и так далее. Поэтому код на нём легко читать и проверять. В то же время язык поддерживает использование некоторых низкоуровневых средств для более тонкой работы с железом. Главная фишка Rust — сочетание скорости и надёжности. С одной стороны, язык даёт программисту полный доступ к памяти, а с другой — страхует его от ошибок и «выстрелов в ногу». Поэтому на Rust пишут софт, для которого важна стабильная работа в тяжёлых условиях: многопоточные системы, ПО для сложных вычислений и так далее. **История создания** В начале нулевых было два подхода к созданию компьютерных языков: в одном делали упор на скорость, а в другом — на безопасность. Например, программы на C++ работали быстро, но могли дать сбой из-за случайной ошибки программиста. А Java, напротив, снижал риски для разработчика, но из-за этого программы теряли в темпе. Замысел создателей Rust был в том, чтобы соединить мощь C++ со стабильностью Java и выжать максимум из обоих подходов: «Наша целевая аудитория — это разочарованные разработчики C++. То есть мы сами. Если вы тоже вынуждены работать с C++ из-за его производительности, но ищете что-то более безопасное и менее „болезненное“ — мы надеемся, что сможем это предоставить». **ГРЭЙДОН ХОР,** автор языка программирования Rust Изначально язык развивался как авторский проект программиста Mozilla Грэйдона Хора, а потом полностью перешёл под управление компании. Браузер Firefox тогда переживал обновление движка, а Rust помог реализовать некоторые важные штуки — например, загрузку сайтов в режиме многопоточности. Кстати, своё название язык получил в честь грибов порядка Ржавчинные (англ. Rust Fungi). Эти грибы обладают особой живучестью — по мнению автора, такими должны были стать и программы на Rust. **Примеры кода и синтаксис** Так как основой для Rust послужил C++, внешне они очень похожи. Посмотрите, как выглядит одна и та же функция, написанная на этих языках: ![]() Такой синтаксис называют си-подобным — потому что его корни восходят к языку С, который появился ещё в далёких семидесятых. Сейчас это фактически стандарт корпоративной разработки — если знаете такой синтаксис, сможете быстро пересесть на Java, Swift, C# и любой другой современный язык. **В чём преимущество Rust** Короткий ответ — в безопасном и экономичном управлении памятью. Когда вы пишете код на С++, вам нужно работать с ней вручную: расставлять указатели, чистить программу от мусора, следить за утечками. Если программа упадёт из-за какой-то ошибки или уязвимости, вы несёте за это полную ответственность. У Rust совершенно другой подход — вся работа с памятью происходит под капотом языка по строго определённым правилам: - У любого значения (например, числа) есть переменная-владелец. - В каждый момент времени у значения может быть только один владелец. - Если переместить владельца в другую часть кода, значение обнуляется. Если нарушить одно из этих правил, компилятор выдаст ошибку и откажется собирать программу. Если в коде появится проблема, вы узнаете об этом сразу и сможете на лету её исправить. Наконец, если программа на Rust прошла сборку и запустилась, она будет работать стабильно даже в стрессовых условиях. С другой стороны, можно отключить безопасный режим с помощью блока unsafe и управлять памятью полностью вручную. Это нужно, например, чтобы писать низкоуровневый код для аппаратных средств: умных часов, видеокамер, микроконтроллеров и других устройств. **Для чего используют Rust** Так как Rust умеет выжимать максимум из железа, на нём часто пишут высоконагруженные части приложений и сервисов. Например, вот что разрабатывают с его помощью крупные международные и российские IT-компании: - Mozilla — движок Quantum, на котором работает браузер Mozilla Firefox; - Coursera — компоненты платформы онлайн-обучения; - Microsoft — низкоуровневые элементы ОС Windows; - Rambler — серверную логику веб-приложений; - «ВКонтакте» — инструменты сборки и управления исходным кодом. Теперь пройдёмся по сферам, где этот язык программирования широко применяется. **Криптовалюты и блокчейн.** Чтобы блокчейны могли совершать защищённые транзакции между миллионами разных устройств, нужен быстрый и стабильно работающий код — а программирование на Rust как раз это позволяет. Например, на нём работает один из самых популярных клиентов для платформы Ethereum — [Parity](https://www.parity.io/technologies/ethereum/). **Операционные системы.** В теории на Rust можно с нуля написать полноценную операционку с драйверами, файловым менеджером, браузером и другой начинкой. На практике конкурировать с Apple и Microsoft мало кто хочет, поэтому успешных проектов пока не так много. Можно вспомнить разве что ОС для умных устройств [Tock](https://www.tockos.org/) и защищённую операционную систему [Redox](https://www.redox-os.org/). **Сайты и веб-приложения.** Благодаря тому, что Rust устойчив к нагрузкам, его можно использовать для разработки серверной логики сайтов. Например, облачный сервис Dropbox переписал на нём свою систему хранения файлов — а это десятки тысяч серверных машин, куда постоянно загружают гигабайты новых данных. **Браузерные движки.** Не зря же Rust придумали в Mozilla — язык изначально заточен именно под браузерную разработку. В нём есть фишки для быстрой отрисовки веб-страниц в режиме многопоточности — можно разбить загрузку сайта на несколько задач и распределить их между ядрами процессора. **Машинное обучение.** Rust поддерживает [множество библиотек для работы с большими данными](https://dzen.ru/media/machinelearning/-rust-dlia-mashinnogo-obucheniia-62763b9c1c6f74426db054ee): тренировку алгоритмов, визуализацию данных, линейную алгебру, работу с векторами, обработку изображений — всё что угодно. Если в будущем вы видите себя в Data Science — присмотритесь к Rust. **Плюсы и минусы Rust** Вот за что язык ценят компании и разработчики: - **Скорость и безопасность.** Как мы писали выше, программы на Rust работают быстро и ломаются только в безвыходных ситуациях. - **Статическая типизация.** В Rust проверка типов переменных происходит ещё на этапе компиляции — это плюс к надёжности языка. - **Совместимость с C++**. В программах на Rust можно без проблем вызывать блоки кода из С и C++ — и наоборот. - **Заботливый компилятор.** Если в программе случится ошибка, компилятор расскажет, что пошло не так, и даст советы, как всё починить. - **Кросс-платформенность.** Rust запускается почти на любом устройстве: от компьютеров и смартфонов до банкоматов и умных часов. - **Многопоточность.** Программы на Rust умеют выполнять несколько операций одновременно, эффективно используя мощности процессора. - **Высокие зарплаты программистов**. По данным «Хабр Карьеры», средняя зарплата разработчика — [242 тысячи рублей](https://career.habr.com/salaries?utf8=%E2%9C%93&p=222&q=&skills%5B%5D=848&skills%5B%5D=&skills%5B%5D=&employment_type=&remote=&company_id=). Деньги действительно большие, но есть нюанс — о нём ниже. Есть у Rust и недостатки — их немного, но давайте их тоже разберём: - **Ограниченная поддержка ООП.** Например, нельзя без костылей реализовать полноценное наследование кода и классы. - **Частые обновления.** Синтаксис Rust меняется с каждой новой версией, поэтому разработчикам приходится постоянно переучиваться. С другой стороны, язык в итоге становится безопаснее и удобнее в использовании. - **Низкая популярность**. На HeadHunter мы нашли всего [140 вакансий](https://hh.ru/search/vacancy?search_field=name&search_field=company_name&search_field=description&text=rust&from=suggest_post) для Rust-разработчиков по всей России — при этом компании в основном ищут опытных специалистов, а предложений для джунов совсем немного. **Подходит ли Rust новичку?** Несмотря на любовь программистов к Rust, у этого языка довольно высокий порог входа. Чтобы начать работать, нужно долго учиться: осваивать сам язык, параллелизм, работу с памятью и другие сложные концепции. Поэтому ответ на вопрос будет зависеть от вашего опыта и скиллов. **Если вы только начинаете изучать программирование**, лучше подыскать что-то более востребованное и лёгкое в освоении. Скажем, тот же [JavaScript](https://skillbox.ru/media/code/chto-takoe-javascript-i-zachem-on-nuzhen/?utm_source=media&utm_medium=link&utm_campaign=all_all_media_links_links_articles_all_all_skillbox) — сейчас это один из самых популярных языков в России. На нём пишут всю видимую часть интернета: интерфейсы, кнопки, слайдеры и прочую красоту. Если хотите писать код и сразу видеть результат — лучше варианта не найти. **Но если вы уже умеете программировать** на C++ или Java и кто-то предлагает вам сменить профиль — есть смысл задуматься о переходе. Rust — быстрый, безопасный и компактный язык, он отлично подходит для разработки сложных проектов и систем. С ним вы будете застрахованы от случайных ошибок и утечек памяти. - # Литература https://skillbox.ru/media/code/rust-zachem-on-nuzhen-gde-primenyaetsya-i-za-chto-ego-vse-lyubyat/