#4 Black Hat Rust. Язык программирования Rust.
Здравствуйте, дорогие друзья.
Теперь у нас есть лучшее представление о том, что такое кибератаки и кто за ними стоит, давайте посмотрим, как их можно осуществить. Обычно атакующие инструменты разрабатываются на языках программирования C/C++, Python или Java, а теперь немного на Go. Но у всех этих языков есть недостатки, которые делают их далеко не оптимальными для решения поставленной задачи:
Чрезвычайно сложно писать безопасные программы на C или C++, Python может быть медленным, а из-за его слабой типизации трудно писать большие программы и Java зависит от тяжелой среды выполнения, которая может не соответствовать всем требованиям при разработке наступательных инструментов.
Если Вы зависаете онлайн на форумах, таких как HackerNews или Reddit, Вы не могли пропустить этот «новый» язык программирования под названием Rust. Он всплывает почти каждый раз, когда мы обсуждаем что-то, едва связанное с программированием.
Так называемый Rust-евангелизм Strikeforce обещает доступ в рай отважным программистам, которые вступят в их ряды. Rust открывает новую страницу в истории языков программирования, предоставляя беспрецедентные гарантии и функции, будь то для защиты или наступления. Рискну сказать, что Rust — это долгожданный универсальный язык программирования. Вот почему.
История Rust
Согласно Википедии, «Rust был первоначально разработан Грейдоном Хоаром в Mozilla Research при участии Дэйва Хермана, Брендана Эйха и других. Дизайнеры усовершенствовали язык при написании Servo layout или движка браузера, а также компилятора Rust».
С тех пор язык демонстрирует органический рост и сегодня, согласно опросам Stack Overflow, уже 5 лет подряд является самым любимым языком разработчиков программного обеспечения.
В последнее время крупные компании, такие как Amazon или Microsoft, публично заявили о своей любви к языку и создают внутренние кадровые резервы.
С учетом сказанного, сегодня Rust по-прежнему остается нишевым языком и не находит широкого применения за пределами этих крупных компаний.
Rust великолепен
Компилятор
Сначала его ненавидели новички, а затем полюбили, компилятор Rust славится своей строгостью. Это как всегда доступный рецензент кода, только не такой дружелюбный
Быстрый
Одной из самых любимых характеристик Rust является его скорость. Разработчики проводят весь день за экраном и поэтому ненавидят медленные программы, прерывающие их рабочие процессы. Таким образом, совершенно естественно, что программисты склонны отвергать медленный язык программирования, загрязняющий весь вычислительный стек и создающий болезненный пользовательский опыт.
Микро-бенчмарки для нас не представляют интереса, поскольку они чаще всего ошибочны, однако существует множество отчетов, демонстрирующих, что Rust работает невероятно быстро при использовании в реальных приложениях.
Мой любимый — Discord, описывающий, как замена сервиса в Go на Rust не только устранила всплески задержки из-за сборщика мусора Go, но и сократила среднее время отклика с миллисекунд до микросекунд.
Другой пример — тесты веб-фреймворка TechEmpower, безусловно, наиболее исчерпывающие тесты веб-фреймворка, доступные в Интернете, где Rust сияет с 2018 года.
Мультипарадигмальность
Будучи в значительной степени вдохновленный семейством языков программирования ML, Rust можно охарактеризовать как простой в освоении, как императивные языки программирования, и выразительный, как функциональные языки программирования, абстракции которых позволяют им лучше использовать человеческую мысль для кодирования.
Таким образом, Rust довольно «низкоуровневый», но предлагает программистам высокоуровневые абстракции, и его приятно использовать.
Наиболее любимой функцией программистов, пришедших из других языков программирования, по-видимому, являются перечисления, также известные как алгебраические типы данных. Они обладают непревзойденной выразительностью и корректностью: когда мы «проверяем» перечисление, с помощью ключевого слова match, компилятор позаботится о том, чтобы мы не забыли регистр, в отличие от операторов switch в других языках программирования.
1 2 3 4 5 6 7 8 9 10 11 |
pub enum Status { Queued, Running, Failed, } pub fn print_status(status: Status) { match status { Status::Queued => println!("queued"), Status::Running => println!("running"), } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ cargo build Compiling enums v0.1.0 error[E0004]: non-exhaustive patterns: `Failed` not covered --> src/lib.rs:8:11 | 1 | / pub enum Status { 2 | | Queued, 3 | | Running, 4 | | Failed, | | ------ not covered 5 | | } | |_- `Status` defined here ... 8 | match status { | ^^^^^^ pattern `Failed` not covered |= help: ensure that all possible cases are being handled, possibly by adding wildcards = note: the matched value is of type `Status` error: aborting due to previous error For more information about this error, try `rustc --explain E0004`. error: could not compile `enums` To learn more, run the command again with --verbose. |
Модульный
Создатели Rust явно прислушивались к разработчикам при разработке экосистемы сопутствующих инструментов. Это особенно заметно в отношении управления зависимостями. Это так же просто с динамическими языками, такими как Node.js’ NPM, настоящий глоток свежего воздуха, когда Вам приходилось бороться с цепочками инструментов C или C++.
Явный
Rust, безусловно, является одним из самых понятных языков. С одной стороны, он позволяет легче рассуждать о программах, а обзоры кода — быть более эффективными, поскольку скрыто меньше деталей. С другой стороны, на это часто указывают люди на форумах, рассказывая, что они никогда не видели такого уродливого языка из-за его многословия.
Сообщество
Этот раздел был бы неполным, если бы я не рассказал о сообществе. От любезной помощи на форумах до бесплатных образовательных материалов сообщество Rust известно как одно из самых (если не самое) гостеприимных, полезных и дружелюбных онлайн-сообществ.
Я полагаю, это связано с тем фактом, что, поскольку сегодня лишь немногие компании используют Rust, сообщество в основном состоит из увлеченных программистов, для которых делиться информацией о языке — скорее страсть, чем рутинная работа.
На этом все. Всем хорошего дня!