Введение в ржавчину

Если вы похожи на меня, возможно, к вам подкрался Раст. При таком большом количестве устоявшихся языков программирования может быть трудно мотивировать себя изучить еще один, особенно такой же зарождающийся, как Rust. Однако по мере того, как все больше и больше компаний принимают этот новый язык, похоже, что он никуда не денется. Эта статья поможет вам ответить на несколько жизненно важных вопросов:

  • Что такое Rust?
  • Что делает его мощным?
  • Какой синтаксис он использует?
  • Как он управляет зависимостями?
  • Зачем мне это изучать?

Что такое ржавчина?

Первоначально созданный Грейдоном Хоаром для Mozilla, Rust представляет собой статический, строго типизированный и скомпилированный язык, специализирующийся на быстром выполнении и управлении памятью. В дополнение к тому, что Rust был отмечен как самый любимый язык в Опросе разработчиков Stack Overflow за 2016, 2017 и 2018 годы, все больше крупных компаний выбирают Rust.

В настоящее время Rust в той или иной мере используется Amazon, Google, Facebook, Microsoft, Dropbox и Reddit, а также некоторыми основными сервисами npm. он также является 5-м наиболее быстрорастущим языком на Github, опережая Python и Go.

Можно с уверенностью сказать, что его популярность и сила растет, и возникает вопрос: почему?

Что делает его мощным?

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

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

Какой вид синтаксиса он использует?

Хватит разговоров. Давайте перейдем к некоторым примерам кода.

Здесь мы видим классическую программу Hello World. На данный момент Rust выглядит почти идентично большинству других языков. Мы можем проанализировать, что fn сообщает нам, что мы определяем функцию. println! кажется эквивалентом puts Ruby или System.out.println Java.

Как и в Java, main - это специальное имя метода, зарезервированное для точки входа в программу. В то время как Javascript требует, чтобы вы сделали что-то вроде вызова main() под объявлением, в Rust программа будет запускаться main при использовании.

Следующим камнем преткновения, с которым столкнутся многие, является тот факт, что в Rust все переменные по умолчанию объявлены как константы. Если вы хотите иметь возможность переназначать значения переменной, вам нужно будет объявить их особым образом (см. рис. 4).

Здесь следует отметить еще одну вещь: ключевое слово let. Для пользователей Javascript это будет знакомое зрелище; для программистов на Java это может показаться кощунством. По правде говоря, Rust использует let как универсальное объявление, а затем использует вывод типа для присвоения типа переменной. Конечно, вы также можете явно объявить типы переменных.

Еще одна вещь, на которую стоит обратить внимание, - это оператор печати. Из-за того, насколько он строг, Rust требует, чтобы строка передавалась в оператор печати. Однако он позволит вам передать все, что вы хотите после этого, и заменит любые {} в строке этими элементами по порядку.

В этом примере начальные строки идентичны, за исключением одного небольшого различия. Вместо let a = 1; мы объявили let mut a = 1. Это означает, что мы объявляем a как изменяемую переменную, что означает, что Rust позволит нам изменить и переназначить ее по своему усмотрению.

Ниже мы видим пример вывода типа с использованием String::new() constructor. В этом случае _string объявляется как String через определение типа. Однако дальше мы видим let a: u32;. Это пример присвоения переменной определенному типу при объявлении. Учитывая множество различных типов чисел, доступных в Rust (u32, кстати, «32 бита без знака»), определение точности числа, которое вы хотите использовать, может быть решающим навыком для написания эффективного кода.

Мы также видим, что, несмотря на то, что изначально объект был объявлен неизменным, он назначается на следующей строке. Это связано с тем, что объявление не является присваиванием. Неизменяемые переменные могут быть назначены только один раз, но откуда они получают это назначение, не имеет значения.

Следующая странность Rust, с которой вам следует ознакомиться, - это ключевое слово match. Этот оператор работает как взрослый брат оператора switch-case. По сути, вы передаете ему переменную, и она возвращает значение в зависимости от того, что соответствует результату. Более того, он делает это очень чисто - заявления о совпадениях в высшей степени разборчивы.

Итак, давайте рассмотрим, что от вас требует Rust:

  • Константы объявляются либо путем вывода типа с помощью let, либо путем прямого присвоения с помощью :. Изменяемые переменные объявляются таким же образом, но с let mut.
  • Константы можно объявить, а затем присвоить.
  • Строки должны заканчиваться на ;.
  • main - это функция по умолчанию, которая запускается при выполнении кода.
  • Операторы match могут использоваться для сопоставления значения переменной или оператора с рядом потенциальных результатов (называемых arms, которые затем, в свою очередь, выполняют код.

Это довольно примитивный взгляд на вещи, но этого достаточно, чтобы вы начали. Для получения дополнительной информации см. Язык программирования Rust, полную, прекрасно написанную техническую рукопись о Rust и о том, как ее использовать.

Как он управляет зависимостями?

С ростом таких технологий, как Node Packages, Ruby Gems и множества фреймворков, разбросанных по Интернету, возможность управлять зависимостями и легко создавать проекты имеет решающее значение для разработки в современную эпоху. К счастью, Rust поставляется со встроенным менеджером зависимостей cargo, который может помочь вам со всеми этими проблемами.

Cargo использует crates, которые являются его версией пакетов. Их можно легко импортировать, а затем включить с помощью команды extern crate. Например:

Этот простой пример показывает, как мы загружаем ящик rand и используем его для генерации случайного числа от 1 до 10. Достаточно просто, правда? Чтобы добавить ящик rand, вы должны быть в проекте, управляемом грузом. Вы можете сделать его с помощью простой команды:

cargo new [project_name] --bin

Это создает новый проект со всеми необходимыми папками и файлами для создания зависимостей. В частности, он создаст файл, который будет выглядеть примерно так:

Cargo.toml - это файл, управляющий вашими зависимостями, он создается с помощью команды cargo new. Вы можете добавить любые зависимости вашего проекта в раздел [dependencies] вместе с их номерами версии. Затем, когда вы компилируете свой проект, они (и все их зависимости) будут внесены, скомпилированы и включены. Просто как тот.

Зачем мне это изучать?

Что ж, это сложный вопрос. Если вы уже знаете один из основных языков, возможно, вам не захочется выбирать аналогичный. Однако вот мой аргумент в пользу изучения Rust:

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

Если это поможет, вы можете думать об изучении языков программирования как об инвестировании в стартапы. Конечно, иногда компания может потерпеть неудачу, но иногда вы попадете в золото. Быть первым участником языка, который становится все более популярным, - немалая честь, и это откроет двери для карьеры и возможностей, которые вы иначе упустили бы.

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

Что, по крайней мере, считает этот автор, чертовски круто.

Источники и дополнительная литература







Язык программирования Rust - Язык программирования Rust
Добро пожаловать в книгу« Язык программирования Rust
! В этой версии текста предполагается, что вы используете Rust 1.31.0 или новее… doc.rust-lang.org »