Black Hat Rust, Rust, Программирование

#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 по-прежнему остается нишевым языком и не находит широкого применения за пределами этих крупных компаний.

Google trends results for the Rust programming language
Google trends: Rust VS Go

Rust великолепен

Компилятор

Сначала его ненавидели новички, а затем полюбили, компилятор Rust славится своей строгостью. Это как всегда доступный рецензент кода, только не такой дружелюбный

Быстрый

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

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

Мой любимый — Discord, описывающий, как замена сервиса в Go на Rust не только устранила всплески задержки из-за сборщика мусора Go, но и сократила среднее время отклика с миллисекунд до микросекунд.

Другой пример — тесты веб-фреймворка TechEmpower, безусловно, наиболее исчерпывающие тесты веб-фреймворка, доступные в Интернете, где Rust сияет с 2018 года.

Мультипарадигмальность

Будучи в значительной степени вдохновленный семейством языков программирования ML, Rust можно охарактеризовать как простой в освоении, как императивные языки программирования, и выразительный, как функциональные языки программирования, абстракции которых позволяют им лучше использовать человеческую мысль для кодирования.

Таким образом, Rust довольно «низкоуровневый», но предлагает программистам высокоуровневые абстракции, и его приятно использовать.

Наиболее любимой функцией программистов, пришедших из других языков программирования, по-видимому, являются перечисления, также известные как алгебраические типы данных. Они обладают непревзойденной выразительностью и корректностью: когда мы «проверяем» перечисление, с помощью ключевого слова match, компилятор позаботится о том, чтобы мы не забыли регистр, в отличие от операторов switch в других языках программирования.

Модульный

Создатели Rust явно прислушивались к разработчикам при разработке экосистемы сопутствующих инструментов. Это особенно заметно в отношении управления зависимостями. Это так же просто с динамическими языками, такими как Node.js’ NPM, настоящий глоток свежего воздуха, когда Вам приходилось бороться с цепочками инструментов C или C++.

Явный

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

Сообщество

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

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

На этом все. Всем хорошего дня!

Black Hat Rust

Цикл статей по курсу Black Hat Rust.