Язык программирования Rust: видеозаписи лекций курса от CS центра
Rust — это молодой компилируемый язык, предназначенный прежде всего для системного программирования. Скорость работы программ на Rust сравнима со скоростью работы на C++. Ключевое отличие — упор на безопасность, в том числе, при работе с памятью. Код, вызывающий неопределённое поведение (undefined behavior) в C++, в Rust приводит к ошибке во время компиляции. Rust спонсируется Mozilla Research, самое заметное применение — отдельные компоненты Firefox и Servo. Зачем учить Rust и как сделать семестровый курс максимально полезным, мы обсудили с Алексеем Кладовым, участником DevTools-команды, автором плагина IntelliJ Rust и разработчиком rust-analyzer в Ferrous Systems. Весной Алексей прочитал в CS центре курс по программированию на Rust, который теперь можно посмотреть на YouTube.
Зачем учить?
У Rust инновационный подход к поиску ошибок работы с памятью в момент компиляции. Поняв, как устроен Rust, можно лучше понять, как устроены другие языки, в частности, современный C++.
Пока язык находится в таком состоянии, что выучить его и пойти сразу работать программистом на Rust вряд ли получится: вакансий не очень много. Хочется верить, что со временем он станет более популярным.
Где используется?
Rust спонсируется Mozilla Research, самое заметное применение — отдельные компоненты Firefox и Servo. Это браузеры, значит, язык, на котором они пишутся должен быть быстрым и безопасным. Традиционно браузеры пишут на C++, и их часто взламывают.
Другие области применения, где нужно быть быстрым и безопасным: блокчейн-технологии, внутренние проекты больших компаний — утилиты системного уровня. Например, у Facebook на Rust написана система контроля версий, у Google — экспериментальная операционная система Fuchsia, Microsoft интересуется Rust из-за его безопасности.
Программа и содержание
У Rust отличная документация: можно скачать с официального сайта книгу, прочитать и узнать язык, поэтому на занятиях хотелось поговорить о чём-то уникальном, о чём не прочитаешь в интернете. Курс построен на сравнении Rust c другими языками программирования: почему одинаково выглядящий код на Java, C++ и Rust ведёт себя по-разному в процессе выполнения.
Большая часть курса — практика, регулярные домашние задания. Исходя из идеи, что программистские навыки и образ мысли переносятся с маленьких учебных проектов на большие, хотелось с помощью заданий с ревью кода научить студентов писать небольшие части программ. Посмотреть, как они пишут код, подержать их за руку и вложить в эти руки знания, инструменты и опыт.
По списку тем это стандартный курс про Rust. Разница в фокусе. В этом курсе сначала рассматривают, как что-то работает в Rust, а потом — как в других языках программирования. Rust большой, курс семестровый, поэтому он рассчитан на слушателей, которые достаточно хорошо знают какой-то другой язык. Программа насыщенная, так что смотреть видео имеет смысл даже без выполнения заданий.
Практическая задача курса заключалась в том, чтобы написать на Rust рейтрейсер — программу, которая рисует трёхмерную сцену на экране. Это один поделённый на части проект. Выполняя задания, студенты могли проявить креативность и подумать — одного верного решения не было.