瀏覽代碼

Загрузить файлы 'Лекции/Rust'

u21atrosh 1 年之前
父節點
當前提交
9ec9656a81
共有 1 個文件被更改,包括 98 次插入0 次删除
  1. 98 0
      Лекции/Rust/Rust.md

+ 98 - 0
Лекции/Rust/Rust.md

@@ -0,0 +1,98 @@
+**Что такое 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++, внешне они очень похожи. Посмотрите, как выглядит одна и та же функция, написанная на этих языках:
+
+![<https://skillbox.ru/upload/setka_images/09065902112022_5c20dcbcfbab07ab6c2df7e27444d5ac2afca569.png>](<https://skillbox.ru/upload/setka_images/09065902112022_5c20dcbcfbab07ab6c2df7e27444d5ac2afca569.png>)
+
+Такой синтаксис называют си-подобным — потому что его корни восходят к языку С, который появился ещё в далёких семидесятых. Сейчас это фактически стандарт корпоративной разработки — если знаете такой синтаксис, сможете быстро пересесть на 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/