О языке Rust и книге Дж. Блэнди и Дж. Орендорфа «Программирование на языке Rust»

К языку Rust я присматривался давно. Пару лет назад даже пытался писать на нем небольшую программку, но до серьезного использования дело не дошло. И вот в начале этого года я решил взяться за этот язык основательно.

Rust — это компилируемый язык, предназначенный в том числе и для системного программирования. Основная «фишка» языка — это исключение на уровне компиляции ошибок работы с памятью — не инициализированные указатели, висячие ссылки и т.п. — и избегание неопределенного поведения. При этом не используется сборщик мусора, а сам язык ориентирован на максимально возможную производительность. При этом стиль программирования на Rust сильно отличается от традиционного объектно-ориентированного программирования. Если говорить очень грубо, то это скорее напоминает C с интерфейсами и очень необычной работой с памятью. Разработчики Rust позиционируют язык как замена C++. Особенности языка заставляют заранее продумывать структуру взаимодействия используемых объектов, а не плодить сложную сеть из взаимосвязанных объектов в надежде, что сборщик мусора потом все уберет. У Rust очень строгий компилятор, который откажется компилировать программу, если у него не будет уверенности в том, что она корректно работает с памятью, и что не будет гонок данных в многопоточной программе.

Я был приятно удивлен, узнав, что на русском языке вышла книга о Rust. Я имею в виду книгу Джима Блэнди и Джейсона Орендорфа «Программирование на языке Rust», о которой и пойдет речь в этом посте. К тому моменту, когда я начал читать эту книгу, я уже прочитал больше половины онлайн-книги от разработчиков языка (есть русскоязычный перевод) и начал делать небольшой проект на Rust, о котором я расскажу в другой раз.

Rust — язык не простой, с ним не получится начать работать, прочитав пару уроков в стиле Hello World. Кривая обучения у него достаточно крутая, и поэтому сначала нужно накопить знания об основах языка, о его идеологии и о том, как с этой идеологией жить (сначала это тяжело, ощущение, что заново учишься программировать). Книга Блэнди и Орендорфа отлично для этого подходит, особенно, если у вас уже есть опыт программирования на других языках. Если такого опыта у вас мало, то может быть стоит все-таки начать с онлайн-книги, которая описывает язык более поверхностно, не углубляясь в особенности работы языка Rust «под капотом».

Если же у вас есть опыт программирования именно на C++, то книга «Программирование на языке Rust» должна отлично подойти, потому что авторы постоянно сравнивают Rust и C++ (в книге есть сравнения с другими языками, но намного меньше). В книге даются основы языка и принципы работы со стандартной библиотекой, но в то же время много внимания уделяется деталям работы компилятора и того, как язык работает с памятью. На самом деле это очень полезно даже для новичков, потому что буквально в первых главах книги я нашел для себя ответы на вопросы, которые меня мучили после чтения онлайн-книги, и ответы на которые было не так просто найти в интернете.

Я не буду подробно описывать все главы, а скажу лишь, что эта книга охватывает все базовые возможности языка Rust, начиная с самых основ и до таких продвинутых возможностей как использование параллелизма, написание макросов и работа с небезопасным кодом, в том числе приводится пример работы с библиотекой, написанной на C. Иногда в примерах используются нестандартные библиотеки, которые упрощают выполнение некоторых действий, но в основном используется стандартная библиотека.

Поскольку Rust сильно отличается от всех других языков по своей идеологии, то знание других языков иногда может даже мешать, потому что невольно напрашиваются аналогии, которые оказываются в корне неверные. Особенно это касается передачи объектов между функциями. Хорошо, что авторы периодически пишут, как ту или иную вещь рекомендуется делать на языке Rust. После знакомства с языком у меня сложилось впечатление, что для языка Rust кто-нибудь должен заново написать книгу о шаблонах проектирования.

Примеры в книге все достаточно компактные. Пожалуй, единственный пример программы на пару страниц находится в последней главе, посвященной небезопасным операциям.

Книга Блэнди и Орендорфа достаточно объемная (550 страниц в твердой обложке и с цветной печатью), но читается она легко из-за свободного стиля авторов. Перевод, на мой взгляд, тоже хороший, но есть вопросы относительно переводов терминов языка. Например, «traits» там переведены как «характеристики», «crates» — «крейты», «raw strings» — «простые строки», а «raw pointers» — «простые указатели» и т.п.

Итого. Книга отличная. Если вы собираетесь начать программировать на Rust, то читать ее стоит. Если вы читали онлайн-книгу про Rust, то эту книгу все равно читать прочитать — узнаете много нового. Что касается версии языка, то в книге описывается Rust 1.17.

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 3, средняя оценка: 5,00)
Загрузка...

комментария 2

  1. CodeNull:

    А как вы оцениваете коммерческие перспективы Rust? Он действительно имеет потенциал для замены С++?

  2. Jenyay:

    Мне кажется, что язык перспективный по своей сути. Единственное, что может ему помешать — более высокий порог вхождения. И пиар у него сейчас идет неплохо. Я надеюсь, что язык сможет потеснить C++.

Leave a comment

Subscribe without commenting